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)