Differentialgleichungen Viele physikalische Probleme können mathematisch als gewöhnliche Differentialgleichungen formuliert werden nur eine unabhängige Variable (meist t), z.b. Bewegungsgleichungen: gleichmäßig beschleunigte Bewegung / freier Fall: ẍ = d 2 x dt 2 = a = const. bzw. ẍ = d 2 x = g (1) dt2 Schwingungsgleichung mẍ = m d 2 x = kx (2) dt2 Lösungen sind Bahngleichungen (Trajektorien) x(t), bzw. Funktionen i.a. nicht analytisch geschlossen darstellbar, z.b. für Keplerproblem daher: numerisches Lösen, z.b. mittels Euler-Verfahren H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 1 / 20
Das Euler-Verfahren I Die Bewegungsgleichung d 2 x dt 2 = F (x, v, t) m ist eine Differentialgleichung 2. Ordnung, die nun gelöst werden soll. Formal: Integration der Bewegungsgleichung um die Bahngleichung x(t) zu erhalten. Schritt 1: Schreibe Newtonsche Bewegungsgleichung als System von Differentialgleichungen 1. Ordnung (hier 1D): (3) v(t) = dx(t) dt & a(t) = dv(t) dt = F (x, v, t) m (4) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 2 / 20
Das Euler-Verfahren II Schritt 2: Differentialgleichungen der Form (Anfangswertproblem) dy dx = f (x, y), y(x 0) = y 0 (5) lassen sich durch Diskretisierung, d.h. Umformung in eine Differenzengleichung lösen. y x f (x, y) (6) Dgl. (5) sagt aus, wie sich y am Punkt (x 0, y 0 ) ändert H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 3 / 20
Das Euler-Verfahren III wir können einen Schätzwert für y am nächsten Punkt finden, falls x hinreichend klein ist x 1 = x 0 + x (7) nehmen dafür an, dass die Änderung von y auf dem Intervall [x 0, x 1 ] konstant ist dann: y 1 = y(x 0 ) + y y(x 0 ) + f (x 0, y 0 ) x (8) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 4 / 20
Das Euler-Verfahren IV y y 1 geschätzter y-wert wahrer y-wert y 0 x 0 x 1 x H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 5 / 20
Das Euler-Verfahren V wir können dies wiederholen, um auch den Wert von y am Punkt x 2 = x 1 + x zu finden: Oder allgemein: Eulersches Polygonzugverfahren y 2 = y(x 1 + x) y(x 1 ) + f (x 1, y 1 ) x (9) y n+1 = y n + f (x n, y n ) x (10) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 6 / 20
Das Euler-Verfahren VI Warum Polygonzugverfahren? 4 3 x 3 x 4 x 5 x 6 x 7 x 8 y 2 x 1 x 2 1 x 0 0 0 1 2 3 4 5 6 7 8 9 10 x Exakte Lösung ( ) und numerische Lösung ( ). H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 7 / 20
Das Euler-Verfahren VII Für unsere Bewegungsgleichungen mit Anfangswertproblem dx dt = f (x, t), x(t 0) = x 0 (11) lässt sich das Verfahren wie folgt formulieren: Explizites Euler-Verfahren 1 Wähle Schrittweite t > 0, sodass t n = t 0 + n t, n = 0, 1, 2,... 2 Berechne die Werte (Iteration): x n+1 = x n + f (x n, t n ) t Klar: je kleiner die Schrittweite t, desto mehr Schritte notwendig, aber auch desto genauer ist das Ergebnis. H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 8 / 20
Das Euler-Verfahren VIII Für das System (4) bedeutet das Euler-Verfahren für Newtonsche Bewegungsgleichungen Wir stellen fest: v n+1 = v n + a n t (12) x n+1 = x n + v n t (13) die Geschwindigkeit am Ende des Zeitintervalls v n+1 wird bestimmt durch a n, der Beschleunigung am Anfang des Intervalls. ebenso wird x n+1 aus v n (also vom Anfang des Zeitintervalls) berechnet Wir werden den Algorithmus etwas variieren, sodass wir aber für t 0 dieselben DGln. erhalten. H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 9 / 20
Das Euler-Verfahren IX Dabei werden wir nun v n+1 zur Berechnung von x n+1 benutzen: Euler-Cromer-Verfahren (Semi-implizites Euler-Verfahren) Vorteil dieser Methode: v n+1 = v n + a n t (wie bei Euler) (14) x n+1 = x n + v n+1 t (15) wie bei Euler-Verfahren nur einmalige Berechnung von x, v nötig besonders geeignet für oszillierende Lösungen, da Energie besser erhalten wird; nämlich: Euler: E n+1 = E n (1 + t 2 ) (16) Euler-Cromer: E n+1 = E n + cos 2(t t 0 ) t 2 + O( t 3 ) (17) D.h. Term O( t 2 ) mittelt sich über eine Periode heraus, bleibt nur O( t 3 ). H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 10 / 20
Das Euler-Verfahren X Herleitung aus Fundamentalsatz der Analysis dx Integration der Dgl. = f (x, t) von t 0 bis t 0 + t (18) dt t0 + t dx t0 + t dt dt = f (x, t)dt (19) t 0 t 0 x(t 0 + t) x(t 0 ) = Anwenden der Rechteckregel t0 + t t0 + t f (x(t), t)dt (20) t 0 fürs Integral: t 0 f (x(t), t)dt t f (x(t 0 ), t 0 ) (21) Gleichsetzen von (20) und (21) liefert Euler-Schritt H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 11 / 20
Das Euler-Verfahren XI Herleitung aus Taylorreihenentwicklung x(t 0 + t) = x(t 0 ) + t dx dt (t 0) + O( t 2 ) (22) dx Nutze = f (x, t) (23) dt x(t 0 + t) = x(t 0 ) + t f (x(t 0 ), t 0 ) (24) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 12 / 20
Das Euler-Verfahren XII Eventuell ist es besser, die Geschwindigkeit für die Mitte des Intervalls zu berechnen: Euler-Richardson-Verfahren (Euler-Halbschritt-Verfahren) a n = F (x n, v n, t n )/m (25) v M = 1 v n + a n t 2 (26) 1 x M = x n + v n t (27) 2 a M = F (x M, v M, t n + 12 ) t /m (28) v n+1 = v n + a M t (29) x n+1 = x n + v M t (30) Wir benötigen nun doppelt soviele Rechenschritte, sind aber u.u. effizienter, da wir eine größere Schrittweite wählen können als beim Euler-Verfahren. H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 13 / 20
Das Runge-Kutta-Verfahren H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 14 / 20
Runge-Kutta-Verfahren 4. Ordnung I Wiederholung: Euler-Richardson-Verfahren (Euler-Halbschritt-Verfahren) a n = F (x n, v n, t n )/m (31) v M = 1 v n + a n t 2 (32) 1 x M = x n + v n t (33) 2 a M = F (x M, v M, t n + 12 ) t /m (34) v n+1 = v n + a M t (35) x n+1 = x n + v M t (36) Berechnung von F bzw. a für gesamten Schritt auf der Mitte des Intervalls, statt auf dem Anfang Runge-Kutta-Verfahren 2. Ordnung H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 15 / 20
Runge-Kutta-Verfahren 4. Ordnung II Wir wollen das Halbschritt-Verfahren verfeinern, indem wir weitere Stützstellen nutzen: H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 16 / 20
Runge-Kutta-Verfahren 4. Ordnung III Beim Runge-Kutta-Verfahren wird die Anfangswertaufgabe dy/dx = y = f (x, y), y(x 0 ) = y 0 (37) dadurch gelöst, dass für das gesuchte y(x) an ausgewählten Stützstellen x i Näherungswerte y i mittels des folgenden Schemas berechnet werden (s. Bronstein). D.h. auch hier nur lineare Terme, aber mit Polygonzug. Stützstellen am Anfang und Ende des Intervalls zwei Stützstellen in der Mitte des Intervalls mit doppeltem Gewicht H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 17 / 20
Runge-Kutta-Verfahren 4. Ordnung IV Gehe von x 0 nach x i = x 0 + ih (Schrittweite h, i = 0, 1, 2,...) Einschrittverfahren x y k = h f (x, y) = h dy/dx x 0 y 0 k 1 x 0 + h/2 y 0 + k 1 /2 k 2 x 0 + h/2 y 0 + k 2 /2 k 3 x 0 + h y 0 + k 3 k 4 x 1 = x 0 + h y 1 = y 0 + 1 6 (k 1 + 2k 2 + 2k 3 + k 4 ) Vergleiche: Simpsonregel (Keplersche Fassregel) zur Integration von y (x): b a y (x)dx b a 6 ( ( ) ) a + b y (a) + 4 y + y (b) 2 (38) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 18 / 20
Runge-Kutta-Verfahren 4. Ordnung V Für unsere Bewegungsgleichungen heißt das also: k 1v = a(x n, v n, t) t (39) k 1x = v n t (40) ( k 2v = a x n + k 1x 2, v n + k 1v 2, t n + t ) t (41) 2 ( k 2x = v n + k ) 1v t (42) 2 ( k 3v = a x n + k 2x 2, v n + k 2v 2, t n + t ) t (43) 2 ( k 3x = v n + k ) 2v t (44) 2 k 4v = a(x n + k 3x, v n + k 3v, t + t) t (45) k 4x = (v n + k 3v ) t (46) H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 19 / 20
Runge-Kutta-Verfahren 4. Ordnung VI So dass v n+1 = v n + 1 6 (k 1v + 2k 2v + 2k 3v + k 4v ) (47) x n+1 = x n + 1 6 (k 1x + 2k 2x + 2k 3x + k 4x ) (48) Runge-Kutta-Verfahren sind selbststartend H. Todt, M. Wendt (UP) Computational Physics - Einführung WiSe 2016/17 20 / 20