Rozdział 5 METODY RÓŻNICOWE CAŁKOWANIA RÓWNAŃ

Transkrypt

Rozdział 5 METODY RÓŻNICOWE CAŁKOWANIA RÓWNAŃ
Janusz Adamowski
METODY OBLICZENIOWE FIZYKI
1
Rozdział 5
METODY RÓŻNICOWE
CAŁKOWANIA RÓWNAŃ
RUCHU MECHANIKI
KLASYCZNEJ
5.1
Wstęp
Równania Newtona dla jednej cząstki w jednym wymiarze
dx
=v,
(5.1)
dt
dv
=a.
(5.2)
dt
Rozwiązanie lokalne polega na podaniu procedury rekurencyjnej wiążącej
wartości położenia xn+1 i prędkości vn+1 w kroku (n + 1)-ym z wartościami
tych wielkości w kroku n-tym, czyli z xn i vn , przy czym
xn = x(tn ) , vn = v(tn ) , tn+1 = tn + h .
5.2
(5.3)
Metoda Eulera
xn+1 = xn + vn h + O(h2 ) ,
(5.4)
vn+1 = vn + an h + O(h2 ) .
(5.5)
Jest yo metoda samostartująca, co oznacza, że znając położenie i prędkość w
chwili tn możemy wyznaczyć te wielkości w chwili tn+1 .
2
Rozdział 5. Równania ruchu mechaniki klasycznej
5.3
Metoda Eulera-Cromera
vn+1 = vn + an h + O(h2 )
(5.6)
xn+1 = xn + vn+1 h + O(h2 ) .
(5.7)
oraz
5.4
Metoda punktu pośredniego
vn+1 = vn + an h + O(h2 )
xn+1 = xn + vn h +
h2
an + O(h3 ) .
2
(5.8)
(5.9)
Jest to metoda samostartująca.
5.5
Metoda Newtona-Feynmana
Wprowadzamy chwile pośrednie tn+1/2 .
vn+1/2 = vn−1/2 + an h + O(h3 )
(5.10)
xn+1 = xn + vn+1/2 h + O(h3 ) .
(5.11)
oraz
Metoda ta nie jest metodą samostartującą. W celu wyznaczenia v1/2 należy zastosować jakąkolwiek inną metodę samostartującą, np. metodę Eulera,
zgodnie z którą
1
v1/2 = v0 + a0 h .
(5.12)
2
5.6
5.6.1
Algorytmy Verleta
Podstawowy algorytm Verleta
xn+1 = 2xn − xn−1 + an h2 + O(h4 )
xn+1 − xn−1
+ O(h2 )
2h
Algorytm ten nie jest samostartujący.
vn =
(5.13)
(5.14)
Janusz Adamowski
5.6.2
METODY OBLICZENIOWE FIZYKI
3
Prędkościowa forma algorytmu Verleta
(zmodyfikowany algorytm Verleta)
1
xn+1 = xn + vn h + an h2 + O(h3 ) .
2
(5.15)
1
vn+1 = vn + (an + an+1 )h + O(h2 ) .
2
(5.16)
Jest to algorytm samostartujący.
5.6.3
Przestępny algorytm Verleta
Angielska nazwa algorytmu (leap-frog formulation of the Verlet algorithm.
Algorytm polega na kolejnym użyciu następujących wzorów:
vn−1/2 =
xn − xn−1
+ O(h2 ) ,
h
(5.17)
vn+1/2 = vn−1/2 + han + O(h2 ) ,
(5.18)
xn+1 = xn + hvn+1/2 + O(h2 ) ,
(5.19)
1
vn = (vn−1/2 + vn+1/2 ) + O(h2 ) .
2
(5.20)
Jest to algorytm samostartujący, często używany w dynamice molekularnej.
5.7
Algorytm Beemana-Schofielda
h2
(4an − an−1 ) + O(h4 ) ,
6
(5.21)
h
vn+1 = vn + (2an+1 + 5an − an−1 ) + O(h3 ) .
6
(5.22)
xn+1 = xn + vn h +
Algorytm ten nie jest samostartujący.
4
Rozdział 5. Równania ruchu mechaniki klasycznej
5.8
Metoda predykcji-korekcji
Przewidujemy nowe położenie jako
x̃n+1 = xn−1 + 2hvn .
(5.23)
Wyznaczamy przewidywane przyspieszenie ãn+1
ãn+1 =
1
F (x̃n+1 ) .
m
(5.24)
Używamy ãn+1 w celu wyznaczenia poprawionych (skorygowanych) wartości
vn+1 i xn+1
1
vn+1 = vn + (ãn+1 + an )h ,
(5.25)
2
1
xn+1 = xn + (vn+1 + vn )h .
(5.26)
2
Proces iteracyjny przebiega następująco:
(5.24) =⇒ (5.25) =⇒ (5.26) =⇒ (5.24) =⇒ (5.25) . . . .
Iteracje są powtarzane dotąd, aż spełniona zostanie nierówność
|x̃n+1 − xn+1 | < ε ,
gdzie ε jest żądaną dokładnością. Metoda ta nie jest samostartująca.
5.9
Metoda Runge’go-Kutty drugiego rzędu
kv
) + O(h3 )
(5.27)
2
kx
vn+1 = vn + ha(xn + ) + O(h3 )
(5.28)
2
Otrzymany algorytm jest samostartujący.
W trakcie wykonywania algorytmu należy wyznaczyć następujące pomocnicze wielkości:
kx = hvn ,
(5.29)
xn+1 = xn + h(vn +
kv = han .
(5.30)

Podobne dokumenty