Podstawy Automatyki Laboratoria 1 |
---|
Temat: Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi. |
Imię i nazwisko |
Paweł Mierzwa |
Zadany przykład: c)
Rozwiązanie zadania 3 metodami:
Dsolve (metoda symboliczna) czas:Elapsed time is 0.755996 seconds.
Rungego-Kutty (metoda numeryczna) czas:Elapsed time is 0.151117 seconds.
Simulink
Rozpisanie na układ
y1’=y2=x’
y2’+y2+y1=0
y1’=y2=x’
y2’=-y2-y1
function xdot=funkcja(t,x)
% Układ rownan rozniczkowych
xdot=zeros(2,1);
xdot(1)=x(2);
xdot(2)=(-3*x(1)-1*x(2));
Model w simulinku
Wykresy
Rungy-Kutta
Dsolve
Simulink
Wnioski
Simulink oraz metoda numeryczna korzystają z tej samej funkcji (ode45), wic wzkresz powinny być identyczne. Trudno zauważyć gołym okiem różnice między wykresami 1 i 2 lub 1 i 3. Widoczna jest natomiast różnica w czasie obliczeń. Algorytm Rungiego-Kutty jest znacznie szybszy w działaniu od funkcji dsolve.
R-K
function xdot=funkcja(t,x)
% Układ rownan rozniczkowych
xdot=zeros(2,1);
xdot(1)=x(2);
xdot(2)=(-3*x(1)-1*x(2));
t0=0;
clc
disp('Funkcja rozwiazuje rownanie rozniczkowe zwyczajne metoda ');
disp('Rungego - Kutty i podaje jego interpretacje graficzna:');
disp(' ');disp('Postac rownania:');disp(' ');
disp(' x``+ x`+ 3•x = 0');
x01=input ('Podaj wartosc x01 = ');
x02=input ('Podaj wartosc x02 = ');
tk=input ('Podaj czas symulacji tk = ');
tic;
x0=[x01 x02];
[t,x]=ode45('funkcja',t0,tk,x0,0.001,0);
plot(t,x(:,1),'g-');
xlabel('czas [s]');ylabel('amplituda sygnalu');
title('Wykres rozwiazania rownania rozniczkowego');
grid;
toc;
dsolve
syms x y;
tic;
y = dsolve('D2x + Dx + 3*x=0' , 'x(0)=1' , 'Dx(0)=0');
pretty(y);
t=0:0.01:9.99;
w=subs(y);
plot(t,w,'r-');
xlabel('czas[s]');
ylabel('amplituda sygnalu');
title('Wykres rozwiazania rownania rozniczkowego');
grid;
toc;