Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a...

27
Zaawansowane metody numeryczne Komputerowa analiza zagadnie´ n ró˙ zniczkowych 8. Algorytmy Verleta P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06

Transcript of Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a...

Page 1: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Zaawansowane metody numeryczne

Komputerowa analiza zagadnien rózniczkowych

8. Algorytmy Verleta

P. F. Górahttp://th-www.if.uj.edu.pl/zfs/gora/

semestr letni 2005/06

Page 2: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Motywacja

Poniewaz klasyczne równania ruchu (równania Newtona) maja postac równanrózniczkowych drugiego rzedu, w praktyce bardzo wazna jest umiejetnosc nu-merycznego rozwiazywania równan postaci mixi = Fi, i = 1,2, . . . , N , czyli

d2x

dt2= a(t,x(t)) , (1)

gdzie x, a ∈ R3N , N jest iloscia czastek∗. Równanie tej postaci mozna łatwoprzekształcic do układu równan pierwszego rzedu, ale szczególnie efektywnepowinny byc metody „od razu” dostosowane do równan rzedu drugiego.

∗Niekiedy ruch jest z przyczyn fizycznych ograniczony do przypadku dwu- lub jednowymia-rowego. Wówczas zamiast 3N w (1) mamy odpowiednio 2N lub N .

8. Algorytmy Verleta 2

Page 3: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Pewien bardzo zły algorytm

Równanie (1) rozwiazujemy z pewnym stałym i niewielkim krokiem h. Naiwnerozumowanie moze doprowadzic do wniosku, ze dla odpowiednio małych h, siła— a wiec i przyspieszenie, czyli prawa strona równania (1) — nie zmienia sie,a wiec układ w ciagu jednego kroku zachowuje sie tak, jakby był układem jedno-stajnie przyspieszonym. Wobec tego

xn+1 = xn + vnh + 12anh2 , (2a)

vn+1 = vn + anh , (2b)

gdzie vn, an sa, odpowiednio, predkoscia i siła obliczana w chwili tn. Rów-nanie (2a) jest, w gruncie rzeczy, rozwinieciem Taylora x(tn+h), nie jest zatemdziwne, ze algorytm (2) jest zgodny z równaniem (1). Mozna to jednak takze

8. Algorytmy Verleta 3

Page 4: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

pokazac w nieco inny sposób: Odejmijmy stronami równanie (2a) i to samo rów-nanie cofniete o jeden krok w czasie. Dostaniemy

xn+1 − xn = xn − xn−1 + (vn − vn−1)h + 12(an − an−1)h

2 . (3)

Z równania (2b) dostajemy

vn − vn−1 = an−1h . (4)

Po podstawieniu do (3) i po uporzadkowaniu dostajemy

xn+1−xnh − xn−xn−1

h

h= 1

2(an + an−1) . (5)

W granicy h → 0+ odtwarzamy równanie (1).

8. Algorytmy Verleta 4

Page 5: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Jesli przyspieszenie w (1) nie zalezy od predkosci, macierz wzmocnienia dlametody (2) ma postac

G =

[I+ 1

2Jh2 h

Jh I

], (6)

gdzie Jij = ∂ai/∂xj

∣∣∣tn

jest Jakobianem przyspieszen po połozeniach. Widac,iz metoda (2) moze miec bardzo powazne problemy ze stabilnoscia.

8. Algorytmy Verleta 5

Page 6: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Przykład

Za pomoca algorytmu (2) rozwiazujemy numerycznie dwuwymiarowy problemKeplera:

x = −grad(− 1

|x|

), x(0) = [2,0]T , v(0) = [0,1/4]T .

Rysunek pokazuje wyniki symulacji z krokiem h = 2−16. Widac, iz orbita jestniestabilna. Dla innych warunków poczatkowych wynik mógłby byc nieco inny,ale orbita tez nie byłaby stabilna.

8. Algorytmy Verleta 6

Page 7: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

8. Algorytmy Verleta 7

Page 8: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Klasyczny algorytm Verleta

Spróbujmy wyprowadzic metode całkowania równania (1) w sposób bardziej sys-tematyczny. Zakładamy, ze przyspieszenia nie zaleza od predkosci. Dokonu-jemy nastepujacych rozwiniec w szereg Taylora:

x(tn+h) = x(tn) +dx

