Einführung in die Numerik Prof. Dr. M. J. Grote / Dr. M. Kray Mathematik, FS 2014 Universität Basel Projekt: Einführung in die Numerik Dynamische Systeme und das Sonnensystem 1 Einführung Differentialgleichungen, also Gleichungen, in der eine gesuchte Funktion und einige ihrer Ableitungen vorkommen, gehören zu den wichtigsten Mitteln, um Naturgesetze zu beschreiben. Da es in vielen Fällen nicht möglich ist, eine exakte Lösung analytisch zu berechnen, sind effiziente und möglichst genaue numerische Approximationen bei der Modellierung von Phänomenen aus Natur und Technik von grosser Bedeutung. In der folgenden Beschreibung leiten wir ein Differentialgleichungssystem für das Sonnensystem mithilfe physikalischer Gesetze her und stellen einige numerische Verfahren vor. Im Anschluss werden verschiedene Aufgaben gestellt, die zu bearbeiten sind. 2 Das Keplersche Sonnensystem Wir betrachten einen Planeten auf seiner Umlaufbahn um die Sonne, dessen Bewegung durch die Newtonschen Gesetze bestimmt ist: m wobei t V m M R ~ur ~uθ GM m dV~ = − ~ur , dt R2 Zeit (in Jahren), Geschwindigkeit des Planeten (zeitabhängig, V (t)), Gewicht des Planeten, Gewicht der Sonne, Absolute Entfernung zwischen Sonne und Planet, Normierter Vektor der radialen Komponente, Normierter Vektor der tangentialen Komponente. Zur Vereinfachung betrachten wir dieses System in dimensionslosen Variablen, nehmen an, dass m im Vergleich zu M vernachlässigbar ist, und setzen M = 1. Die Entfernung r(t) ist nun r := R/R0 , wobei R0 einen typischen Wert darstellt. 1 In Polarkoordinaten ist die Beschleunigung dV~ dt = d (u~ur + v~uθ ) dt d ṙ~ur + rθ̇~uθ = dt = r̈~ur + ṙθ̇~uθ + ṙθ̇~uθ + rθ̈~uθ − rθ̇2~ur 2 = r̈ − rθ̇ ~ur + 2ṙθ̇ + rθ̈ ~uθ , und die Schwerkraft 1 F~ (r) = − 2 ~ur . r Dies führt auf das folgende dynamische System zweier Differentialgleichungen zweiter Ordnung: r̈ = rθ̇2 − 1 , (1) r2 rθ̈ = −2ṙθ̇. Wir setzen nun u = ṙ und v = rθ̇, um ein dynamisches System erster Ordnung zu erhalten: ṙ = u, θ̇ = v , r 2 1 v − 2, u̇ = r r v̇ = − vu . r (2) Bemerkung: Die mechanische Energie ist konstant, da Em (t) = Ec (t) + Ep (t) 1 2 1 1 1 = (u + v 2 ) − = (ṙ2 + (rθ̇)2 ) − 2 r 2 r = konst. (3) Man kann also die Genauigkeit eines numerischen Verfahrens durch Berechnen der Energie überprüfen. Für jede Umlaufbahn müssen die Anfangsposition (r0 , θ0 ) und die Anfangsgeschwindigkeit (u0 , v0 ) gegeben werden. Dabei werden u0 = θ0 = 0 gesetzt. Um noch r0 und v0 zu setzen, wählen wir das Perihel (kleinste Entfernung zur Sonne) oder das Aphel (grösste Entfernung zur Sonne). Dort ist die Kreisbahngeschwindigkeit v0 , also jene Geschwindigkeit, die einer geschlossenen Umlaufbahn um die Sonne entspricht, durch folgende Formeln gegeben: r0 = P0 √ r0 = A0 √ 1 1 − e2 1 1 − e2 für das Perihel oder für das Aphel. v0 = √ v0 = √ a0 1 − e a0 1 + e 2 Planet Merkur Venus Erde Mars Jupiter Saturn Uranus Neptun Grosse Halbachse a0 0.3871 0.72333 1 1.52366 5.20336 9.53707 19.1913 30.0690 Perihel P0 Aphel A0 Exzentrizität e 0.30749951 0.46669835 0.205631 0.71843270 0.72823128 0.006773 0.9832899 1.0167103335 0.016710 1.38133346 1.66599116 0.093412 4.95 5.46 0.048393 9.02063224 10.05350840 0.054151 18.37551863 20.08330526 0.047168 29.76607095 30.44125206 0.008586 Tabelle 1: Daten der Planeten. 3 Numerische Verfahren Wir betrachten ein Finite Differenzen Verfahren, das Ableitungen durch Differenzenquotienten approximiert. Sei ∆t > 0 die Schrittweite des Verfahrens und ẋn (t) ' xn+1 − xn , ∆t xn ' x(n∆t). (4) Wir wenden nun diese Diskretisierung auf das dynamische System zweier Differentialgleichungen erster Ordnung ( ẋ = f1 (x, y), (5) ẏ = f2 (x, y), an: n+1 x − xn = f1 (xn , y n ), ∆t (6) n+1 − yn n n y = f2 (x , y ). ∆t Dieses Verfahren ist jedoch im Allgemeinen instabil. Stattdessen werden wir ein semi-implizites Verfahren benutzen. Dazu verwenden wir in der 2. Gleichung von (6) nicht die alte Lösung xn sondern die aktualisierte Lösung xn+1 , n+1 x = xn + ∆t f1 (xn , y n ), (7) y n+1 = y n + ∆t f2 (xn+1 , y n ). Bemerkung: Diese zwei Verfahren sind als Euler-Verfahren und Euler-Cromer-Verfahren bekannt. Um das Problem vollständig zu definieren, müssen noch Anfangsbedingungen {x0 = x0 , y 0 = y0 } definiert sein. 4 Aufgaben Ziel ist die Lösungen der Sonnensystem-Gleichungen (2) mit verschiedenen Verfahren zu berechnen. Dabei betrachten wir die Umlaufbahn der Erde um die Sonne und nehmen an, dass die Sonne im Zentrum (0, 0) liegt. 3 Aufgabe 1. Diskretisierung der Sonnensystem-Gleichungen 1. Diskretisiere (2) mit Finiten Differenzen und schreibe das Verfahren in der Form: n+1 n n n n rn+1 = f1 (rn , θn , un , v n ), θ = f2 (r , θ , u , v ), n+1 u = f3 (rn , θn , un , v n ), n+1 v = f4 (rn , θn , un , v n ), wobei die Funktionen f1 , f2 , f3 und f4 noch definiert werden müssen. 2. Schreibe eine Matlab-Funktion function SonnenSystem(r0, theta0, u0, v0, T, dt), um das obige Gleichungssystem numerisch zu lösen, wobei r0, theta0 die Anfangsposition, u0, v0 die Anfangsgeschwindigkeiten, T die Zeit der Simulation und dt die Schrittweite sind. Diese Funktion soll auch die Trajektorien (x(t), y(t)) und die Energie E(t) zeichnen. Dazu benutze neue Variabeln x = r.*cos(theta); y = r.*sin(theta); und Formel (3) für die Energie. 3. Vergleiche die Energie für T/(2*pi) = 10 und T/(2*pi) = 100 im Fall der Erde. Was kannst Du über das Langzeitverhalten des Verfahrens sagen? Aufgabe 2. Modifizierte Verfahren 1. Implementiere nun verschiedene modifizierte Funktion, z.B. n+1 r = f1 (rn , θn , un , v n ) n+1 θ = f2 (rn+1 , θn , un , v n ) oder un+1 = f3 (rn+1 , θn+1 , un , v n ) n+1 v = f4 (rn+1 , θn+1 , un+1 , v n ) Verfahren wie in (7) in Deiner SonnenSystem n+1 u n+1 v rn+1 n+1 θ = = = = f3 (rn , θn , un , v n ) f4 (rn , θn , un+1 , v n ) f1 (rn , θn , un+1 , v n+1 ) f2 (rn+1 , θn , un+1 , v n+1 ) usw... Dabei ist die Reihenfolge der Gleichungen jetzt wichtig. Aufgabe 3. Spline-Interpolation Um Rechenzeit zu sparen, möchten wir weniger Schritte durchführen. Dazu verwenden wir dt=0.5 und die natürliche Spline-Interpolation, um zwei berechnete Punkte zu verbinden. 1. In Deiner SonnenSystem-Funktion seien t, x, und y die Zeit und die Koordinaten der Erde. Füge nun eine neue Variable tt ein, welche die Zeit auf einem verfeinerten Gitter darstellt. Dann berechne die Koordinaten xx und yy auf dem neuen feineren Gitter mit der SplineInterpolation. 2. Nutze den Befehl pause, um die Umlaufbahn der Erde als Film in Matlab zu visualisieren. 3. Wähle einen anderen Planeten aus der Tabelle 1 und berechne dessen Umlaufbahn mit Deiner Matlab-Funktion. Aufgabe 4. Der Bericht Schreibe einen 3-5 seitigen Bericht, in dem Du Deine Resultate dokumentierst und erläuterst. Hierfür findest Du eine LATEX-Vorlage auf der Webseite des Projekts. Das Abgabedatum ist der 16. Juni 2014. In der Woche der 23.-27. Juni musst Du einen Termin für eine Besprechung mit M. Kray abmachen. (30 Min) Allgemeine Informationen zum Projekt befinden sich unter dem Link “Projekt: Einführung in die Numerik” auf der Webseite http://math.unibas.ch/institut/personen/profil/profil/person/kray/ 4