Difference between revisions of "Махало"
Line 124: | Line 124: | ||
=== Числено решаване с Matlab === | === Числено решаване с Matlab === | ||
− | ... | + | |
− | .. | + | Решението се състои в две части. |
+ | Първо се създава файл - функция описваща уравнението | ||
+ | Второ изпълнява се функцията ode45(); | ||
+ | |||
+ | ''' Функция mah1 ''' | ||
+ | <code><pre> | ||
+ | function ds = mah1(t, yy, l , g) | ||
+ | % t е променливата, по която диференцираме, в случая не се ползва | ||
+ | % защото не е част от уравнението | ||
+ | % y функцията, която търсим | ||
+ | % dy e нейната първа производна | ||
+ | % d^2y/dt^2 + g/l*sin(y) = 0 - matematichesko mahalo | ||
+ | |||
+ | y = yy(1); % Тези два реда са за онагледяване, | ||
+ | dy = yy(2); % стойностите за уу може дирктно да се | ||
+ | % запишат в долните изрази. | ||
+ | |||
+ | ds(1,1) = dy; % <=> ( y(t) )' = dy(t) | ||
+ | ds(2,1) = -g/l*sin(y); % <=> ( dy(t) )' = -g/l*sin(y) | ||
+ | % ds са конкретни числови стойности | ||
+ | end | ||
+ | </pre></code> | ||
+ | |||
+ | ''' Скрипт за извикване на ode45() | ||
+ | <code><pre> | ||
+ | g=9.8; | ||
+ | l=5; | ||
+ | x0 = [17*pi/180; 0]; % начални условия | ||
+ | t = 0:0.01:20; | ||
+ | options = [] ; % за сега не ни интересуват | ||
+ | [t,x] = ode45(@mah1,t,x0,options,l,g); | ||
+ | |||
+ | plot(t, x(:,1)); % make the plot | ||
+ | title('Reshenie mat. mahalo s ode45()'); | ||
+ | </pre></code> | ||
Revision as of 11:27, 4 July 2011
Цел: Създаване на връзки между диференциране и диференциални уравнения.
Постановка: Математическо махало. (Съпротивлението на въздуха се пренебрегва). Да се намери зависимостта на махалото спрямо времето, т.е. функцията на движение на махалато.
Анализ: Във всеки момент махалото се движи с различна скорост и ускорение, зависещи от ъгъла на отклонение на махалото.
Contents
Производни, разстояние, скорост и ускорение.
Движението на махалото се извършва по окръжност с радиус равен на дължината на нишката, на която е окачено махалото. От тук, следва че:
За да изразим скоростта ползваме първата производна (изменението на разстоянието за единица време). Изменя се само ъгълът, а дължината на нишката е константа и се запазва:
По да изразим ускорението, използваме втората производна
(1)
Сили действащи на махалото
Под внимание се взема само силата действаща по посока на движението. Допирателната по окръжността на движение (тангенциалната сила ( танго -> допир)). Перпендикулярната сила (нормалната ) се неутрализира.
За махалото (2)
Диференциално уравнение на махало
От (1) и (2)
Решаване на диференциалното уравнение
Има два подхода при решаване на диференциални уравнения, аналитичен и числен. При конкретното уравнение са възможни и двата подхода, но аналитичният метод може да се използва за . В този случай диференциалното уравнение ще се преобразува в линейно от втори ред.
Аналитично решение
Полагаме , от тук - хомогенно диференциално уравнение от 2-ри ред
Уравнението е от вида , затова лесно могат да се намерят решения във вида , където за r се решава уравнението , a именно:
от тук =>
За получаване на конкретно решение ще зададем начални условия. Примерно в началното положение , махалото е отклонено на градуса и пуснато свободно, т.е. с нулева начална скорост.
=>
За решение на задача при малки ъгли се получава
e ъгловата скорост с която ще се движи махалото.
От тук
Визуализация на решението с Matlab
Имаме следните начални условия:
l = 5; % m
g = 9.8; % m/s^2
theta_0 = 17; % degree
theta_0r = 17*pi/180 % ъгъл в радиани
omega = sqrt(g/l); % ъгловата скорост
t = 0:0.1:20; % интуитивно си избираме подходящ интервал за изследване
theta = theta_0r*cos(omega.*t); % Фундаментална формула, с който започва анализа на трептенията
% За тези с по-малко въображение и тези, които искат да представят резултатите на други
plot(t,theta);
xlabel('t [s]'), ylabel('theta [rad]');
axis([ 0 20 -0.4 0.4]);
title('Matematichesko mahalo');
% Само трябва да добавим съпротивление на въздуха; вятър;
% маса на нишката, която държи махалото; трептене на опoрната точка и да решим за всякакви начални условия.
Аналитично решение с Matlab
Общо решение:
syms g l;
y = dsolve('D2y = -(g/l)*y', 't')
%решение
% yC15*exp((t*(-g*l)^(1/2))/l) + C16/exp((t*(-g*l)^(1/2))/l)
Частно решение с начални условия
% l=5, g=9.8, 0.3 = 17*pi*180
y = dsolve('D2y = -(9.8/5)*y','Dy(0)=0, y(0) =0.3','t')
%решение
% y = (3*cos((7*t)/5))/10
Числено решаване с Matlab
Решението се състои в две части. Първо се създава файл - функция описваща уравнението Второ изпълнява се функцията ode45();
Функция mah1
function ds = mah1(t, yy, l , g)
% t е променливата, по която диференцираме, в случая не се ползва
% защото не е част от уравнението
% y функцията, която търсим
% dy e нейната първа производна
% d^2y/dt^2 + g/l*sin(y) = 0 - matematichesko mahalo
y = yy(1); % Тези два реда са за онагледяване,
dy = yy(2); % стойностите за уу може дирктно да се
% запишат в долните изрази.
ds(1,1) = dy; % <=> ( y(t) )' = dy(t)
ds(2,1) = -g/l*sin(y); % <=> ( dy(t) )' = -g/l*sin(y)
% ds са конкретни числови стойности
end
Скрипт за извикване на ode45()
g=9.8;
l=5;
x0 = [17*pi/180; 0]; % начални условия
t = 0:0.01:20;
options = [] ; % за сега не ни интересуват
[t,x] = ode45(@mah1,t,x0,options,l,g);
plot(t, x(:,1)); % make the plot
title('Reshenie mat. mahalo s ode45()');