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

Podobne dokumenty