dt

∣∣∣∣tn

h +1

2

d2x

dt2

∣∣∣∣∣tn

h2 +1

6

d3x

dt3

∣∣∣∣∣tn

h3 + O(h4) (7a)

x(tn−h) = x(tn)− dx

dt

∣∣∣∣tn

h +1

2

d2x

dt2

∣∣∣∣∣tn

h2 − 1

6

d3x

dt3

∣∣∣∣∣tn

h3 + O(h4) (7b)

Po dodaniu równan (7) stronami i uporzadkowaniu wyrazów otrzymujemy

xn+1 = 2xn − xn−1 + anh2 + O(h4) . (8)

Algorytm (8) zwany jest metoda (algorytmem) Verleta (Verlet 1967).8. Algorytmy Verleta 8

Page 9: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Zauwazmy, iz metoda Verleta jest metoda wielokrokowa — do obliczeniaprzyszłej wartosci x potrzebna jest znajomosc obecnej oraz poprzedniej war-tosci x.

W celu pokazania, iz algorytm Verleta jest zgodny z równaniem (1), przekształ-camy równanie (8) do postaci

xn+1−xnh − xn−xn−1

h

h= an . (9)

I znów, w granicy h → 0+ odtwarzamy równanie (1).

8. Algorytmy Verleta 9

Page 10: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Z uwagi na to, ze jest to metoda wielokrokowa, stabilnosc algorytmu Verleta badasie nieco inaczej niz stabilnosc dotad poznanych algorytmów. Dla uproszczenianotacji przyjmijmy na chwile, iz interesuje nas wyłacznie przypadek jednowymia-rowy. Propagacja błedu opisana jest wówczas równaniem

εn+1 = (2 + λ)εn − εn−1 , (10)

gdzie λ = da/dx|tn h2. Równanie (10) mozemy przedstawic w postaci†[

εn+1εn

]= G

[εn

εn−1

]=

[2 + λ −1

1 0

] [εn

εn−1

]. (11)

†Wielokrokowa propagacja błedu jest jednokrokowa w przestrzeni o odpowiednio wiekszej ilosciwymiarów!

8. Algorytmy Verleta 10

Page 11: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Widac zatem, iz algorytm Verleta jest stabilny, jezeli

|g±| = 12

∣∣∣∣2 + λ±√

4λ + λ2∣∣∣∣ < 1 . (12)

Rozwazmy trzy przypadki:

1. −4 6 λ 6 0. Wówczas 4λ + λ2 6 0.

g± = 1 + 12λ± i

2

√∣∣∣4λ + λ2∣∣∣ ,

|g±|2 = = 1 + λ + 14λ2 + 1

4

∣∣∣4λ + λ2∣∣∣

= 1 + λ + 14λ2 − 1

4(4λ + λ2) ≡ 1 .

Algorytm jest zatem neutralnie (marginalnie) stabilny , co oznacza, ze błedynie sa co prawda tłumione, ale tez nie narastaja i nie prowadza do rozbiez-nosci.

8. Algorytmy Verleta 11

Page 12: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

2. λ > 0. Wówczas g+ > 1.

3. λ < −4. Wówczas g− < −1.

Rekapitulujac, dla ruchu jednowymiarowego klasyczny algorytm Verleta jestmarginalnie stabilny dla da/dx|tn h2 ∈ [−4,0] i niestabilny poza tym prze-działem.

Wady algorytmu Verleta

• Dziwne traktowanie predkosci — predkosc w kroku n znana jest dopiero poobliczeniu połozenia w kroku n + 1. W symulacjach znajomosc predkosci

8. Algorytmy Verleta 12

Page 13: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

nie jest potrzebna do obliczania sił, ale jest potrzebna do obliczania energiikinetycznej, temperatury, cisnienia itp. Predkosc obliczana jest ze wzoru

vn =xn+1 − xn−1

2h, (13)

• We wzorze (8) róznica dwu „duzych” wyrazen rzedu O(h0) jest dodawanado „małego” wyrazenia rzedu O(h2), co moze prowadzic do znacznej utratydokładnosci numerycznej.

Zauwazmy, ze wyrazenie (13) jest symetryczne w czasie; próba obliczania vn =

