niczkowe..

Transkrypt

niczkowe..
Numeryczne metody obliczeń technicznych
Wykład X
Rozwiązywanie zagadnień początkowych
dla równań różniczkowych zwyczajnych
• Postawienie zadania i podstawowe idee jego rozwiązania
• Metody samostartujące (Eulera, Rungego-Kutty)
• Metody niesamostartujące (Adamsa-Bashforta-Moultona, Geara)
• Predykcja-korekcja, kontrola dokładności, adaptacja
• Symulacja systemów dynamicznych w Matlabie i Simulinku
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Równania różniczkowe zwyczajne w technice
Równania różniczkowe zwyczajne są jednym ze sposobów opisu zmienności systemów. W
naturalny sposób powstają z zastosowania praw fizyki do modelowania zjawisk dynamicznych
zachodzących w systemach. W takim ujęciu rozwiązanie polega na symulacji czasowej odpowiedzi
systemu dynamicznego.
Przykłady:
• prawa Kirchoffa dla układu zmiennoprądowego RLC,
• opis dynamiki termicznej czujnika temperatury z obudową,
• Opis elektromechaniczny silnika prądu stałego,
• dynamika systemów nietechnicznych – modele zachowań drapieżcy-ofiary, reakcja
psychologiczna na pobudzenie – równanie różniczkowe z nieliniowościami
• układ Sample&Hold, klucz analogowy – równanie różniczkowe z parametrami zmiennymi z
czasem.
Równania różniczkowe wyższego stopnia możemy sprowadzić do problemu wielowymiarowego
pierwszego stopnia metodą podstawienia zmiennych uzyskując układ:
dx ( t )
= f ( x (t ) , u (t ))
x ( t0 ) = x 0
y (t ) = g ( x (t ) , u (t ))
dt
Przypadek liniowy wielu wejść i wielu wyjść (MIMO) prowadzi do powszechnie znanego opisu w
postaci macierzowych równań stanu.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Podstawowe idee rozwiązań problemu
Informacja dostępna w każdym kroku:
• bieżąca wartość stanu (bieżący punkt),
• wartość pochodnej stanu w bieżącym punkcie,
Ewentualnie do wykorzystania w metodach wielokrokowych:
• poprzednie wartości stanu,
• poprzednie wartości pochodnej stanu
Na tej podstawie należy wyznaczyć wartość stanu w następnym punkcie.
Przykład Inercyjne wytracanie energii początkowej (elektrycznej, cieplnej, mechanicznej)
Równanie różniczkowe i warunek początkowy opisujące taki proces ma postać:
dE
1
= − E E ( t0 ) = E0
dt
T
Tempo utraty energii jest więc proporcjonalne do poziomu
tej energii, co determinuje trajektorie energii z dowolnego
warunku początkowego. Na rysunku przykład pola czasenergia z tendencją zmian (strzałki) i trajektorią dla E0=0.4.
0.5
0.4
0.3
0.2
0.1
0
-0.1
T=0.3; t=0:0.05:1; E=-0.5:0.05:.5;
plot(t,0.4*exp(-t/T),'r'), hold on;
[tt,EE]=meshgrid(t,E); sc=30*sqrt(1+1/T^2*EE.^2);
quiver(tt,EE,ones(size(tt))./sc,-1/T*EE./sc,0);
-0.2
-0.3
-0.4
-0.5
Katedra Metrologii AGH
0
0.2
0.4
0.6
0.8
1
Kraków 2005
Numeryczne metody obliczeń technicznych
Najprostszy algorytm Eulera (o znaczeniu bardziej dydaktycznym niż praktycznym) wykorzystuje
tylko informację dostępną w bieżącym punkcie (np. w punkcie startowym danym przez warunek
początkowy jak na rysunkach).
x
Wynika stąd algorytm Eulera (ekstrapolacyjny, predykcyjny):
xk +1 = xk + ∆t ⋅ f ( xk , tk )
Jego odmianą jest algorytm Eulera w postaci uwikłanej
(interpolacyjny, korekcyjny):
xk +1 = xk + ∆t ⋅ f ( xk +1 , tk +1 )
Wzory te można też wyprowadzić z rozwinięcia x ( t ) wokół punktu
t = tk w szereg Taylora (co można dalej uogólnić dla wyższego rzędu).
f(x0,t0) ???
x0
x
x0
t0
f(x0,t0)
t0
t0+∆t
t
???
t0+∆t
t
Wadą algorytmu Eulera jest kumulacja błędów w kolejnych krokach i konieczność stosowania
małych kroków symulacji ∆t z powodu zgrubnego oszacowania kierunku z pierwszej pochodnej.
Dla naszego prostego przykładu z inercyjną utratą energii możemy zapisać wzór iteracyjny:
T − ∆t
T
interpolacja: Ek +1 = Ek
ekstrapolacja: Ek +1 = Ek
T + ∆t
T
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Grupa algorytmów Rungego-Kutty wykorzystuje dodatkową informację w pośrednich punktach
próbnych. Przybliżenie rozwiązania jest uśrednieniem wartości wynikających ze wszystkich
punktów próbnych.
Zależności zostały opracowane na zasadzie najlepszego przybliżenia schematu wynikającego z
rozwinięcia Taylora odpowiedniego rzędu (ale bez użycia pochodnych) – patrz np. Mathews
„Numerical Methods …”, Buchanan “Numerical Methods and Analysis”.
Ilość punktów próbnych decyduje o rzędzie metody. Przykładowo metoda RK rzędu czwartego ma
1
postać: xk +1 = xk + ( d1 + 2d 2 + 2d3 + d 4 )
x
6
gdzie:
d1 = ∆t ⋅ f ( xk , tk )
x
d 2 = ∆t ⋅ f ( xk + d1 2, tk + ∆t 2 )
d3 = ∆t ⋅ f ( xk + d 2 2, tk + ∆t 2 )
d 4 = ∆t ⋅ f ( xk + d3 , tk + ∆t )
k
tk
tk+∆t
t
Algorytmy z tej grupy są najczęściej wykorzystywane w symulacjach. Tak jak metoda Eulera są to
metody samostartujące ponieważ nie wykorzystują informacji z historii trajektorii stanu, w
przeciwieństwie do dalej opisanych.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Dopuszczając wykorzystanie informacji dostępnej w poprzednio wyznaczonych punktach
trajektorii, tzn. informacji o stanie i informacji o pochodnej, możemy zdefiniować całą rodzinę
algorytmów o ogólnej postaci:
x
I
J
i =1
j =0
xk +1 = ∑ ai xk +1−i + ∆t ∑ b j f ( xk +1− j , tk +1− j )
xk-3
???
tk-3
tk-2
tk-1
tk
t
Dobór współczynników wynika z aproksymacji wielomianowej trajektorii stanu. Tak więc metoda
będzie dawała dokładne wyniki gdy trajektorię dokładnie opisuje wielomian zmiennej czasowej.
Będą to algorytmy niesamostartujące, ponieważ potrzebują do działania historii trajektorii dłuższej
niż ostatnio wyznaczony punkt.
Wybierając rodzaj wykorzystywanej informacji (stan czy pochodne) i używane punkty (z
bieżącym lub bez) uzyskujemy algorytmy predykcyjne (ekstrapolacyjne) Adamsa-Bashfortha,
korekcyjne (interpolacyjne) Adamsa-Moultona, predykcyjny Geara.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Pierwsza grupa, tj. metody Adamsa-Bashfortha mają charakter ekstrapolacyjny, tzn.
współczynnik b0=0 (nie dają równania uwikłanego).
Przykładowo, metoda Adamsa-Bashfortha rzędu trzeciego ma wzór:
∆t
xk +1 = xk + ( 23 f k − 16 f k −1 + 5 f k − 2 )
12
Metody Adamsa-Moultona to metody interpolacyjne, wykorzystujące informację o pochodnej w
szacowanym punkcie stanu, wymagają więc rozwiązania równania uwikłanego.
Przykładowo, metoda Adamsa-Moultona rzędu trzeciego ma wzór:
∆t
xk +1 = xk + ( 5 f k +1 + 8 f k − f k −1 )
12
Do wystartowania tych metod kilka pierwszych wartości stanu wyznacza się metodą
samostartującą (np. Euler albo RK).
Szczególnie efektywna i stabilna dla rozwiązywania układów sztywnych (źle uwarunkowane
równania stanu) okazała się metoda Geara. Jest to algorytm uwikłany, który korzysta tylko z
poprzednich wartości stanu i z wartości pochodnej stanu w szacowanym punkcie.
Przykładowo metoda Geara rzędu czwartego ma wzór:
1
xk +1 = ( 48 xk + 36 xk −1 + 16 xk − 2 + 3 xk −3 + 12∆t ⋅ f k +1 )
25
Oczywiście jest to również metoda niesamostartująca.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Algorytmy predykcyjno-korekcyjne
Algorytmy korekcyjne (interpolacyjne, z zależnością uwikłaną) dają się czasami dla konkretnych
symulowanych systemów przekształcić do postaci jawnej, jak w przykładzie z rozpraszaniem
energii. Nie jest to jednak metoda ogólna. Numeryczne rozwiązanie problemu uwikłanego można
uzyskać metodami poszukiwania zera funkcji nieliniowej np. iteracją Newtona. Inne rozwiązanie
to iteracja prosta wg zależności xk( i++11) = F ( xk( i+)1 , tk +1 ) . Iteracja jednak kosztuje dużo czasu.
Efektywne czasowo jest stosowanie par algorytmów predykcyjno-korekcyjnych. Algorytm
predykcyjny oszacowuje następny punkt trajektorii, a algorytm korekcyjny dokonuje poprawki z
wykorzystaniem cennej (bo najnowszej) informacji o pochodnej w oszacowanym punkcie.
Często stosowana para to Adams-Bashforth + Adams-Moulton czwartego rzędu.
Kontrola dokładności i algorytmy adaptacyjne
Wszystkie wymienione algorytmy mają określone własności redukcji błędu ze zmianą kroku
symulacji (co nie było podawane a jest w każdej książce nt. obliczeń numerycznych). Korzystając
z tej informacji można poprzez porównanie wyników metody dla kroku bieżącego i dwukrotnie
mniejszego oszacować bieżącą dokładność (dokładnie tak samo jak w algorytmach całkowania).
Porównanie może równie dobrze dotyczyć wyników metod przy zmienianym rzędzie (jak w
algorytmie adaptacyjnym Runge-Kutta-Fehlberg RK45). Celem kontroli dokładności jest
adaptacyjny, w zależności od lokalnej dynamiki trajektorii, dobór długość kroku symulacji.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Symulacja systemów dynamicznych w Matlabie i Simulinku
W Matlabie symulacje można prowadzić przy opisie transmitancyjnym lub w postaci liniowych
równań stanu funkcjami wyznaczającymi odpowiedź na standardowe wymuszenie skokowe (step) i
impulsowe (impulse). Obydwie opierają swoje działanie na transformacji modelu do postaci
dyskretnej i iteracyjne wyznaczanie odpowiedzi układu dyskretnego. Dobór kroku czasowego i
zakresu czasu symulacji jest dokonywany przez analizę części rzeczywistych wartości własnych
macierzy dynamiki A. Podobnie działa funkcja wyznaczania odpowiedzi na zadane wejście lsim.
W przypadku opisu systemu nieliniowego można wykorzystać funkcje Matlaba odeset, ode23,
ode45 z generowaniem wejścia wewnątrz funkcji.
W przypadku układów złożonych, które trudno opisać jedną transmitancją/równaniem stanu trzeba
skorzystać ze środowiska dedykowanego – Simulinka.
Simulink oferuje do symulacji metody stało i zmiennokrokowe:
• Eulera
• Rungego-Kutty
• Adamsa-Bashfortha-Moultona
• NDF (podobna do metody Geara, dla układów sztywnych)
Symulację można uruchamiać w środowisku Simulinka lub „offline” z Matlaba z użyciem funkcji
simset (określenie metody, dokładności, itp.) i funkcji sim (symulacja). Modele symulacyjne
można budować z modeli bibliotecznych (bloczków) lub programowo w postaci s-funkcji.
Katedra Metrologii AGH
Kraków 2005
Numeryczne metody obliczeń technicznych
Przykład budowy s-funkcji – model układu Sample&Hold
Wejściowy sygnał Sample/Hold steruje procesem próbkowania i podtrzymania przez zmianę
rezystancji klucza Rk :
Rkz – rezystancja klucza zamkniętego
Rko – rezystancja klucza otwartego
Równanie różniczkowe opisujące sygnał wyjściowy ma postać:
1
′ = ( −αU wy + RmU we )
U wy
β
Współczynniki równania różniczkowego są zależne od sygnału sterującego, więc jest to model o
parametrach zmiennych z czasem.
Jeśli Sample/Hold = 0 (próbkowanie) to
α = Rs + Rkz + Rm β = ( Rs + Rkz ) RmCm
w przeciwnym razie (podtrzymanie)
Katedra Metrologii AGH
α = Rs + Rko + Rm
β = ( Rs + Rko ) RmCm
Kraków 2005
Numeryczne metody obliczeń technicznych
Implementacja modelu w postaci s-funkcji (stary format)
function [sys, x0] = sandhold(t,x,u,flag,Rko,Rkz,Cm,Rm,Rs)
if abs(flag) == 1 % Zwraca wartosc pochodnych ciaglych zmiennych stanu
SH = u(2);
U = u(1);
if SH == 0
a=Rs+Rkz+Rm;
b=(Rs+Rkz)*Rm*Cm;
else
a=Rs+Rko+Rm;
b=(Rs+Rko)*Rm*Cm;
end
sys = (Rm*U-a*x)/b;
end
elseif flag == 3 % Zwraca wartosc sygnalu wyjsciowego
sys = x;
elseif flag == 0 % Zwraca status obiektu:
sys = [1 1 1 0 0 0];
x0 = 0;
else % Obiekt ciagly nie odpowiada na inne flagi
sys = [];
end
Tak utworzony model zapisujemy do pliku, podpinamy do bloczka s-function z biblioteki
Simulinka, ewentualnie maskujemy, żeby nadać mu łatwą do użytkowania formę i już możemy go
używać jak każdy model-bloczek Simulinka, np. wstawiając go do modelu toru pomiarowego.
Katedra Metrologii AGH
Kraków 2005