Laboratorium Podstaw Automatyki
1
Laboratorium nr 1
Rozwiązywanie równań różniczkowych
z niezerowymi warunkami początkowymi
1. Cele
ć
wiczenia
•
zapoznanie si
ę
z metodami symbolicznego i numerycznego rozwi
ą
zywania równa
ń
ró
ż
niczkowych w
Matlabie,
•
wykorzystanie Simulinka do tworzenia modelu równania ró
ż
niczkowego,
•
archiwizacja otrzymanych rozwi
ą
za
ń
2. Wprowadzenie teoretyczne
2.1.
Symboliczne rozwi
ą
zywanie równa
ń
ró
ż
niczkowych – funkcja dsolve()
Rozwi
ą
zywanie
symboliczne
polega
na
obliczeniach
wykonywanych
na
wyra
ż
eniach
matematycznych, a nie na liczbach (rozwi
ą
zanie numeryczne), w wyniku czego dostajemy równie
ż
wyra
ż
enie matematyczne. Przy pomocy zmiennych symbolicznych oraz przy wykorzystaniu funkcji dsolve()
mo
ż
liwe jest rozwi
ą
zanie równania ró
ż
niczkowego dowolnego rz
ę
du.
W rozwi
ą
zywaniu symbolicznym równa
ń
ró
ż
niczkowych najwa
ż
niejsza jest zmienna D (du
ż
e D), która
okre
ś
la ró
ż
niczk
ę
pierwszego stopnia (
dt
d
D
=
), podobnie D2 oznacza ró
ż
niczk
ę
drugiego stopnia
(
2
2
2
dt
d
D
=
) itd. Funkcja dsolve() domy
ś
lnie ró
ż
niczkuje po czasie.
Za pomoc
ą
funkcji dsolve() mo
ż
liwe jest równie
ż
rozwi
ą
zywanie układu równa
ń
ró
ż
niczkowych jak
i okre
ś
lanie warunków pocz
ą
tkowych. Kolejne równania podajemy po przecinkach, a po nich warunki
pocz
ą
tkowe, równie
ż
oddzielone przecinkami:
dsolve(‘rownanie1’ , ‘rownanie2’ , … , ‘warunek 1’ , ‘warunek 2’);
Przykład 1:
Rozwi
ą
za
ć
równanie ró
ż
niczkowe
0
2
3
2
2
=
+
+
x
dt
dx
dt
x
d
przy war. pocz.
( )
0
0
=
x
,
2
)
0
(
=
dt
dx
wykorzystuj
ą
c funkcj
ę
dsolve().
Rozwi
ą
zanie: Tworzymy m-plik o nazwie rozw1.m
syms x y;
% definicja zmiennych symbolicznych ‘x’ i ‘y’
y = dsolve('D2x + 3*Dx + 2*x=0' , 'x(0)=0' , 'Dx(0)=2'); % równanie wraz z
% warunkami pocz
ą
tkowymi
pretty(y);
% wypisanie rozwi
ą
zania
t=0:0.01:9.99;
% definicja wektora czasu
w=subs(y);
% warto
ść
liczbowa ‘y’ wyliczona poprzez podstawienie
% zdefiniowanego wcze
ś
niej wektora ‘t’
plot(t,w,'r-');
% narysowanie wykresu
xlabel('czas[s]');
ylabel('amplituda sygnalu');
title('Wykres rozwiazania rownania rozniczkowego');
grid;
Rozwi
ą
zanie równania ró
ż
niczkowego w postaci wyra
ż
enia matematycznego oraz wykresu otrzymujemy
wywołuj
ą
c w oknie komend MATLABA funkcj
ę
>> rozw1
Laboratorium Podstaw Automatyki
2
2.2.
Numeryczne rozwi
ą
zywanie równa
ń
ró
ż
niczkowych – funkcja ode()
MATLAB zawiera funkcje rozwi
ą
zuj
ą
ce zagadnienie pocz
ą
tkowe dla równa
ń
ró
ż
niczkowych
zwyczajnych za pomoc
ą
np. par metod Rungego-Kutty rz
ę
du 2 i 3 (funkcja ode23) oraz rz
ę
du 4 i 5 (funkcja
ode45).
Funkcje te rozwi
ą
zuj
ą
zagadnienie pocz
ą
tkowe dla układów równa
ń
zwyczajnych postaci:
( )
0
0
)
(
,
,
x
t
x
x
t
F
dt
dx
=
=
Składnia funkcji:
[T, X] = ode23 (‘F(t, x)’, [t0 tk], x0, options)
[T, X] = ode45 (‘F(t, x)’, [t0 tk], x0, options)
Kolejne parametry wej
ś
ciowe oznaczaj
ą
:
•
pierwszym parametrem musi by
ć
ła
ń
cuch zawieraj
ą
cy nazw
ę
zdefiniowanej przez u
ż
ytkownika funkcji
zwracaj
ą
cej warto
ś
ci F(t, x),
•
t0, tk - granice przedziału czasu, w którym poszukiwane jest rozwi
ą
zanie,
•
x0 - okre
ś
la warunek pocz
ą
tkowy - wektor kolumnowy zawieraj
ą
cy warto
ść
rozwi
ą
zania układu w
chwili pocz
ą
tkowej,
•
options – dodatkowe parametry, które mo
ż
na ustawi
ć
przy pomocy instrukcji odeset:
options = odeset(‘nazwa_parametru1’,wartosc1,’nazwa_parametru2’,wartosc2,…)
Warto
ś
ci
ą
omawianych funkcji jest macierz X zawieraj
ą
ca umieszczone wierszowo wektory reprezentuj
ą
ce
warto
ś
ci rozwi
ą
zania w punktach okre
ś
lonych odpowiednimi elementami wektora kolumnowego t, który jest
jedn
ą
z warto
ś
ci funkcji ode23 i ode45.
Przykład 2:
Rozwi
ą
za
ć
równanie ró
ż
niczkowe z przykładu 1 wykorzystuj
ą
c funkcj
ę
ode45.
Rozwi
ą
zanie: Do rozwi
ą
zania zadania przy pomocy funkcji ode45 wykorzystano dwa pliki. W pierwszym z
nich (funkcja.m) zapisujemy posta
ć
równania – jako równania stanu:
function xdot=funkcja(t,x)
% Układ rownan rozniczkowych
xdot=zeros(2,1);
xdot(1)=x(2);
xdot(2)=(-2*x(1)-3*x(2));
a w drugim (rozw2.m) wprowadzamy parametry wej
ś
ciowe, wywołujemy funkcj
ę
ode45 i rysujemy wykres
rozwi
ą
zania:
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``+ 3•x`+ 2•x = 0');
x01=input ('Podaj wartosc x01 = ');
x02=input ('Podaj wartosc x02 = ');
tk=input ('Podaj czas symulacji tk = ');
czas_sym=[t0 tk];
war_pocz=[x01 x02];
[t,x]=ode45('funkcja',czas_sym,war_pocz);
Laboratorium Podstaw Automatyki
3
plot(t,x(:,1),'g-');
xlabel('czas [s]');ylabel('amplituda sygnalu');
title('Wykres rozwiazania rownania rozniczkowego');
grid;
Rozwi
ą
zanie równania ró
ż
niczkowego, w postaci wykresu, otrzymujemy wywołuj
ą
c w oknie komend
MATLABA funkcj
ę
>> rozw2
2.3.
Rozwi
ą
zywanie równa
ń
ró
ż
niczkowych przy pomocy pakietu Simulink
Przykład 3:
Rozwi
ą
za
ć
równanie ró
ż
niczkowe z przykładu 1 wykorzystuj
ą
c model zbudowany w Simulinku.
Rozwi
ą
zanie: Wprowadzaj
ą
c zmienne:
=
=
=
1
2
1
x
x
x
x
x
&
&
otrzymujemy układ równa
ń
:
−
−
=
−
−
=
=
=
1
2
2
2
1
2
3
2
3
x
x
x
x
x
x
x
x
&
&
&
&
&
na podstawie którego tworzymy poni
ż
szy model:
Ustalaj
ą
c warunki pocz
ą
tkowe na obu integratorach (Int1 i Int2) oraz dobieraj
ą
c odpowiednie parametry
symulacji, w wyniku otrzymujemy wykres rozwi
ą
zania:
0
2
4
6
8
10
0
0.1
0.2
0.3
0.4
0.5
czas [s]
Wykres rozwiazania równania rózniczkowego
Takie same
wykresy rozwi
ą
zania równania ró
ż
niczkowego mo
ż
na uzyska
ć
w punktach 2.1 i 2.2
1/s
Int2
1/s
Int1
x(t)
+
+
Sum
-3
a1
-2
a0
x
2
&
x
2
X
1
Laboratorium Podstaw Automatyki
4
Przykład 4:
Skonstruowa
ć
w Simulinku model równania ró
ż
niczkowego
0
)
0
(
)
0
(
pocz.
war.
dla
,
3
2
6
5
2
2
=
=
+
=
+
+
y
y
u
dt
du
y
dt
dy
dt
y
d
&
w postaci transmitancji operatorowej oraz w postaci równa
ń
stanu i równania wyj
ś
cia. Znale
źć
odpowied
ź
skokow
ą
układu, gdy sygnałem wej
ś
ciowym u(t) jest sygnał o amplitudzie równej jedno
ś
ci.
Rozwi
ą
zanie: Równaniu ró
ż
niczkowemu (zapisanemu jako transmitancja) odpowiada schemat blokowy
przedstawiony poni
ż
ej:
Przyjmuj
ą
c okre
ś
lone parametry symulacji otrzymujemy rozwi
ą
zanie w postaci wykresu.
Równaniu ró
ż
niczkowemu zapisanemu jako
+
=
+
−
−
=
=
2
1
2
1
2
2
1
2
3
5
6
x
x
y
u
x
x
x
x
x
&
&
odpowiada poni
ż
szy schemat blokowy:
Ustalaj
ą
c zerowe warunki pocz
ą
tkowe na integratorach oraz dobieraj
ą
c odpowiednie parametry symulacji
otrzymujemy rozwi
ą
zanie w postaci wykresu, jak poprzednio.
2.4.
Archiwizacja uzyskanych rozwi
ą
za
ń
równa
ń
ró
ż
niczkowych na dysku
Dla równania z przykładu 4 tworzymy poni
ż
szy schemat blokowy:
y
u
2
b1
3
b0
-5
a1
-6
a0
Sum1
Sum
1/s
Integrator1
1/s
Integrator
y1
u1
wynik
To Workspace
Mux
Mux1
Mux
Mux
2s+3
s +5s+6
2
G(s)
Clock
y1
u1
2s+3
s +5s+6
2
G(s)
Laboratorium Podstaw Automatyki
5
W przestrzeni roboczej Matlaba utworzona zostanie macierz o nazwie wynik, zawieraj
ą
ca trzy wektory
zmiennych: czas symulacji, wymuszenie oraz odpowied
ź
skokowa układu. Aby zapisa
ć
t
ą
macierz na dysku
nale
ż
y wykona
ć
instrukcj
ę
:
>> save wynik –ascii
Poleceniem clear czy
ś
cimy przestrze
ń
robocz
ą
a nast
ę
pnie wprowadzamy macierz wynik ponownie do
przestrzeni roboczej z dysku:
>> load wynik –ascii
Ponowne wykre
ś
lenie uzyskanego rozwi
ą
zania równania z przykładu 4 mo
ż
na uzyska
ć
po wpisaniu
nast
ę
puj
ą
cych instrukcji:
>> t = wyniki(:,1) % Wektor czasu
>> u = wyniki(:,2) % Wektor wymuszenia
>> y = wyniki(:,3) % Wektor odpowiedzi
>> plot( t, u, 'r', t, y, 'g')
>> grid
3. Przebieg
ć
wiczenia
Rozwi
ą
za
ć
równania ró
ż
niczkowe:
a)
1
)
0
(
,
0
)
0
(
pocz.
war.
dla
,
0
4
2
2
2
−
=
=
=
+
+
y
y
y
dt
dy
dt
y
d
&
b)
2
)
0
(
y
i
1
)
0
(
y
war.pocz.
dla
,
6
3
2
2
2
−
=
=
=
+
+
&
y
dt
dy
dt
y
d
c)
0
)
0
(
,
1
)
0
(
pocz.
war.
dla
,
0
3
2
2
=
=
=
+
+
y
y
y
dt
dy
dt
y
d
&
d)
0
)
0
(
,
3
)
0
(
pocz.
war.
dla
,
0
5
2
2
2
=
=
=
+
+
y
y
y
dt
dy
dt
y
d
&
e)
0
)
0
(
y
i
1
)
0
(
y
war.pocz.
dla
,
4
2
2
2
=
=
=
+
+
&
y
dt
dy
dt
y
d
f)
0
)
0
(
,
1
)
0
(
pocz.
war.
dla
,
0
13
4
2
2
=
=
=
+
+
y
y
y
dt
dy
dt
y
d
&
g)
1
)
0
(
,
0
)
0
(
pocz.
war.
dla
,
0
9
3
2
2
=
=
=
+
+
y
y
y
dt
dy
dt
y
d
&
wykorzystuj
ą
c funkcj
ę
dsolve, funkcj
ę
ode45 oraz model równania przygotowany w Simulinku. Wykre
ś
li
ć
przebieg funkcji y(t) otrzymanej w ka
ż
dym z trzech rozwi
ą
za
ń
i porówna
ć
otrzymane wyniki na jednym
wykresie.
4. Sprawozdanie z przebiegu
ć
wiczenia
Na podstawie przeprowadzonych oblicze
ń
nale
ż
y przygotowa
ć
sprawozdanie, które powinno zawiera
ć
rozwi
ą
zania wybranego równania ró
ż
niczkowego z punktu 3, wykorzystuj
ą
ce metod
ę
symboliczn
ą
,
numeryczn
ą
oraz model równania w Simulinku. Poda
ć
wnioski ko
ń
cowe.
Literatura
[1] Brzózka J.,
Ć
wiczenia z Automatyki w MATLABIE i SIMULINKU, Wydawnictwo Mikon, Warszawa 1997
[2] Tomera M., Wprowadzenie do MATLABA,
http://www.am.gdynia.pl/~tomera/teoria_ster.htm
, 2004
[3] Zalewski A., Cegieła R., MATLAB: obliczenia numeryczne i ich zastosowania, Wydawnictwo Nakom,
Pozna
ń
1996