(xn − xn−1)/h łamałaby symetrie odwrócenia w czasie, a przeciez równaniamechaniki (bez sił zaleznych od predkosci) sa mikroskopowo odwracalne!

8. Algorytmy Verleta 13

Page 14: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Algorytm leap–frog („zabiego skoku”)

Spsobem na obejscie (niektórych) trudnosci z algorytmem Verleta jest algorytmleap–frog (Hockney 1970), w którym predkosci obliczane sa w czasach posred-nich pomiedzy połozeniami‡:

v(tn + 1

2h)

= v(tn − 1

2h)+ han , (14a)

xn+1 = x(tn + h) = xn + hv(tn + 1

2h)

. (14b)

Predkosci obliczane sa według wzoru

vn = 12

[v

(tn − 1

2h)+ v

(tn + 1

2h)]

. (15)

‡Zaby wcale tak nie skacza.

8. Algorytmy Verleta 14

Page 15: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Zgodnosc algorytmu leap–frog

Aby sprawdzic czy algorytm leap–frog jest zgodny, nalezy z (14) wyeliminowacpredkosci. Po podstawieniu pierwszego z równan (14) do drugiego dostajemy

xn+1 = xn + hv(tn − 1

2h)+ h2an . (16)

Drugie z równan (14) przesuniete w tył w czasie daje

hv(tn − 1

2h)= xn − xn−1 . (17)

Ostatecznie

xn+1 = 2xn − xn−1 + h2an . (18)

Równanie (18) ma taka sama postac co równanie (8), widzimy zatem, iz algo-rytm leap–frog jest algebraicznie równowazny algorytmowi Verleta, a wiec jestzgodny z równaniem (1). Nie oznacza to jednak, iz numeryczne rezultaty zas-tosowania obu tych algorytmów sa takie same!8. Algorytmy Verleta 15

Page 16: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Stabilnosc algorytmu leap–frog

Wyrazenia na propagacje błedu w algorytmie leap–frog maja postac

ηn+1/2 = ηn−1/2 + hJεn , (19a)

εn+1 = εn + h ηn+1/2 , (19b)

gdzie Jij = ∂ai/∂xj

∣∣∣tn

. Pod wzgledem propagacji błedu metoda leap–frogzachowuje sie jak metoda pół-niejawna! Ostatecznie macierz wzomocnienia mapostac

G =

[I hJ

hI I+ h2 J

]. (20)

8. Algorytmy Verleta 16

Page 17: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Dla przypadku jednowymiarowego otrzymujemy stad

g± =2 + λ±

√4λ + λ2

2, (21)

gdzie, jak poprzednio, λ = da/dx|tn h2. Jest to identyczne z analogicznymwyrazeniem dla metody Verleta§, a zatem własnosci stabilnosci metody leap-frogi metody Verleta sa — co najmniej w przypadku jedowymiarowym — identyczne.

§Co nie dziwi wobec algebraicznej równowaznosci tych metod.

8. Algorytmy Verleta 17

Page 18: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Cechy algorytmu leap–frog:

, Róznica dwu duzych wielkosci nie jest porównywana z mała.

, Predkosc 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łów-kowym).

/ Przyspieszenia (siły) nie moga zalezec od predkosci.

/ Predkosci nadal obsługiwane sa dosc dziwacznie.

8. Algorytmy Verleta 18

Page 19: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Algorytm velocity Verlet

Problemy z dziwacznym tarktowaniem predkosci rozwiazuje kolejna modyfikacjaalgorytmu Verleta, zwana velocity Verlet (Swope et. al. 1982):

xn+1 = xn + hvn + 12h2 an , (22a)

vn+1 = vn + 12h

(an + an+1

). (22b)

Algorytm ten nie nadaje sie do sił (przyspieszen) zaleznych od predkosci.

8. Algorytmy Verleta 19

Page 20: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Uogólniony algorytm velocity Verlet

Okazuje sie, ze algorytm velocity Verlet mozna łatwo uogólnic (PFG):

xn+1 = xn + hvn + αh2 an , (23a)

vn+1 = vn + h(α an + (1− α)an+1

), (23b)

gdzie α ∈ [0,1].

8. Algorytmy Verleta 20

Page 21: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Zgodnosc algorytmu (23) z równaniem (1) pokazemy eleiminujac z (23) pred-kosci. Odejmujac od pierwszego z równan (23) to samo równanie cofniete o krokw czasie, dostajemy

