Metody systemowe i decyzyjne w informatyce

Transkrypt

Metody systemowe i decyzyjne w informatyce
Metody systemowe i decyzyjne w informatyce
Laboratorium – MATLAB – Zadanie nr 1
Pojedyncze wahadło
autorzy: A. Gonczarek, J.M. Tomczak
Cel zadania
Celem zadania jest zapoznanie się z systemem dynamicznym opisanym za pomocą równania stanu
oraz zaproponowanie rozwiązania problemu w środowisku MATLAB z użyciem wbubdowanej implementacji algorytmu Rungego-Kutty. Rozpatrywanym obiektem jest pojedyncze wahadło. Numeryczne rozwiązanie należy porównać z analitycznym rozwiązaniem dla liniowej aproksymacji
problemu dla niewielkich kątów.
Równanie stanu
W celu opisu matematycznego systemów dynamicznych wykorzystuje się reprezentację równań
stanu:
ds
= f (s)
dt
s(0) = s0 ,
(1)
(2)
gdzie s(t) = (s1 (t) . . . sK (t))T oznacza K-wymiarowy wektor stanu,
K
1
ds
dt
1
= ( ds
...
dt
dsK T
)
dt
– wektor
T
pochodnych zmiennych stanu, f (s) = (f (s) . . . f (s)) – K-wymiarowy wektor funkcyjny, gdzie
T
każda f k (s) : RK → R jest K-wymiarową funkcją dla k = 1, . . . , K, s0 = (s10 . . . sK
jest
0 )
K-wymiarowym wektorem warunków początkowych
Wektor stanu s jest najmniejszym podzbiorem zmiennych opisujących system, które reprezentują całościowy stan systemu w zadanej chwili.
θ
L
Rysunek 1: Schemat pojedynczego wahadła, na którym zaznaczono długość wahadła L oraz kąt
wychylenia θ.
1
Pojedyncze wahadło
W zadaniu skupiamy się na pojedynczym wahadle (patrz Rysunek 1). Zakładamy, że długość
wahadła wynosi L i jest znana, natomiast kąt wychylenia oznaczamy przez θ. Przez g oznaczamy
przyspieszenie ziemskie. Dynamikę pojedynczego wahadła można opisać następującym równaniem
różniczkowym:
d2 θ
g
(3)
= − sin(θ).
2
dt
L
Otrzymane równanie różniczkowe (3) jest przykładem nieliniowego równania różniczkowego.
Rozwiązanie analityczne nie jest możliwe do wyznaczenia, dlatego stosuje się metody numeryczne, np. algorytm Rungego-Kutty.
Analityczne rozwiązanie można podać jedynie dla małych kątów, dla których stosuje się aproksymację sin(θ) ≈ θ. Wówczas rozwiązanie jest następujące:
θ(t) = θ0 cos
r g L
t ,
(4)
gdzie θ0 jest początkowym kątem wychylenia.
Algorytm Rungego-Kutty w Matlabie – ode45
Jedna z implementacji algorytmu Rungego-Kutty w Matlabie nazywa się ode45. Dla zdefiniowanego w pliku dynamics.m wektora funkcyjnego f (s) z równania stanu, funkcję wywołuje się ją
następująco:
ode45(@(t,s) dynamics(s,L,g),T,init state);
gdzie kolejne argumenty oznaczają odwołanie się do dynamiki (@(t,s) dynamics(s,L,g)) oraz
wektor zadanych momentów czasu T i wektor warunków początkowych init state – s0 .
Testowanie poprawności działania
Do sprawdzania poprawności działania zaproponowanych rozwiązań służy funkcja main w pliku
main.m. Funkcja pobiera trzy argumenty, kolejno, długość L, przyspieszenie g oraz kąt wychylenia
początkowego θ0 . W przypadku, gdy nie zostaną podane argumenty, funkcja zostanie uruchomiona
w wartościami domyślnymi.
W pliku main.m nie wolno czekogolwiek zmieniać ani dopisywać.
Instrukcja wykonania zadania
1. Zapisać równanie różniczkowe (3) za pomocą równania stanu (1).
2
2. Zaimplementować funkcję f (s) z równania stanu dla pojedynczego wahadła w pliku dynamics.m.
3. Zaimplementować numeryczne rozwiązanie równania stanu za pomocą funkcji ode45 w pliku
numerical solution.m.
4. Wyznaczyć pochodną rozwiązania (4).
5. Zaimplementować rozwiązanie równania stanu za pomocą aproksymacji dla małych kątów
(4) w pliku analytical solution.m.
6. Po spełnieniu powyższych punktów uruchomić funkcję main z zadanymi wartościami.
UWAGA! Wszelkie nazwy funkcji i zmiennych w plikach *.m muszą pozostać zachowane.
Zmiana jakichkolwiek nazw i dodanie fragmentów kodu poza wskazanymi miejscami skutkować
będzie otrzymaniem 0 pkt.
Implementacja (8 pkt.)
1. Poprawne zapisanie równania stanu dla pojedynczego wahadła – funkcja dynamics.m.
(3 pkt.)
2. Poprawne rozwiązanie z użyciem funkcji ode45 – funkcja numerical solution.m. (2 pkt.)
3. Poprawne rozwiązanie z użyciem aproksymacji liniowej – funkcja analytical solution.m.
(3 pkt.)
Pytania kontrolne (2 pkt.)
Prowadzący zadaje po jednym pytaniu każdej z osób w grupie:
1. Jakie zmienne wchodzą w skład wektora stanu s w problemie pojedynczego wahadła?
2. Proszę przekształcić równanie różniczkowe (3) do równania stanu.
3. Proszę wyznaczyć pochodną rozwiązania analitycznego (4).
4. Kiedy błąd analitycznej aproksymacji będzie większy niż rozwiązania numerycznego?
5. Kiedy błąd rozwiązania numerycznego będzie większy niż analitycznej aproksymacji?
6. Jaką przede wszystkim korzyść przynosi stosowanie rozwiązania analitycznego?
7. Dlaczego równanie (3) jest nieliniowym równaniem różniczkowym?
3
8. Czy równanie (3) może być rozwiązane z użyciem transformaty Laplace’a?
9. Czy równanie (3) z aproksymacją sin(θ) ≈ θ może być rozwiązane z użyciem transformaty
Laplace’a?
10. Pokazać, że rozwiązanie (4) spełnia równanie (3) z aproksymacją sin(θ) ≈ θ.
4