Komputerowa analiza zagadnie´n ró˙zniczkowych 6. Metody
Transkrypt
Komputerowa analiza zagadnie´n ró˙zniczkowych 6. Metody
Komputerowa analiza zagadnień różniczkowych
6. Metody wielokrokowe
P. F. Góra
http://th-www.if.uj.edu.pl/zfs/gora/
2010
Liniowe metody wielokrokowe
Cz˛esto przywoływana˛ wada˛ metod Rungego-Kutty jest konieczność obliczania prawej strony równania w punktach pośrednich, w których rozwiazania
˛
“nie potrzebujemy”. Zamiast tego, do uwzglednienia
˛
zmienności
prawej strony na przestrzeni kroku całkowania, można wykorzystać informacje˛ zgromadzona˛ w poprzednich punktach. Metody takie nosza˛ nazwe˛
liniowych metod wielokrokowych.
c 2009-10 P. F. Góra
Copyright 6–2
Ogólna metoda wielokrokowa ma postać
k
X
j=0
αj yn−j − h
k
X
βj fn−j = 0 ,
(1)
j=0
gdzie fs ≡ f (xs, ys). h jest krokiem całkowania, o którym w tym momencie zakładamy,
˛
że jest stały. (1) zawiera kombinacje liniowe poprzednio
wyliczonych wartości funkcji i prawych stron równania, co uzasadnia człon
“liniowe” w nazwie. Jeżeli β0 6= 0, metoda jest niejawna.
c 2009-10 P. F. Góra
Copyright 6–3
Metody Adamsa — ogólne sformułowanie
Rozważamy problem Cauchy’ego
dy = f (x, y) ,
dx
y(x) = y .
0
(2)
Rozwiazanie
˛
ma postać
y(xn+1) = yn +
xZn+1
f (x, y(x)) dx .
(3)
xn
Klasyczne metody Adamsa polegaja˛ na zastapieniu
˛
f (x, y(x)) w (3) przez
wzór ekstrapolacyjny (Bashforth) lub interpolacyjny (Moulton) z wezłami
˛
c 2009-10 P. F. Góra
Copyright 6–4
interpolacji odległymi o krok całkowania, h, i scałkowaniu tego wzoru. Celem takiego postepowania,
˛
podobnie jak w metodach Rungego-Kutty, jest
uwzglednienie
˛
zmienności pochodnej w obrebie
˛
kroku całkowania. Zauważmy, że wynik całkowania wielomianu interpolacyjnego nie zależy od
wartości funkcji — wartości f (xl , yl ) wchodza˛ jako „ustalone” wartości interpolowanej funkcji w wezłach.
˛
k-krokowe metody Adamsa:
Adams-Bashforth: yn+1 = yn + h
Adams-Moulton: yn+1 = yn + h
k
X
j=1
k−1
X
βj fn+1−j + O(hk+1) ,
(4)
βej fn+1−j + O(hk+1) .
(5)
j=0
c 2009-10 P. F. Góra
Copyright 6–5
Przykład - wyprowadzenie trzykrokowej metody Adamsa-Bashfortha
Funkcje˛ podcałkowa˛ w (3) przybliżam poprzez ekstrapolacje˛ wielomianowa˛
z trzech ostatnio obliczonych punktów, odległych od siebie o h:
f (x, y(x)) ' fextr(x) =
(x − xn−1)(x − xn)
fn−2
(xn−2 − xn−1)(xn−2 − xn)
(x − xn−2)(x − xn−1)
(x − xn−2)(x − xn)
fn−1 +
fn
+
(xn−1 − xn−2)(xn−1 − xn)
(xn − xn−2)(xn − xn−1)
1
1
(x
−
x
+
h)(x
−
x
)
f
−
(x − xn + 2h)(x − xn)fn−1
=
n
n n−2
2
2
2h
h
1
+
(x − xn + 2h)(x − xn + h)fn .
(6)
2
2h
c 2009-10 P. F. Góra
Copyright 6–6
Nastepnie
˛
xZn+1
f (x, y(x)) dx '
xn
xZn+1
fextr(x)dx =
xn
1
− 2 fn−1
h
Zh
(z + 2h)z dz +
0
1
fn
2
2h
1
fn−2
2
2h
Zh
(z + h)z dz
0
Zh
(z + 2h)(z + h) dz
0
1 5 3
1 4 3
1 23 3
·
h
f
−
·
h
f
+
·
h fn
n−2
n−1
2
2
2
2h 6
h 3
2h
6
h
23fn − 16fn−1 + 5fn−2 .
=
12
Prosz˛e to porównać z wyrażeniem (8c) poniżej.
=
c 2009-10 P. F. Góra
Copyright (7)
6–7
Idea konstrukcji metod Adamsa:
rysunek nie jest wierny, jako że pochodnej w punkcie xn+1 nie oblicza sie˛
za pomoca˛ prostej interpolacji/ekstrapolacji
metoda niejawna
metoda jawna
fn+1 impl
f(xn) = y’(xn)
fn+1 expl
fn
fn-2
fn-1
xn-2
xn-1
xn
xn+1
x
c 2009-10 P. F. Góra
Copyright 6–8
Metody Adamsa-Bashfortha (jawne)
yn+1 = yn + hfn + O(h2)
yn+1 =
yn+1 =
yn+1 =
yn+1 =
yn+1 =
(8a)
h
yn + 2 3fn − fn−1 + O(h3)
(8b)
h
yn + 12 23fn − 16fn−1 + 5fn−2 + O(h4)
(8c)
h
yn + 24 55fn − 59fn−1 + 37fn−2 − 9fn−3 + O(h5) (8d)
h
yn + 720 1901fn − 2774fn−1 + 2616fn−2 − 1274fn−3
+ 251fn−4 + O(h6)
(8e)
h
yn + 1440 4277fn − 7923fn−1 + 2616fn−2 − 7298fn−3
+ 2877fn−4 − 475fn−5 + O(h7)
(8f)
c 2009-10 P. F. Góra
Copyright 6–9
Metody Adamsa-Moultona (niejawne)
yn+1 = yn + hfn+1 + O(h2)
(9a)
yn+1 = yn + 2h fn+1 + fn + O(h3)
yn+1 =
yn+1 =
yn+1 =
yn+1 =
(9b)
h
yn + 12 5fn+1 + 8fn − fn−1 + O(h4)
(9c)
h
yn + 24 9fn+1 + 19fn − 5fn−1 + fn−2 + O(h5)
(9d)
h
yn + 720 251fn+1 + 646fn − 264fn−1 + 106fn−2 − 19fn−3
+ O(h6)
(9e)
h
yn + 1440
475fn+1 + 1427fn − 798fn−1 + 482fn−2
− 173fn−3 + 27fn−4 + O(h7)
(9f)
c 2009-10 P. F. Góra
Copyright 6–10
Podane wyżej metody sa˛ wszystkimi sensownymi metodami wielokrokowymi o stałym kroku, opartymi o interpolacje/ekstrapolacj
˛
e˛ wielomianowa.
˛
Zgodność metod Adamsa jest oczywista.
c 2009-10 P. F. Góra
Copyright 6–11
Stabilność metod wielokrokowych
Stabilność metod wielokrokowych bada sie˛ nieco inaczej niż stabilność
metod jednokrokowych typu metod Rungego-Kutty. Dla przykładu pokażemy jak badać stabilność k-krokowej jawnej metody Adamsa-Bashfortha;
stabilność niejawnych metod Adamsa-Moultona i BDF bada sie˛ zupełnie
podobnie.
Rozważmy równanie (4), w którym wszystkie yl zostały zaburzone: yl →
yl + εl . Mamy
yn+1+εn+1 = yn+εn+h
k
X
βj f xn+1−j , yn+1−j + εn+1−j
j=1
'
yn+εn+h
k
X
j=1
c 2009-10 P. F. Góra
Copyright βj
!
∂ f fn+1−j +
εn+1−j .
∂ y n+1−j
(10)
6–12
Wszystkie k jakobiany w równaniu (10) oblicza sie˛ w różnych punktach. Jeśli jednak krok h jest mały, możemy przyjać,
˛ że w przybliżeniu sa˛ one sobie
równe, podobnie jak to robiliśmy przy analizie stabilności metod RungegoKutty. (Założenie to nie jest spełnione w miejscach, w których funkcja zmienia sie˛ bardzo gwałtownie.) Wobec czego przechodzimy do reprezentacji,
w której jakobian jest diagonalny — zastepujemy
˛
jakobian ∂ f /∂ y jego wartościa˛ własna˛ λ, natomiast błedy
˛
εl zastepujemy
˛
odpowiednia˛ składowa˛
εl . Formalnie rzecz biorac,
˛ analiz˛e taka˛ trzeba powtórzyć dla wszystkich λ
i odpowiadajacych
˛
im składowych błedów,
˛
okaże sie˛ jednak, że nie jest to
konieczne.
Z równania (10) otrzymujemy zatem
εn+1 = εn + hλβ1εn + hλβ2εn−1 + · · · + hλβk εn+1−k .
c 2009-10 P. F. Góra
Copyright (11)
6–13
Macierz wzmocnienia
Oznaczmy hλ = z. Równanie (11) możemy przepisać w postaci macierzowej
εn+1
εn
εn−1
...
εn+2−k
=
1+β1z β2z β3z
1
0
0
0
1
0
...
...
...
0
0
0
. . . βk−1z βk z
...
0
0
...
0
0
...
...
...
...
1
0
εn
εn−1
εn−2
...
εn+1−k
(12a)
czyli
~
εn+1 = G~
εn
(12b)
Zwracam uwage,
˛ że εn z równania (10) i ~
εn z równania (12b) to sa˛ zupełnie
różne wektory . Badanie stabilności metody (4) sprowadza sie˛ teraz do
znalezienia wartości własnych macierzy wzmocnienia G.
c 2009-10 P. F. Góra
Copyright 6–14
Wartości własne macierzy wzmocnienia
Oznaczmy Wk = det(G − g I). Rozwijajac
˛ wzgledem
˛
ostatniej kolumny
(patrz (12a)) otrzymujemy
k+1
Wk = −gWk−1 + (−1)
βk z det
1 −g 0 . . .
0 1 −g . . .
0 0
1 ...
...
...
...
...
0 0
0 ...
0
0
0
...
1
(13)
Wyznacznik macierzy wypisanej jawnie w równaniu (13) wynosi 1. Postepowanie
˛
to łatwo iterować. Ostatecznie otrzymujemy nastepuj
˛ ace
˛ równanie charakterystyczne dla macierzy wzmocnienia (uwaga: zmienna˛ jest
g):
c 2009-10 P. F. Góra
Copyright 6–15
g k − (1 + zβ1)g k−1 − zβ2g k−2 − · · · − zβk−1g − zβk = 0 .
(14)
Metoda Adamsa-Bashfortha rz˛edu k jest stabilna jeśli wszystkie pierwiastki
równania (14) leża˛ wewnatrz
˛ okregu
˛
jednostkowego. Ogół takich z, dla
których pierwiastki (14) leża˛ wewnatrz
˛ okregu
˛
jednostkowego, nazywam
obszarem stabilności metody . Zauważmy, że analizujac
˛ obszar stabilności, uwalniamy sie˛ niejako od równania różniczkowego, obecnego tu formalnie tylko poprzez wartości własne jakobianu, a skupiamy sie˛ na samej
metodzie, podobnie jak to było dla metod Rungego-Kutty.
Wyprowadzenie równań opisujacych
˛
stabilność niejawnych metod
Adamsa-Moultona i BDF, omawianych poniżej, przebiega w sposób analogiczny.
c 2009-10 P. F. Góra
Copyright 6–16
• Obszar stabilności metod Adamsa-Bashfortha maleje wraz ze wzrostem rz˛edu metody.
• Dwie pierwsze metody Adamsa-Moultona sa˛ A-stabilne, obszary stabilności pozostałych maleja˛ wraz ze wzrostem rz˛edu metody.
˛
e˛ wie• Żadna metoda wielokrokowa oparta o interpolacje/ekstrapolacj
lomianowa˛ z k > 6 nie jest stabilna!
• Można konstruować stabilne metody wielokrokowe wyższych rz˛edów,
ale dla nich nie obowiazuje
˛
już paradygmat ekstrapolowania pochodnej na podstawie zachowania w poprzednich wezłach
˛
— nie sa˛ to wiec
˛
metody Adamsa.
c 2009-10 P. F. Góra
Copyright 6–17
Metody predyktor-korektor (predictor-corrector )
Jeśli problem nie jest sztywny , bardzo cz˛esto pewna˛ jawna˛ metode˛
Adamsa-Bashfortha (8) stosuje sie˛ jednocześnie z niejawna˛ metoda˛
Adamsa-Moultona (9) o tym samym rz˛edzie. Za pomoca˛ metody jawnej
przewiduje sie˛ rozwiazanie,
˛
które potem poprawia sie˛ za pomoca˛ metody
niejawnej. Można to dalej powtarzać, poprawiajac
˛ poprawione∗. Uzyskana
˛
układu równań
metoda jest oczywiście jawna — unika sie˛ rozwiazywania
algebraicznych, na ogół nieliniowych.
Metody predyktor-korektor sa˛ bardzo popularne† — w praktycznych zastosowaniach metody Adamsa wystepuj
˛ a˛ prawie wyłacznie
˛
w tym zestawieniu.
∗ Vide grabit’ nagrabljennoje.
† Ale ja ich nie lubie
˛/
c 2009-10 P. F. Góra
Copyright 6–18
Przykład:
predyktor:
korektor:
1
e n+1 = yn + h 3fn − fn−1 ,
y
2
1
e n+1) + fn ,
yn+1 = yn + 2 h f (xn+1, y
fn+1 = f (xn+1, yn+1) .
(15a)
(15b)
(15c)
Niekiedy krok korektora powtarza sie˛ (iteruje) w celu uzyskania samouzgodnionego (self-consistent) rozwiazania
˛
nieliniowego równania algebraicznego. Na ogół jednak dokonuje sie˛ tylko jednego lub dwóch kroków
korektora.
c 2009-10 P. F. Góra
Copyright 6–19
Zmiana kroku w metodach Adamsa
Metody wielokrokowe sa˛ oparte o ekstrapolacje/interpolacj
˛
e˛ o ustalonych
wezłach.
˛
Zmiana kroku jest możliwa, ale kłopotliwa — do każdego przypadku trzeba wyprowadzać odpowiedni wzór.
Przykład: Wyprowadźmy wzór postaci
yn+1 = yn + hnAnf (xn, yn) + hnBnf (xn−1, yn−1)
(16)
gdzie xn − xn−1 = hn−1, xn+1 − xn = hn 6= hn−1.
c 2009-10 P. F. Góra
Copyright 6–20
Zachodzi
yn+1 = yn +
xZn+1
f (x, y(x)) dx
(17)
xn
Funkcje˛ podcałkowa˛ przybliżam jako
f (x, y(x)) '
x − xn−1
xn − x
fn +
fn−1
xn − xn−1
xn − xn−1
(18)
Po wykonaniu całkowania dostaje˛
c 2009-10 P. F. Góra
Copyright 6–21
xZn+1
f (x, y(x)) dx '
xn
2
x2
n+1 − xn
xn−1(xn+1 − xn)
1
fn +
·
−
2 xn − xn−1
xn − xn−1
2
2
xn+1 − xn
x (x
− xn ) 1
n n+1
− ·
xn − xn−1
2 xn − xn−1
xn+1 − xn
+ xn − xn−1
(xn+1 − xn)
2
fn−1 =
fn
−
xn − xn−1
x
− xn
fn−1
(xn+1 − xn) n+1
·
2
xn − xn−1
(19)
Ostatecznie
"
yn+1 = yn + hn
c 2009-10 P. F. Góra
Copyright !
#
hn
hn
1+
fn −
fn−1 .
2hn−1
2hn−1
(20)
6–22
Backward Differentiation Formulae
Wyprowadzenie metod Adamsa opierało sie˛ o interpolacje˛ wyrażenia na
pochodna.
˛ Jeśli zamiast tego wielomianów interpolacyjnych użyjemy do
ekstrapolacji rozwiazania,
˛
otrzymamy metody BDF , niejawne, w których
pochodna obliczana jest tylko w nowym (nieznanym) punkcie. Sa˛ one chet˛
nie stosowane dla problemów sztywnych i maja˛ bardzo dobre własności
stabilności.
c 2009-10 P. F. Góra
Copyright 6–23
Metody BDF
yn+1 = yn + hfn+1 + O(h2)
yn+1 =
yn+1 =
yn+1 =
yn+1 =
yn+1 =
(21a)
1 4y − y
2 hf
3)
+
+
O(h
(21b)
n
n−1
n+1
3
3
1 18y − 9y
6 hf
4)
+
2
y
+
+
O(h
(21c)
n
n−1
n−2
n+1
11
11
1 48y − 36y
12 hf
+
16
y
−
3
y
+
n
n−1
n−2
n−3
25
25 n+1
+ O(h5)
(21d)
1
137 300yn − 300yn−1 + 200yn−2 − 75yn−3 + 12yn−4
60 hf
6
(21e)
+ 137
n+1 + O(h )
1
147 360yn − 450yn−1 + 400yn−2 − 225yn−3 + 72yn−4
60 hf
7
− 10yn−5 + 147
(21f)
n+1 + O(h )
c 2009-10 P. F. Góra
Copyright 6–24
Zgodność metod BDF też, po prostych rachunkach, okazuje sie˛ być oczywista ,. Dla przykładu, dla drugiej z metod BDF otrzymujemy
3
yn+1 − yn
h
−
yn − yn−1
h
= 2fn+1 .
(22)
Metody BDF sa˛ stabilne poza pewnym obszarem ograniczonym, który rośnie wraz ze wzrostem rz˛edu metody.
c 2009-10 P. F. Góra
Copyright 6–25
Zalety metod wielokrokowych
, Koncepcyjna prostota, łatwość zaimplementowania.
, Szybkość (zwłaszcza dla metod jawnych).
, Uzyskanie wysokiego rz˛edu jest obliczeniowo tanie.
, Popularność, bardzo duża ilość gotowych kodów.
Wady metod wielokrokowych
/
Wymagaja˛ inicjalizacji.
/ Metody Adamsa (ale nie BDF!) maja˛ kiepskie własności stabilności.
/ Kłopotliwa zmiana kroku.
c 2009-10 P. F. Góra
Copyright 6–26
Metody Verleta — motywacja
Ponieważ klasyczne równania ruchu (równania Newtona) maja˛ postać
równań różniczkowych drugiego rz˛edu, w praktyce bardzo ważna jest
umiejetność
˛
numerycznego rozwiazywania
˛
równań postaci miẍi = Fi,
i = 1, 2, . . . , N , czyli
d2 x
= a(t, x(t)) ,
dt2
(23)
‡ . Równanie tej postaci można
gdzie x, a ∈ R3N , N jest ilościa˛ czastek
˛
łatwo przekształcić do układu równań pierwszego rz˛edu, ale szczególnie
efektywne powinny być metody „od razu” dostosowane do równań rz˛edu
drugiego.
‡ Niekiedy
ruch jest z przyczyn fizycznych ograniczony do przypadku dwu- lub jednowymiarowego. Wówczas zamiast 3N w (23) mamy odpowiednio 2N lub N .
c 2009-10 P. F. Góra
Copyright 6–27
Pewien bardzo zły algorytm
Równanie (23) rozwiazujemy
˛
z pewnym stałym i niewielkim krokiem h.
Naiwne rozumowanie może doprowadzić do wniosku, że dla odpowiednio małych h, siła — a wiec
˛ i przyspieszenie, czyli prawa strona równania
(23) — nie zmienia sie,
˛ a wiec
˛ układ w ciagu
˛ jednego kroku zachowuje sie˛
tak, jakby był układem jednostajnie przyspieszonym. Wobec tego
xn+1 = xn + vnh + 21 anh2 ,
vn+1 = vn + anh ,
(24a)
(24b)
gdzie vn, an sa,
˛ odpowiednio, predkości
˛
a˛ i siła˛ obliczana˛ w chwili tn. Równanie (24a) jest, w gruncie rzeczy, rozwinieciem
˛
Taylora x(tn + h), nie jest
zatem dziwne, że algorytm (24) jest zgodny z równaniem (23). Można to
jednak także pokazać w nieco inny sposób: Odejmijmy stronami równanie
(24a) i to samo równanie cofniete
˛ o jeden krok w czasie. Dostaniemy
xn+1 − xn = xn − xn−1 + (vn − vn−1)h + 12 (an − an−1)h2 .
c 2009-10 P. F. Góra
Copyright (25)
6–28
Z równania (24b) dostajemy
vn − vn−1 = an−1h .
(26)
Po podstawieniu do (25) i po uporzadkowaniu
˛
dostajemy
xn+1−xn
xn−xn−1
−
1 (a + a
h
h
=2
n
n−1 ) .
h
(27)
W granicy h → 0+ odtwarzamy równanie (23).
c 2009-10 P. F. Góra
Copyright 6–29
Jeśli przyspieszenie w (23) nie zależy od predkości,
˛
macierz wzmocnienia
dla metody (24) ma postać
"
G=
I + 12 Jh2 h
Jh
#
,
(28)
I
gdzie Jij = ∂ ai/∂ xj jest Jakobianem przyspieszeń po położeniach.
tn
Widać, iż metoda (24) może mieć bardzo poważne problemy ze stabilnościa.
˛
c 2009-10 P. F. Góra
Copyright 6–30
Klasyczny algorytm Verleta
Spróbujmy wyprowadzić metode˛ całkowania równania (23) w sposób bardziej systematyczny. Zakładamy, że przyspieszenia nie zależa˛ od predkości.
˛
Dokonujemy nastepuj
˛ a˛
cych rozwinieć
˛ w szereg Taylora:
dx 1 d2 x 2
1 d3 x 3
4
x(tn+h) = x(tn) +
h+
h
+
h
+
O(h
)
dt tn
2 dt2 tn
6 dt3 tn
dx 1 d2 x 2 1 d3 x 3
4
x(tn−h) = x(tn) −
h
+
h
−
h
+
O(h
)
dt 2 dt2 6 dt3 tn
tn
(29a)
(29b)
tn
Po dodaniu równań (29) stronami i uporzadkowaniu
˛
wyrazów otrzymujemy
xn+1 = 2xn − xn−1 + anh2 + O(h4) .
(30)
Algorytm (30) zwany jest metoda˛ (algorytmem) Verleta (Verlet 1967).
c 2009-10 P. F. Góra
Copyright 6–31
Zauważmy, iż metoda Verleta jest metoda˛ wielokrokowa˛ — do obliczenia
przyszłej wartości x potrzebna jest znajomość obecnej oraz poprzedniej
wartości x.
W celu pokazania, iż algorytm Verleta jest zgodny z równaniem (23), przekształcamy równanie (30) do postaci
xn+1−xn
xn−xn−1
−
h
h
= an .
h
(31)
I znów, w granicy h → 0+ odtwarzamy równanie (23).
c 2009-10 P. F. Góra
Copyright 6–32
Stabilność metody Verleta
Z uwagi na to, że jest to metoda wielokrokowa, stabilność algorytmu Verleta bada sie˛ w sposób właściwy dla tej klasy algorytmów. Dla uproszczenia notacji przyjmijmy na chwile,
˛ iż interesuje nas wyłacznie
˛
przypadek
jednowymiarowy. Mamy zatem
xn+1 + εn+1 = 2(xn + εn) − (xn−1 + εn−1) + h2a(xn + εn)
da
2
2
εn
(32)
' 2xn − xn−1 + h a(x
) +2εn − εn−1 + h
| {zn }
dx
tn
=an
Nawias w napisie a(xn + εn ) nie oznacza mnożenia, ale zależność funkcyjna!
˛
c 2009-10 P. F. Góra
Copyright 6–33
Propagacja błedu
˛
opisana jest zatem równaniem
εn+1 = (2 + λ)εn − εn−1 ,
(33)
gdzie λ = da/dx|tn h2. Równanie (33) możemy przedstawić w postaci§
"
εn+1
εn
#
"
=G
εn
εn−1
#
"
=
2 + λ −1
1
0
#"
εn
εn−1
#
.
(34)
Równaniem charagterystycznym jest
det(G − g I) = −g(2 + λ − g) + 1 = g 2 − (2 + λ) + 1 = 0
(35)
§ Wielokrokowa
propagacja błedu
˛
jest jednokrokowa w przestrzeni o odpowiednio wiek˛
szej ilości wymiarów!
c 2009-10 P. F. Góra
Copyright 6–34
Widać zatem, iż algorytm Verleta jest stabilny, jeżeli
q
2
1
|g±| = 2 2 + λ ± 4λ + λ < 1 .
(36)
Rozważmy trzy przypadki:
1. −4 6 λ 6 0. Wówczas 4λ + λ2 6 0.
r
2
1
i
g± = 1 + 2 λ ± 2 4λ + λ ,
2
2
2
1
1
|g±| = = 1 + λ + 4 λ + 4 4λ + λ 1 λ2 − 1 (4λ + λ2 ) ≡ 1 .
= 1+λ+4
4
Algorytm jest zatem neutralnie (marginalnie) stabilny , co oznacza, że
błedy
˛ nie sa˛ co prawda tłumione, ale też nie narastaja˛ i nie prowadza˛
do rozbieżności.
c 2009-10 P. F. Góra
Copyright 6–35
2. λ > 0. Wówczas g+ > 1.
3. λ < −4. Wówczas g− < −1.
Rekapitulujac,
˛ dla ruchu jednowymiarowego klasyczny algorytm Verleta
jest marginalnie stabilny dla da/dx|tn h2 ∈ [−4, 0] i niestabilny poza tym
przedziałem.
c 2009-10 P. F. Góra
Copyright 6–36
Wady algorytmu Verleta
• Dziwne traktowanie predkości
˛
— predkość
˛
w kroku n znana jest dopiero po obliczeniu położenia w kroku n+1. W symulacjach znajomość predkości
˛
nie jest potrzebna
do obliczania sił, ale jest potrzebna do obliczania energii kinetycznej, temperatury,
ciśnienia itp. Predkość
˛
obliczana jest ze wzoru
vn =
xn+1 − xn−1
,
2h
(37)
• We wzorze (30) różnica dwu „dużych” wyrażeń rz˛edu O(h0 ) jest dodawana do „małego” wyrażenia rz˛edu O(h2 ), co może prowadzić do znacznej utraty dokładności
numerycznej.
Zauważmy, że wyrażenie (37) jest symetryczne w czasie; próba obliczania vn = (xn −
xn−1)/h łamałaby symetrie˛ odwrócenia w czasie, a przecież równania mechaniki (bez sił
zależnych od predkości)
˛
sa˛ mikroskopowo odwracalne!
c 2009-10 P. F. Góra
Copyright 6–37
Algorytm leap–frog („żabiego skoku”)
Spsobem na obejście (niektórych) trudności z algorytmem Verleta jest algorytm leap–frog (Hockney 1970), w którym predkości
˛
obliczane sa˛ w czasach pośrednich pomiedzy
˛
położeniami¶:
1
tn + 2 h =
1
v
v tn − 2 h + han ,
1
xn+1 = x(tn + h) = xn + hv tn + 2 h .
(38a)
(38b)
Predkości
˛
obliczane sa˛ według wzoru
vn = 12
¶ Żaby
h v
i
1
1
tn − 2 h + v tn + 2 h .
(39)
wcale tak nie skacza.
˛
c 2009-10 P. F. Góra
Copyright 6–38
Zgodność algorytmu leap–frog
Aby sprawdzić czy algorytm leap–frog jest zgodny, należy z (38) wyeliminować predkości.
˛
Po podstawieniu pierwszego z równań (38) do drugiego
dostajemy
xn+1 = xn + hv
1
tn − 2 h + h2an .
(40)
Drugie z równań (38) przesuniete
˛ w tył w czasie daje
hv
1
tn − 2 h =
xn − xn−1 .
(41)
Ostatecznie
xn+1 = 2xn − xn−1 + h2an .
(42)
Równanie (42) ma taka˛ sama˛ postać co równanie (30), widzimy zatem, iż
algorytm leap–frog jest algebraicznie równoważny algorytmowi Verleta, a
wiec
˛ jest zgodny z równaniem (23). Nie oznacza to jednak, iż numeryczne
rezultaty zastosowania obu tych algorytmów sa˛ takie same!
c 2009-10 P. F. Góra
Copyright 6–39
Stabilność algorytmu leap–frog
Wyrażenia na propagacje˛ błedu
˛
w algorytmie leap–frog maja˛ postać
η n+1/2 = η n−1/2 + h Jεn ,
εn+1 = εn + h η n+1/2 ,
(43a)
(43b)
gdzie Jij = ∂ ai/∂ xj . Pod wzgledem
˛
propagacji błedu
˛
metoda leap–
tn
frog zachowuje sie˛ jak metoda pół-niejawna! Ostatecznie macierz wzomocnienia ma postać
"
G=
c 2009-10 P. F. Góra
Copyright I
hJ
hI I + h2 J
#
.
(44)
6–40
Dla przypadku jednowymiarowego otrzymujemy stad
˛
g± =
2+λ±
q
2
4λ + λ2
,
(45)
gdzie, jak poprzednio, λ = da/dx|tn h2. Jest to identyczne z analogicznym wyrażeniem dla metody Verletak, a zatem własności stabilności metody leap-frog i metody Verleta sa˛ — co najmniej w przypadku jedowymiarowym — identyczne.
k Co
nie dziwi wobec algebraicznej równoważności tych metod.
c 2009-10 P. F. Góra
Copyright 6–41
Cechy algorytmu leap–frog:
, Różnica dwu dużych wielkości nie jest porównywana z mała.
˛
, Predkość
˛
w chwili tn jest znana w chwili tn, nie dopiero w chwili tn+1.
/
Algorytm wymaga inicjalizacji (na przykład metoda˛ Eulera z krokiem
połówkowym).
/ Przyspieszenia (siły) nie moga˛ zależeć od predkości.
˛
/ Predkości
˛
nadal obsługiwane sa˛ dość dziwacznie.
c 2009-10 P. F. Góra
Copyright 6–42
Algorytm velocity Verlet
Problemy z dziwacznym tarktowaniem predkości
˛
rozwiazuje
˛
kolejna modyfikacja algorytmu Verleta, zwana velocity Verlet (Swope et. al. 1982):
xn+1 = xn + h vn + 21 h2 an ,
vn+1 = vn + 12 h
an + an+1 .
(46a)
(46b)
Algorytm ten nie nadaje sie˛ do sił (przyspieszeń) zależnych od predkości.
˛
c 2009-10 P. F. Góra
Copyright 6–43
Uogólniony algorytm velocity Verlet
Okazuje sie,
˛ że algorytm velocity Verlet można łatwo uogólnić (PFG):
xn+1 = xn + h vn + αh2 an ,
(47a)
vn+1 = vn + h α an + (1 − α)an+1 ,
(47b)
gdzie α ∈ [0, 1].
c 2009-10 P. F. Góra
Copyright 6–44
Zgodność algorytmu (47) z równaniem (23) pokażemy eleiminujac
˛ z (47)
predkości.
˛
Odejmujac
˛ od pierwszego z równań (47) to samo równanie
cofniete
˛ o krok w czasie, dostajemy
xn+1 = 2xn − xn−1 + h vn − vn−1
+ αh2
an − an−1 .
(48)
Z kolei na mocy drugiego z równań (47),
vn − vn−1 = h α an−1 − (1 − α)an .
c 2009-10 P. F. Góra
Copyright (49)
6–45
Ostatecznie
2
xn+1 = 2xn − xn−1 + h α an − α an−1 + α an−1 + (1 − α)an
= 2xn − xn−1 + h2an ,
(50)
a wiec
˛ znów dostajemy algebraiczna˛ równoważność (uogólnionego) algorytmu velocity Verlet i klasycznego algorytmu Verleta.
c 2009-10 P. F. Góra
Copyright 6–46
Propagacja błedu
˛
dla sił niezależnych od predkości
˛
ma postać
εn+1 = εn + hη n + αh2 Jεn ,
e
η n+1 = η n + hα Jεn + h(1 − α)Jε
n+1 ,
(51a)
(51b)
e jest jakobianem w kroku n+1. Jako maJ jest jakobianem w kroku n, J
cierz wzmocnienia dostajemy
"
G=
I + αh2 J
hI
e (I + αh2 J) I + (1 − α)h2 J
e
αh J + (1 − α)hJ
#
.
(52)
W przypadku jedowymiarowym, niezależnie od wartości parametru α, dostajemy takie same współczynniki wzmocnienia, jak w metodach Verleta i
leap–frog, a zatem własności stabilności uogólnionej metody velocity Verlet sa˛ takie same, jak i innych metod Verleta.
c 2009-10 P. F. Góra
Copyright 6–47
Dla α = 1 algorytm (47) można stosować gdy
przyspieszenia zależa˛ od predkości!
˛
xn+1 = xn + h vn + h2 an ,
vn+1 = vn + h an ,
(53a)
(53b)
co można też zapisać jako
vn+1 = vn + h an ,
xn+1 = xn + h vn+1 .
(54a)
(54b)
W tym wypadku macierz wzmocnienia ma postać
"
G=
c 2009-10 P. F. Góra
Copyright I + h2 J
h Jx
x
h I + h2 J
I + h Jv
v
#
,
(55)
6–48
gdzie Jx, Jv oznaczaja,
˛ odpowiednio, jakobiany po położeniach i predko˛
ściach.
W przypadku jednowymiarowym dostajemy
g± = 1
2 2+λ+γ±
q
4λ + (λ + γ)2 ,
(56)
gdzie λ = ∂a/∂x|tn h2, γ = ∂a/∂v|tn h. Dla γ = 0 (przyspieszenia nie
zależa˛ od predkości)
˛
daje to oczywiście to samo, co inne metody Verleta,
czyli marginalna˛ stabilność dla λ ∈ [−4, 0], γ = 0. Dla γ < 0 i λ < 0
otrzymujemy ograniczony obszar absolutnej stabilności.
c 2009-10 P. F. Góra
Copyright 6–49
Obszar stabilności dla uogólnionej metody velocity Verlet
w przypadku jednowymiarowym
0.0
-0.2
γ
-0.4
-0.6
-0.8
-1.0
-1.2
-4.0
c 2009-10 P. F. Góra
Copyright -3.5
-3.0
-2.5
-2.0
λ
-1.5
-1.0
-0.5
0.0
6–50
Inna modyfikacja algorytmu velocity Verlet
Opublikowano kilka modyfikacji algorytmu Verleta przeznaczonych do rozwiazywania
˛
równań z przyspieszeniami (siłami) zależnymi od predkości.
˛
Najcz˛eściej używana pochodzi z pracy R. D. Groot, P. B. Warren, Dissipative particle dynamics: Bridging the gap between atomistic and mesoscopic simulations, J. Chem. Phys. 107, 4423 (1997). Jest to algorytm typu
predyktor-korektor :
predyktor:
xn+1 = xn + hvn + 12 h2an ,
e = vn + βhan ,
v
e = a xn+1, v
e ,
a
korektor:
vn+1 = vn + 12 h
(57a)
(57b)
(57c)
e ,
an + a
(57d)
gdzie β ∈ [0, 1]. W przeciwieństwie do algorytmu (53), algorytm (57)
wymaga dwu obliczeń przyspieszenia na krok czasowy.
c 2009-10 P. F. Góra
Copyright 6–51