Metody systemowe i decyzyjne w informatyce
Transkrypt
Metody systemowe i decyzyjne w informatyce
Metody systemowe i decyzyjne w informatyce Laboratorium – Zadanie nr 1 Podwójne wahadło autor: A. Gonczarek Celem poniższego zadania jest stworzenie aplikacji symulującej zachowanie podwójnego wahadła. Dynamikę podwójnego wahadła można opisać następującym równaniem stanu: dθ1 = ω1 , dt (1) dθ2 = ω2 , (2) dt dω1 −g(2m1 + m2 ) sin θ1 − m2 g sin(θ1 − 2θ2 ) − 2 sin(θ1 − θ2 )m2 (ω22 L2 + ω12 L1 cos(θ1 − θ2 )) = , dt L1 (2m1 + m2 − m2 cos(2θ1 − 2θ2 )) (3) 2 sin(θ1 − θ2 )(ω12 L1 (m1 + m2 ) + g(m1 + m2 ) cos θ1 + ω22 L2 m2 cos(θ1 − θ2 )) dω2 = , dt L2 (2m1 + m2 − m2 cos(2θ1 − 2θ2 )) (4) gdzie θ1 (t), θ2 (t) oznaczają kąty wychylenia wahadeł od pionowej osi (kąty mają dodatni znak dla orientacji przeciwnej do ruchu wskazówek zegara), ω2 (t), ω2 (t) oznaczają prędkości kątowe wahadeł, L1 , L2 , m1 , m2 oznaczają odpowiednio długości i masy wahadeł, natomiast g oznacza wielkość przyspieszenia grawitacyjnego (rys.1). Rysunek 1: Podwójne wahadło 1 Położenia (x1 , y1 ), (x2 , y2 ) obu wahadeł wyznaczamy z następujących zależności: x1 = L1 sin θ1 + x0 , y1 = −L1 cos θ1 + y0 , (5) x2 = x1 + L2 sin θ2 , y2 = y1 − L2 cos θ2 , gdzie (x0 , y0 ) oznacza punkt zaczepienia wahadeł w układzie współrzędnych. Do rozwiązania układu równań (1)-(4) można zastosować numeryczną metodę Rungego-Kutty dla danego zagadnienia początkowego: dz = f(z), dt z(0) = z0 , gdzie z(t) = (z 1 (t) . . . z K (t))T oznacza K-wymiarowy wektor stanu, a (6) (7) dz dt 1 = ( dzdt . . . dz K T ) dt oznacza wektor jego pochodnych. f(z) = (f 1 (z) . . . f K (z))T oznacza K-wymiarowy wektor funkcyjny, gdzie każda f k (z) : RK → R jest K-wymiarową funkcją dla k = 1, . . . , K. Wektor z0 = (z01 . . . z0K )T jest K-wymiarowym wektorem warunków początkowych. T oznacza transpozycję wektora. Załóżmy, że ciągły czas t dyskretyzujemy do punktów t0 , t1 , t2 , . . ., tak że t0 = 0 oraz tn+1 = tn + h, gdzie h jest pewnym ustalonym kwantem (odcinkiem) czasu, dla n = 1, 2, . . . Algorytm numeryczny (z dyskretnym krokiem n, a nie ciągłym czasem t) rozwiązujący zagadnienie początkowe (6)-(7) ma następującą postać: zn+1 = zn + h6 (an + 2bn + 2cn + dn ) , an = f(zn ), bn = f(zn + 0.5han ), (8) cn = f(zn + 0.5hbn ), dn = f(zn + hcn ), gdzie zn = (zn1 . . . znK )T oznacza przybliżenie wektora stanu z(t) w chwili tn . Ponadto T 1 K T 1 K T 1 K T an = (a1n . . . aK oznaczają n ) , bn = (bn . . . bn ) , cn = (cn . . . cn ) , dn = (dn . . . dn ) K-wymiarowe wektory parametrów wyliczane zgodnie z zależnościami (8). Zadanie do wykonania 1. Sprawozdanie (max. 2 strony A4) Sprawozdanie ma się składać z dwóch części. Pierwsza część ma zawierać algorytm RungegoKutty opisany w postaci układu równań (8), gdzie wektor stanu z oraz wektor funkcji f(z) będzie sprecyzowany dla dynamiki podwójnego wahadła zgodnie z równaniami (1)-(4). Część druga ma zawierać ogólny schemat programu, opisany słownie bądź w postaci diagramu UML. 2 W sprawozdaniu mają być wzory matematyczne wyrażające rekurencyjne zależności odpowiednio na θ1 (n), θ2 (n), ω1 (n), ω2 (n) poprzez zastosowanie metody RungegoKutty. Sprawozdanie ma nie zawierać żadnego kodu programu. Ponadto proszę o pisanie sprawozdań na komputerze, a nie odręcznie. 2. Aplikacja Program w postaci prostej animacji ma symulować zachowanie podwójnego wahadła. Ma być możliwość zmiany w trakcie działania parametrów podwójnego wahadła m1 , m2 , L1 , L2 , g, kroku h oraz ustawienia początkowych wychyleń wahadła θ1 (0), θ2 (0). Początkowe wartości ω1 (0) i ω2 (0) mają mieć wartość zero. Przykładową aplikację można zobaczyć pod adresem: http://www.myphysicslab.com/dbl_pendulum.html. 3