xn+1 = 2xn − xn−1 + h(vn − vn−1

)+ αh2

(an − an−1

). (24)

Z kolei na mocy drugiego z równan (23),

vn − vn−1 = h(α an−1 − (1− α)an

). (25)

8. Algorytmy Verleta 21

Page 22: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Ostatecznie

xn+1 = 2xn − xn−1 + h2(α an − α an−1 + α an−1 + (1− α)an

)

= 2xn − xn−1 + h2an , (26)

a wiec znów dostajemy algebraiczna równowaznosc (uogólnionego) algorytmuvelocity Verlet i klasycznego algorytmu Verleta.

8. Algorytmy Verleta 22

Page 23: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Propagacja błedu dla sił niezaleznych od predkosci ma postac

εn+1 = εn + hηn + αh2 Jεn , (27a)

ηn+1 = ηn + hαJεn + h(1− α)Jεn+1 , (27b)

J jest jakobianem w kroku n, J jest jakobianem w kroku n+1. Jako macierzwzmocnienia dostajemy

G =

[I+ αh2 J hI

αhJ + (1− α)hJ(I+ αh2 J) I+ (1− α)h2 J

]. (28)

W przypadku jedowymiarowym, niezaleznie od wartosci parametru α, dosta-jemy takie same współczynniki wzmocnienia, jak w metodach Verleta i leap–frog, a zatem własnosci stabilnosci uogólnionej metody velocity Verlet sa takiesame, jak i innych metod Verleta.

8. Algorytmy Verleta 23

Page 24: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Dla α = 1 algorytm (23) mozna stosowac gdy przyspieszeniazaleza od predkosci!

xn+1 = xn + hvn + h2 an , (29a)vn+1 = vn + h an , (29b)

co mozna tez zapisac jako

vn+1 = vn + h an , (30a)xn+1 = xn + hvn+1 . (30b)

W tym wypadku macierz wzmocnienia ma postac

G =

[I+ h2 Jx h I+ h2 Jv

hJx I+ hJv

], (31)

8. Algorytmy Verleta 24

Page 25: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

gdzie Jx, Jv oznaczaja, odpowiednio, jakobiany po połozeniach i predkosciach.

W przypadku jednowymiarowym dostajemy

g± = 12

(2 + λ + γ ±

√4λ + (λ + γ)2

), (32)

gdzie λ = ∂a/∂x|tn h2, γ = ∂a/∂v|tn h. Dla γ = 0 (przyspieszenia nie zalezaod predkosci) daje to oczywiscie to samo, co inne metody Verleta, czyli mar-ginalna stabilnosc dla λ ∈ [−4,0], γ = 0. Dla γ < 0 i λ < 0 otrzymujemyograniczony obszar absolutnej stabilnosci.

8. Algorytmy Verleta 25

Page 26: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Obszar stabilnosci dla uogólnionej metody velocity Verletw przypadku jednowymiarowym

-1.2

-1.0

-0.8

-0.6

-0.4

-0.2

0.0

-4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0

γ

λ

8. Algorytmy Verleta 26

Page 27: Zaawansowane metody numeryczne Komputerowa analiza ...th- · wyrazeniem dla metody Verleta˙ x, a zatem własnosci stabilno´ sci metody leap-frog´ i metody Verleta sa˛— co najmniej

Inna modyfikacja algorytmu velocity Verlet

Opublikowano kilka modyfikacji algorytmu Verleta przeznaczonych do rozwiazy-wania równan z przyspieszeniami (siłami) zaleznymi od predkosci. Najczes-ciej uzywana pochodzi z pracy R. D. Groot, P. B. Warren, Dissipative particledynamics: Bridging the gap between atomistic and mesoscopic simulations,J. Chem. Phys. 107, 4423 (1997). Jest to algorytm typu predyktor-korektor :

xn+1 = xn + hvn + 12h2an , (33a)

predyktor: v = vn + βhan , (33b)

a = a(xn+1, v

), (33c)

korektor: vn+1 = vn + 12h

(an + a

), (33d)

gdzie β ∈ [0,1]. W przeciwienstwie do algorytmu (29), algorytm (33) wymagadwu obliczen przyspieszenia na krok czasowy.8. Algorytmy Verleta 27