Міністерство освіти і науки України
Національний університет «Львівська політехніка»
ІКТА
Курсова робота
«Слідкуюча сиcтема літакового витратоміра»
Львів - 2011
Зміст
1.Завдання
2.Теоретичні відомості
3.Зведення рівнянь
4.Лістинги програм
5.Результати
6.Графік перехідного процесу
7.Список літератури.
1.Завдання
Тема №6
Слідкуюча ситема літакого витратоміра
Схема
Рівняння ланок
Варіант 12
Параметри
12
Тм (сек)
0,1
Те (сек)
0,04
С (рад/сек)
3
Ky
1
S (рад/сек)
100
i
25
1) Звести систему алгебро-диференціальних рівнянь до системи трьох диференціальних рівнянь першого порядку, представивши її у нормальній формі та розв’язати цю систему вказаними методами. Початкові умови –θin(0)=1 радіан, решта початкових умов – нульові. Числові значення сталих параметрів , заданих в таблиці , виразити з допомогою одиниць системи СІ.
2) Побудувати графік зміни величини θout(t)
Метод Мерсона – Рунге –Кутта та Рунге-Кутта 4 порядку з автоматичним кроком
2.Теоретичні відомості
Методи з автоматичною зміною кроку
Застосовуються в тому випадку, якщо розв’язок потрібно одержати із заданою точністю. При високій точності (похибка ) автоматична зміна кроку забезпечує зменшення загального числа кроків в декілька разів (особливо при розв’язках у вигляді кривих, що сильно відрізняються крутизною).
Метод Рунге-Кутта з автоматичною зміною кроку
Після обчислення з кроком всі обчислення виконуються повторно з кроком . Після цього порівнюються результати, отримані в точці хn+1 з кроком і . Якщо модуль різниці менший , то обчислення продовжуються з кроком , в іншому випадку крок зменшують. Якщо нерівність дуже сильна, то крок збільшують.
Маємо
- значення незалежної змінної в точці
- значення функції в точці
- значення функції в точці , обчислене з кроком
- значення функції в точці , обчислене з кроком
- значення функції , обчислене з кроком
1) Якщо
обчислення повторюються з кроком і т.д., доки не виконається умова .
2) Якщо виконується ця умова, то можливі два варіанти, в залежності від значення K, де K – ознака поділу кроку.
Початкове значенняі залишається таким після першого поділу кроку на два. Надалі, якщо крок ділиться, то K приймає значення одиниці.
а) Якщо , то навіть коли виконалась умова , крок не змінюється, тобто лишається тим самим (обчислення далі проводяться з попереднім кроком).
б) Якщо і виконалась умова , тоді .
В обох випадках а) і б) результат виводиться на друк.
Метод Рунге-Кутта-Мерсона з автоматичною зміною кроку
Метод дозволяє оцінити похибку на кожному кроці інтегрування. При цьому не потрібно зберігати в пам’яті обчислення значень функцій на кроці і для оцінки похибки.
Алгоритм методу
1. Задаємо число рівнянь , похибку , початковий крок інтегрування , початкові умови .
2. За допомогою п’яти циклів з керуючою змінною обчислюємо коефіцієнти
3. Знаходимо значення
та похибку
4. Перевіряємо виконання умов
Можливі випадки:
а) Якщо перша умова не виконується, тобто , то ділимо крок на 2 та повторюємо обчислення з п.2, встановивши початкові значення .
б) Якщо виконується перша та друга умови, значення та виводяться на друк.
Якщо друга умова не виконується, крок збільшується вдвічі і тоді обчислення знову повторюється з п.2.
Треба відмітити, що похибка на кожному кроці методу Рунге-Кутта-Мерсона оцінюється приблизно. При розв’язуванні нелінійних ДР істинна похибка може відрізнятися в декілька разів від заданої .
, де .
- крок поділити на 2 і повернутися на початок.
для всіх рівнянь: виводимо на друк , а крок збільшуємо удвічі.
3.Зведення рівнянь
З рівняння редуктора маємо:
З рівняння двигуна:
Розв’яжемо відносно :
Тобто ми отримаємо три рівняння для нашої системи.
Виконаємо заміну :
θout=y1;
y=y2;
Звідси отримаємо систему трьох дифрівнянь:
3.Лістинги програм
Метод Рунге-Кутта 4 порядку
program rk_611 (Input,Output);
Uses crt;
const n=3;
type mas=array[1..n] of real;
mmas=array[1..4] of real;
var i,k,j:integer;
ep,TM,TE,KU,C,S,h,hh,x,x0,II,xk:real;
f,y,yy,z,y0,y1,y2,yy1:mas;
w,p:mmas;
ff:text;
label 4,5;
{Праві частини диференціальних рівнянь}
procedure drr(y:mas; var f:mas);
BEGIN
f[1]:=y[2];
f[2]:=(C*S*KU*(1-y[3])-y[1]-TM*y[2])/(TM*TE);
f[3]:=y[1]/II;
END;
{Підпрограма розв’язування диференціальних рівнянь системи методом Рунге-Кутта}
procedure dyf(yy,f:mas; w,p:mmas; var yy1:mas);
var xx:real;
BEGIN
xx:=x;
for j:=1 to n do
BEGIN
y[j]:=yy[j];
z[j]:=y[j];
END;
for i:=1 to 4 do
BEGIN
x:=xx+w[i]*h;
drr(yy,f);
for j:=1 to n do
BEGIN
yy[j]:=yy[j]+p[i]*h*f[j];
y[j]:=z[j]+w[i+1]*h*f[j];
END;
END;
for i:=1 to n do yy1[i]:=yy[i];
END;
procedure wk(var w,p:mmas);
BEGIN
for i:=1 to 4 do
BEGIN
w[i]:=trunc(i/2)/2;
p[i]:=(1+2*w[i]-2*trunc(i/4))/6;
END;
END;
{ Підпрограма автоматичного вибору кроку }
procedure run_kut(yy,f:mas; w,p:mmas; var yy1:mas);
var kk:integer;
label 1,2,6;
BEGIN
for i:=1 to n do y0[i]:=yy[i];
kk:=0; x0:=x; hh:=h;
dyf(yy,f,w,p,yy);
for i:=1 to n do
BEGIN
y1[i]:=yy[i]; yy[i]:=y0[i];
END;
6:x:=x0; h:=hh/2;
dyf(yy,f,w,p,yy);
for i:=1 to n do y2[i]:=yy[i];
dyf(yy,f,w,p,yy);
for i:=1 to n do if abs(yy[i]-y1[i])>ep then goto 1;
for i:=1 to n do yy1[i]:=yy[i];
goto 2;
1:hh:=h;
kk:=1; {Поділ кроку навпіл}
for i:=1 to n do
BEGIN
yy[i]:=y0[i];
y1[i]:=y2[i];
END;
goto 6;
2:h:=hh;
if kk=0 then h:=2*hh; {Збільшення кроку вдвічі}
END;
BEGIN {Основна програма}
assign(ff,'D:\RK611.txt');
rewrite(ff);
writeln(ff,' ');
writeln(ff,' Runge_Kutta_4 Automation');
{ writeln('Порядок рівняння N=3'); {read (n);}
x:=0; xk:=9;
{write(' Введіть крок H='); read(h);}h:=1;
for i:=1 to n do
BEGIN
{ write('Введіть початкове значення Y(',i,')='); read(yy[i])};
yy[1]:=0;yy[2]:=0;yy[3]:=0;
END;
ep:=1.0e-4;
TM:=0.1;TE:=0.04;C:=2;KU:=1;S:=100;II:=25;
k:=0;
wk(w,p);
5:run_kut(yy,f,w,p,yy);
k:=k+1;
if k<>100 then goto 4;
writeln(ff,' T=',x,' Yout=',yy[3]);
k:=0;
4:if x<=xk then goto 5;
repeat until keypressed;
close(ff);
END.
Метод Рунге-Кутта-Мерсона
program rkm611;
const n=3;a=0;b=9;
type vector=array[1..n] of real;
var i,kk,dd,j:integer;
ks:longint;
x,x0,St,Ct,dS,dC,h,hh,eps:real;
Tm,Te,C,S,Ky,II:real;
f,y,y0,y1,y2,R:vector;
ff:text;
procedure dy;
begin
f[1]:=y[2];
f[2]:=(C*S*Ky*(1-y[3]-y[1]-Tm*y[2]))/(Tm*Te);
f[3]:=y[1]/II;
end;
procedure rkm;
var
k0,k1,k2,k3,k4,z:vector;
begin
dy;
for i:=1 to n do
begin
k0[i]:=h*f[i];
z[i]:=y[i];
y[i]:=z[i]+k0[i]/3;
end;
x:=x+h/3;
for i:=1 to n do
begin
k1[i]:=h*f[i];
y[i]:=z[i]+k0[i]/6+k1[i]/6;
end;
dy;
for i:=1 to n do
begin
k2[i]:=h*f[i];
y[i]:=z[i]+k0[i]/8+3*k2[i]/8;
end;
x:=x+h/3;
dy;
for i:=1 to n do
begin
k3[i]:=h*f[i];
y[i]:=z[i]+k0[i]/2-3*k2[i]/2+2*k3[i];
end;
x:=x+0.5*h;
for i:=1 to n do
begin
k4[i]:=h*f[i];
y[i]:=z[i]+(k0[i]/2-3*k2[i]/2+k4[i])/6;
R[i]:=(-2*k0[i]+9*k2[i]+8*k3[i]+k4[i])/30;
end;
end;
procedure aut_step(var y,y0,y1,y2,f:vector);
label 1;
begin
for i:=1 to n do
y0[i]:=y[i];x0:=x;
1: x:=x0;
rkm;
for i:=1 to n do
if abs(R[i])>eps then
begin
h:=h/2;
for i:=1 to n do
y[i]:=y0[i];
goto 1;
end;
dd:=0;
for i:=1 to n do
if abs(R[i])<(eps/30) then dd:=dd+1;
if dd=n then
begin
h:=2*h;
dd:=0;
end;
end;
begin
assign(ff,'D:\rkm611.txt');
rewrite(ff);
writeln(ff, ' ');
writeln(ff,' Runge-Kutta-Mersona');
y[1]:=0;y[2]:=0;y[3]:=0;x:=a;h:=1;eps:=1e-2;
Tm:=0.1;Te:=0.04;C:=2;Ky:=1;S:=100;II:=25;
ks:=0;
repeat
ks:=ks+1;
aut_step(y,y0,y1,y2,f);
if ks=100 then
begin
writeln(ff, ' x=',x,' Uout=',y[3],' h=',h);
ks:=0;
end;
until x>b;
close(ff);
end.
5.Результати
метод Рунге-Кутта 4 порядку
T= 3.0517578125E-03 Yout= 1.4054918036E-05
T= 6.1035156250E-03 Yout= 1.0988221132E-04
T= 9.1552734375E-03 Yout= 3.6199369461E-04
T= 1.2207031250E-02 Yout= 8.3744880165E-04
T= 1.5258789063E-02 Yout= 1.5964607579E-03
T= 1.8310546875E-02 Yout= 2.6929489732E-03
T= 2.1362304688E-02 Yout= 4.1750425822E-03
T= 2.4414062500E-02 Yout= 6.0855396149E-03
T= 2.7465820313E-02 Yout= 8.4623258697E-03
T= 3.0517578125E-02 Yout= 1.1338757190E-02
T= 3.3569335938E-02 Yout= 1.4744008511E-02
T= 3.6621093750E-02 Yout= 1.8703392738E-02
T= 3.9672851563E-02 Yout= 2.3238652229E-02
T= 4.2724609375E-02 Yout= 2.8368225410E-02
T= 4.8278808594E-02 Yout= 3.9276804451E-02
T= 5.4382324219E-02 Yout= 5.3672814390E-02
T= 6.0485839844E-02 Yout= 7.0642821180E-02
T= 6.6589355469E-02 Yout= 9.0206813944E-02
T= 7.2692871094E-02 Yout= 1.1235503126E-01
T= 7.8796386719E-02 Yout= 1.3705186637E-01
T= 8.4899902344E-02 Yout= 1.6423921295E-01
T= 9.1003417969E-02 Yout= 1.9383935109E-01
T= 9.7106933594E-02 Yout= 2.2575745474E-01
T= 1.0321044922E-01 Yout= 2.5988378816E-01
T= 1.1535644531E-01 Yout= 3.3386576254E-01
T= 1.2756347656E-01 Yout= 4.1542978490E-01
T= 1.3977050781E-01 Yout= 5.0298400884E-01
T= 1.5881347656E-01 Yout= 6.4834699905E-01
T= 1.8322753906E-01 Yout= 8.4275523013E-01
T= 1.9787597656E-01 Yout= 9.5941680716E-01
T= 2.1008300781E-01 Yout= 1.0545141358E+00
T= 2.2229003906E-01 Yout= 1.1462856313E+00
T= 2.3449707031E-01 Yout= 1.2335033241E+00
T= 2.4670410156E-01 Yout= 1.3150353052E+00
T= 2.5891113281E-01 Yout= 1.3898601611E+00
T= 2.7111816406E-01 Yout= 1.4570792229E+00
T= 2.8332519531E-01 Yout= 1.5159265784E+00
T= 2.9553222656E-01 Yout= 1.5657768078E+00
T= 3.0773925781E-01 Yout= 1.6061504207E+00
T= 3.1994628906E-01 Yout= 1.6367170017E+00
T= 3.3215332031E-01 Yout= 1.6572960914E+00
T= 3.4436035156E-01 Yout= 1.6678558615E+00
T= 3.5656738281E-01 Yout= 1.6685096685E+00
T= 3.6877441406E-01 Yout= 1.6595105951E+00
T= 3.8098144531E-01 Yout= 1.6412441167E+00
T= 3.9318847656E-01 Yout= 1.6142190483E+00
T= 4.0539550781E-01 Yout= 1.5790569504E+00
T= 4.1760253906E-01 Yout= 1.5364801889E+00
T= 4.2980957031E-01 Yout= 1.4872988563E+00
T= 4.4274902344E-01 Yout= 1.4289414557E+00
T= 4.6716308594E-01 Yout= 1.3053429340E+00
T= 4.9157714844E-01 Yout= 1.1708932533E+00
T= 5.1574707031E-01 Yout= 1.0351382699E+00
T= 5.2795410156E-01 Yout= 9.6804423305E-01
T= 5.4016113281E-01 Yout= 9.0318807154E-01
T= 5.5236816406E-01 Yout= 8.4144528809E-01
T= 5.6457519531E-01 Yout= 7.8362331994E-01
T= 5.7678222656E-01 Yout= 7.3045170419E-01
T= 5.8898925781E-01 Yout= 6.8257362647E-01
T= 6.0119628906E-01 Yout= 6.4053893802E-01
T= 6.1340332031E-01 Yout= 6.0479870297E-01
T= 6.2561035156E-01 Yout= 5.7570131393E-01
T= 6.3781738281E-01 Yout= 5.5349019027E-01
T= 6.5002441406E-01 Yout= 5.3830305041E-01
T= 6.6223144531E-01 Yout= 5.3017272678E-01
T= 6.7443847656E-01 Yout= 5.2902947102E-01
T= 6.8664550781E-01 Yout= 5.3470467662E-01
T= 6.9885253906E-01 Yout= 5.4693592770E-01
T= 7.1105957031E-01 Yout= 5.6537326638E-01
T= 7.2326660156E-01 Yout= 5.8958655555E-01
T= 7.3547363281E-01 Yout= 6.1907380255E-01
T= 7.5012207031E-01 Yout= 6.6062007028E-01
T= 7.7453613281E-01 Yout= 7.4196877648E-01
T= 8.1188964844E-01 Yout= 8.8455356240E-01
T= 8.3630371094E-01 Yout= 9.8104613978E-01
T= 8.5717773438E-01 Yout= 1.0606019432E+00
T= 8.6938476563E-01 Yout= 1.1044904102E+00
T= 8.8159179688E-01 Yout= 1.1457102525E+00
T= 8.9379882813E-01 Yout= 1.1837380524E+00
T= 9.0600585938E-01 Yout= 1.2181102646E+00
T= 9.1821289063E-01 Yout= 1.2484283119E+00
T= 9.3041992188E-01 Yout= 1.2743626081E+00
T= 9.4262695313E-01 Yout= 1.2956554816E+00
T= 9.5483398438E-01 Yout= 1.3121229839E+00
T= 9.6704101563E-01 Yout= 1.3236555884E+00
T= 9.7924804688E-01 Yout= 1.3302177969E+00
T= 9.9145507813E-01 Yout= 1.3318466910E+00
T= 1.0036621094E+00 Yout= 1.3286494745E+00
T= 1.0158691406E+00 Yout= 1.3208000710E+00
T= 1.0280761719E+00 Yout= 1.3085348499E+00
T= 1.0402832031E+00 Yout= 1.2921475649E+00
T= 1.0635986328E+00 Yout= 1.2506846286E+00
T= 1.0880126953E+00 Yout= 1.1956289038E+00
T= 1.1280517578E+00 Yout= 1.0894103221E+00
T= 1.1551513672E+00 Yout= 1.0139752222E+00
T= 1.1795654297E+00 Yout= 9.4877572167E-01
T= 1.2039794922E+00 Yout= 8.8988580764E-01
T= 1.2185058594E+00 Yout= 8.5910378587E-01
T= 1.2307128906E+00 Yout= 8.3618359866E-01
T= 1.2429199219E+00 Yout= 8.1623167070E-01
T= 1.2551269531E+00 Yout= 7.9945694453E-01
T= 1.2673339844E+00 Yout= 7.8601703435E-01
T= 1.2795410156E+00 Yout= 7.7601731398E-01
T= 1.2917480469E+00 Yout= 7.6951078186E-01
T= 1.3039550781E+00 Yout= 7.6649868468E-01
T= 1.3161621094E+00 Yout= 7.6693187018E-01
T= 1.3365478516E+00 Yout= 7.7504660483E-01
T= 1.3609619141E+00 Yout= 7.9597878690E-01
T= 1.3853759766E+00 Yout= 8.2738210937E-01
T= 1.4112548828E+00 Yout= 8.6950387284E-01
T= 1.4600830078E+00 Yout= 9.6249863688E-01
T= 1.4849853516E+00 Yout= 1.0107900446E+00
T= 1.5093994141E+00 Yout= 1.0550370478E+00
T= 1.5338134766E+00 Yout= 1.0938528997E+00
T= 1.5582275391E+00 Yout= 1.1253211051E+00
T= 1.5826416016E+00 Yout= 1.1480417763E+00
T= 1.6070556641E+00 Yout= 1.1611839965E+00
T= 1.6314697266E+00 Yout= 1.1645031962E+00
T= 1.6558837891E+00 Yout= 1.1583243851E+00
T= 1.6802978516E+00 Yout= 1.1434939749E+00
T= 1.7047119141E+00 Yout= 1.1213045638E+00
T= 1.7413330078E+00 Yout= 1.0778850115E+00
T= 1.7901611328E+00 Yout= 1.0112239278E+00
T= 1.8157958984E+00 Yout= 9.7703481210E-01
T= 1.8402099609E+00 Yout= 9.4751964549E-01
T= 1.8646240234E+00 Yout= 9.2252111814E-01
T= 1.8890380859E+00 Yout= 9.0322028518E-01
T= 1.9134521484E+00 Yout= 8.9041353831E-01
T= 1.9378662109E+00 Yout= 8.8448755829E-01
T= 1.9622802734E+00 Yout= 8.8541879983E-01
T= 1.9866943359E+00 Yout= 8.9279625633E-01
T= 2.0111083984E+00 Yout= 9.0586499816E-01
T= 2.0504150391E+00 Yout= 9.3615337266E-01
T= 2.1124267578E+00 Yout= 9.9517662467E-01
T= 2.1461181641E+00 Yout= 1.0260949065E+00
T= 2.1705322266E+00 Yout= 1.0455395650E+00
T= 2.1949462891E+00 Yout= 1.0613870948E+00
T= 2.2193603516E+00 Yout= 1.0729271161E+00
T= 2.2437744141E+00 Yout= 1.0797305241E+00
T= 2.2681884766E+00 Yout= 1.0816591179E+00
T= 2.2926025391E+00 Yout= 1.0788582379E+00
T= 2.3175048828E+00 Yout= 1.0715512194E+00
T= 2.3663330078E+00 Yout= 1.0469144745E+00
T= 2.4337158203E+00 Yout= 1.0018946780E+00
T= 2.4825439453E+00 Yout= 9.7163972891E-01
T= 2.5093994141E+00 Yout= 9.5863895199E-01
T= 2.5338134766E+00 Yout= 9.4990588179E-01
T= 2.5582275391E+00 Yout= 9.4446853601E-01
T= 2.5826416016E+00 Yout= 9.4246295409E-01
T= 2.6202392578E+00 Yout= 9.4587362610E-01
T= 2.6690673828E+00 Yout= 9.6026938957E-01
T= 2.7447509766E+00 Yout= 9.9482234606E-01
T= 2.7935791016E+00 Yout= 1.0168279985E+00
T= 2.8424072266E+00 Yout= 1.0329355234E+00
T= 2.8912353516E+00 Yout= 1.0402388433E+00
T= 2.9400634766E+00 Yout= 1.0380431648E+00
T= 2.9888916016E+00 Yout= 1.0277914971E+00
T= 3.0758056641E+00 Yout= 9.9961511478E-01
T= 3.1246337891E+00 Yout= 9.8486101583E-01
T= 3.1734619141E+00 Yout= 9.7490065645E-01
T= 3.2222900391E+00 Yout= 9.7141456129E-01
T= 3.2711181641E+00 Yout= 9.7450354723E-01
T= 3.3521728516E+00 Yout= 9.9007237706E-01
T= 3.4312744141E+00 Yout= 1.0082795460E+00
T= 3.4801025391E+00 Yout= 1.0163156318E+00
T= 3.5289306641E+00 Yout= 1.0199845181E+00
T= 3.5777587891E+00 Yout= 1.0189315131E+00
T= 3.6744384766E+00 Yout= 1.0064618904E+00
T= 3.7716064453E+00 Yout= 9.9136049308E-01
T= 3.8204345703E+00 Yout= 9.8695409281E-01
T= 3.8707275391E+00 Yout= 9.8585255325E-01
T= 3.9761962891E+00 Yout= 9.9343731612E-01
T= 4.0924072266E+00 Yout= 1.0062430137E+00
T