Professional Documents
Culture Documents
Q q L q L dt d: Приложение на MATLAB в инженерните изследвания - част II
Q q L q L dt d: Приложение на MATLAB в инженерните изследвания - част II
d ⎛ ∂L ⎞ ∂L
⎜⎜ ⎟⎟ − = Q1неп
dt ⎝ ∂q&1 ⎠ ∂q1
d ⎛ ∂L ⎞ ∂L
⎜⎜ ⎟⎟ − = Q2 неп
dt ⎝ ∂q& 2 ⎠ ∂q 2
където:
L = L(t , q1 , q2 , q&1 , q& 2 ) - Лагранжиан на системата;
Q1неп , Q2 неп - обобщени непотенциални сили;
q1 , q2 - обобщени координати;
q&1 , q& 2 - обобщени скорости.
Следва пълния текст на програмата LAGRE2
function lagre2
% *******************************************************************
% П р о г р а м а LAGRE2
% *******************************************************************
%
% ПРЕДНАЗНАЧЕНИЕ:
% Извежда диференциалните уравнения на движение на механична сис-
% тема с две степени на свобода посредством уравненията на Лагранж
% d/dt(dL/dqt1) - dL/dq1 = QN1(t,q1,q2,qt1,qt2);
% d/dt(dL/dqt2) - dL/dq2 = QN2(t,q1,q2,qt1,qt2);
% Решава уравненията числено и чертае графиките на координатите,
% скоростите и фазовите траектории.
%
% ВХОДНИ ДАННИ:
% L - израз на Лагранжиана L = L(t, q1, q2, qt1, qt2);
% QN1 - обобщена непотенциална сила QN1 = QN1(t,q1,q2,qt1,qt2);
% QN2 - обобщена непотенциална сила QN2 = QN2(t,q1,q2,qt1,qt2);
% qj0 - вектор с началните стойности на координатите;
% qtj0 - вектор с началните стойности на скоростите;
% Tend - горна граница на интегриране ;
% eps - желана точност на пресмятанията ;
% np - брой на параметрите .
% P{1}, P{2}, ..., P{np} - имена на параметрите (масив от клетки);
- 140 -
Глава 6. Динамика на механични системи
% ЗАБЕЛЕЖКИ:
% 1. Координатите се обозначават със символите 'q1', 'q2'
% а скоростите - с 'qt1', 'qt2';
% 2. Физическите имена на параметрите се присвояват на клетките на
% масива P, например: P{1}='m', P{2}='c',...;
% 3. Всички данни могат да се въвеждат от файл или в диалогов режим.
%
% ПРИМЕРЕН ФАЙЛ С ДАННИ:
% % Задача: Елиптично махало
% L = ['1/2*(m1+m2)*qt1^2 + 1/2*m2*l^2*qt2^2 + ',...
% 'm2*l*qt1*qt2*cos(q2) - 1/2*c*q1^2 + ',...
% '9.81*m2*l*cos(q2)']; % Лагранжиан
% QN{1} = '-alfa*qt1'; % Обобщени непотенциални
% QN{2} = '-k*qt2'; % сили
% qj0 = [0.02, 0]; % Начални координати
% qtj0 = [0.1, 0]; % Начални скорости
% Tend = 20; % Горна граница на интегриране
% eps = 1.e-8; % Точност на пресмятанията
% np = 6; % Брой на параметрите
% P{1} = 'm1'; % Присвояване имена на
% P{2} = 'm2'; % физическите параметри
% P{3} = 'l';
% P{4} = 'c';
% P{5} = 'alfa';
% P{6} = 'k';
% ---------------------------------------------------------
% ВЪВЕЖДАНЕ ДАННИТЕ НА ЗАДАЧАТА
% =========================================================
clear
disp(' ');
disp(' Как ще въвеждате данните ? ');
disp(' 1. От файл с данни; ');
disp(' 2. В диалогов режим. ');
ans = input(' Номера на вашия избор: ' );
flag = 0;
if ans == 1
while 1
disp(' ');
indat = input(' Въведете името на файла с данни:', 's');
if exist([cd,'\',indat]) % Търси само в текущата директория
eval(indat);
flag = 1; break % Успешен опит
else % Неуспешен опит
disp(' ');
disp([' Файлът ',indat,' не съществува!'])
disp(' Вие трябва:')
disp(' 1. Да въведете друго име на файл, или')
disp(' 2. Да въвеждате данните в диалогов режим !')
ans2 = input(' Вашия избор моля: ');
if ans2 == 2, break , end
end
end
end
- 141 -
Приложение на MATLAB в инженерните изследвания – част II
if flag == 0
% Въвеждане на данните в диалогов режим
L = input(' Изразът на Лагранжиана L : ','s' );
QN1 = input(' Обобщена непотенциална сила QN1 : ','s' );
QN2 = input(' Обобщена непотенциална сила QN2 : ','s' );
qj0 = input(' Начални стойности на координатите [q10, q20]: ' );
qtj0 = input(' Начални стойности на скоростите [qt10, qt20] : ');
Tend = input(' Горна граница на интегриране Tend : ' );
eps = input(' Желана точност на пресмятанията eps : ' );
np = input(' Брой на параметрите np : ' );
% Присвояване имена на параметрите
if np > 0
disp(' ');
disp(' Въведете имената на параметрите:')
for i = 1:np
ii = num2str(i);
P{i} = input([' Име на параметъра P',ii,': '],'s');
end
end
end
% ---------------------------------------------------------
% ИЗВЕЖДАНЕ НА ДИФЕРЕНЦИАЛНИТЕ УРАВНЕНИЯ
% =========================================================
% ---------------------------------------------------------
% ЧИСЛЕНО РЕШЕНИЕ
% =========================================================
- 142 -
Глава 6. Динамика на механични системи
- 143 -
Приложение на MATLAB в инженерните изследвания – част II
% ---------------------------------------------------------
% ИНТЕГРИРАНЕ И ВИЗУАЛИЗАЦИЯ НА РЕЗУЛТАТИТЕ
% ---------------------------------------------------------
flag2 = 0;
% Първоначално въвеждане стойностите на параметрите и генериране
% на стринга 'P{1}, P{2}, ..., P{np}', който трябва да се подаде
% на файл-функцията като списък от действителни аргументи
if np > 0
PP = P; % Съхраняване физичните имена на параметрите в PP
parameters = ' ';
disp(' ');
disp(' Въвеждане числените стойности на параметрите: ')
for i = 1:np
i = num2str(i);
eval(['P{',i,'}=input(['' '',P{',i,'},'' = '']);']);
parameters = [parameters,',P{',i,'}'];
end
else
parameters = [];
end
while 1
if flag2 == 1
disp(' ');
eps = input(' Точност на пресмятанията eps: ' );
Tend = input(' Горна граница на интегриране Tend: ');
qj0 = input(' Начални координати [q10,q20]: ' );
qtj0 = input(' Начални скорости [qt10,qt20]: ' );
if np > 0
P = PP; % Възстановяване имената на параметрите !
disp(' ');
disp(' Въвеждане числените стойности на параметрите: ')
for i = 1:np
i = num2str(i);
eval(['P{',i,'}=input(['' '',P{',i,'},'' = '']);']);
end
end
end
y0 = [qj0 qtj0]; % начални условия
options = odeset('AbsTol',eps,'RelTol',100*eps);
% Избор на подходящ Solver
disp(' ');
disp(' Изберете подходящия Solver: ');
disp(' ------------------------------- ');
disp(' A. Нетвърди диференциални уравнения ');
disp(' 1. ode45 - средна точност; ');
disp(' 2. ode23 - ниска точност; ');
disp(' 3. ode113 - от ниска до висока. ');
disp(' ');
disp(' B. Твърди диференциални уравнения ');
disp(' 1. ode15s - от ниска до висока; ');
disp(' 2. ode23s - ниска точност; ');
disp(' 3. ode23t - средна точност; ');
disp(' 4. ode23tb - ниска точност. ');
disp(' ');
solver = input(' Името на избрания Solver: ','s');
- 144 -
Глава 6. Динамика на механични системи
Пример 6.7
Да се изследва движението на т.н. елиптично махало (фиг. 6.32),
състоящо се от плъзгач 1 с маса m1 и топче 2 с маса m2 , свързано
шарнирно към плъзгача с помощта на безтегловен прът с дължина l .
Към плъзгача, движещ се праволинейно по хоризонтална идеално
гладка равнина, е свързана пружина с константа c и линеен демпфер с
коефициент на съпротивление α. Между пръта и плъзгача е монтиран
демпфер с коефициент на съпротивление k , създаващ съпротивителен
момент M R = kϕ& .
Решение:
Системата има две степени на
свобода. За обобщени коор-
динати избираме премества-
нето x на плъзгача, отчитано
от положението, в което пружи-
ната е недеформирана, и ъгло-
вото отклонение ϕ на пръта от
долното му вертикално поло-
жение.
1 1
EК = m1 x& 2 + m2 va2 =
2 2
1 1
= m1 x& 2 + m2 ( x& 2 + l 2ϕ& 2 + 2lx&ϕ& cos ϕ )
2 2
Определяме потенциалната енергия :
1 1
E П = c x 2 − m2 g h = c x 2 − m2 g l cos ϕ
2 2
Накрая получаваме израза за Лагранжиана :
1 1 1
L = ( m1 + m2 ) x& 2 + m2l 2ϕ& 2 + m2lx&ϕ& cos ϕ − cx 2 + m2 gl cos ϕ
2 2 2
- 146 -
Глава 6. Динамика на механични системи
Q1неп = − R = −α x&
Q2неп = − M R = − kϕ&
Приготвяме файла с входните данни, показан по-долу:
% -------------------------------------------------
% Файл с данни DMAH2
% Елиптично махало
% -------------------------------------------------
L = ['1/2*(m1+m2)*qt1^2 + 1/2*m2*l^2*qt2^2 + ',...
'm2*l*qt1*qt2*cos(q2) - 1/2*c*q1^2 + ',...
'9.81*m2*l*cos(q2)']; % Лагранжиан
QN1 = '-alfa*qt1'; % Обобщени непотенциални
QN2 = '-k*qt2'; % сили
qj0 = [0.02, 0]; % Начални координати
qtj0 = [0.1, 0]; % Начални скорости
Tend = 2; % Горна граница на интегриране
eps = 1e-10; % Желана точност
np = 6; % Брой на параметрите
P{1} = 'm1'; % Маса на плъзгача
P{2} = 'm2'; % Маса на пръта
P{3} = 'l'; % Дължина на пръта
P{4} = 'c'; % Пружинна константа
P{5} = 'alfa'; % Коефициент на демпфиране на плъзгача
P{6} = 'k'; % Коефициент на демпфиране на пръта
Част от резултатите от изпълнението на програмата, за стойности
на параметрите m1 = 1 , m2 = 1 , l = 0.4 , c = 200 , α = 0.5 и k = 0.6 , са
представени на фиг. 6.33 – 6.36.
0.02 0.1
0.015 0.05
0
0.01
qt1
-0.05
q1
0.005
-0.1
0
-0.15
-0.005
-0.2
-0.01
- 147 -
Приложение на MATLAB в инженерните изследвания – част II
0.06 0.4
0.04 0.2
qt2
q2
0
0.02
-0.2
0
-0.4
-0.02
-0.6
0 0.5 1 1.5 2 -0.02 0 0.02 0.04 0.06 0.08
t q2
d ⎜⎛ ∂L ⎞ ∂L
⎟− неп
= Q , j = 1, 2, 3, ..., s
dt ⎜⎝ ∂q& j ⎟ ∂q j
⎠ j
- 148 -