Numer ćwiczenia |
1 |
Tytuł ćwiczenia: Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi |
---|---|---|
Data wykonania ćwiczenia: | 30.03.2012 | Nazwisko i imię: |
Data oddania sprawozdania: | 13.04.2012 |
|
Numer grupy laboratoryjnej: | 7B |
|
Na zajęciach rozwiązywaliśmy równanie różniczkowe przykładowe:
$\frac{d^{2}y}{dt^{2}} + \frac{\text{dy}}{\text{dt}} + 2y = 4$, dla warunków początkowych y(0)=1 i y’ (0)=0
3 metodami w pakiecie programowym Mathworks.
1. Pierwsza metoda polegała na użyciu w matlabie funkcji dsolve o składni:
Listing m-pliku dla tej metody:
syms x y;
y=dsolve('D2x+Dx+2*x=4' , 'x(0)=1' , 'Dx(0)=0')
pretty(y);
t=0:0.01:9.99;
w=subs(y);
plot(t,w);
xlabel('czas[s]');
ylabel('amplituda sygnalu');
title('Wykres rozwiazania rownania rozniczkowego');
grid on;
2. Druga metoda to wykorzystanie metody Rugnego-Kutty 4 i 5 rzędu. Polegała na użyciu funkcji ode45() w Matlabie.
Funkcja ode45() jako pierwszy parametr przyjmuje funkcje w postaci:
$$\frac{\text{dy}}{\text{dt}} = F(\ x\ ,\ t)$$
Nasze równanie różniczkowe jest rzędu drugiego, więc musimy zapisać je w postaci układu
równań: x1'=x2 i x2'=-2 x1-x2 dla podstawienia: x= x1 i x'= x2
Listing m-pliku dla tej metody:
function rozw2;
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`+ 2•x = 4');
x01=input('Podaj wartosc x01=');
x02=input('Podaj wartosc x02=');
tk=input('Podaj wartosc tk=');
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;
3. Trzecia metoda polegała na wykorzystaniu modelu utworzonego w programie Simulink.
Użyliśmy do tego celu bloków:
– całkuje wejście w obecnym kroku, - mnoży wejście o podaną wartość stałą,
- wyświetla wejście bloku w postaci wykresu;
Model ułożony w Simulink'u:
Na wykresie poniżej przedstawione są wszystkie sposoby rozwiązania, zobrazowane w postaci 3 wykresów.
Wnioski:
Najprostszą w obsłudze metodą okazała się metoda symboliczna z użyciem dsolve, gdyż nie potrzeba było rozbijać równania różniczkowego drugiego stopnia na układ równań pierwszego stopnia. Ale długość obliczeniowa dla tej metody była większa, gdyż Matlab rozwiązywał równanie powołując się na zasady analizy matematycznej. Simulink wykorzystuje funkcję ode45 używaną również w przypadku metody numerycznej więc wykresy i powinny być, i są identyczne. Program w tych przypadkach oblicza metodą Rugnego- Kutty wartości dla danego kroku jeden po drugim i wynik obarczony jest pewnym bardzo małym błędem. Dyskretyzacja wyników dla tych metod polega na otrzymaniu gotowych punktów, które możemy przedstawić na wykresie za pomocą funkcji plot(). Również czas obliczeniowy jest krótszy niż w przypadku metody symbolicznej.