A. Bittracher Programmierpraktikum: Numerik von ODEs (MA9502) Übungsblatt 10 29. Juni 2015 Aufgabe 16 (Hamiltonsche Partikelsysteme und symplektische Integratoren) Die Bewegung eines Systems von N miteinander interagierenden Partikeln kann häufig durch die sogenannte Hamiltonfunktion H(x, p) := N X pi | pi i=1 mi + V (x) beschrieben werden. Dabei ist xi die Position und pi der Impuls des i-ten Partikels (in R2 oder R3 ). V ist die potentielle Energie des Systems, welche die Interaktionen zwischen den Partikeln beschreibt. Die Hamiltonfunktion führt letztendlich auf die bekannten Newton’schen Bewegungsgleichungen für die Positionen xi und Geschwindigkeiten vi der einzelnen Partikel: ẋi = vi , mi · v˙i = Fi (x) i = 1, . . . , N (1) mit Fi (x) = ∇xi V (x). Eine wichtige Eigenschaft der analytischen Lösung von (1) ist die Erhaltung von H (Energieerhaltung): d H q(t), p(t) = 0 (mit pi (t) = mi · vi (t)). dt Für die Simulation von (1) verwenden wir zwei Datenstrukturen: • Die Daten eines einzelnen Partikels sollen in einer struct gespeichert werden: Particle_1 = struct(... 'm',1,... 'x',[0;0],... 'v',[0;0],... 'F',[0;0],... 'info','Sonne'... ); Particle_2 = ... % % % % % Masse Position Geschwindigkeiten aktuell wirkende Kraft zus. Info • Das komplette System wird dann in einer cell untergebracht: ParticleList = cell(d,1) ParticleList{1} = Particle_1; ParticleList{2} = Particle_2; ... (a*) Schreiben Sie eine Funktion ParticleList = function updateForce(Force,ParticleList) die die aktuellen Kraftvektoren berechnet, die auf die einzelnen Partikel in ParticleList wirken und sie in die F-Felder schreibt. Die Art der wirkenden Kraft wird durch das Funktionshandle Force festgelegt, welche für zwei Partikel die zwischen Ihnen wirkende skalare Kraft berechnet. Orientieren Sie sich am Beispiel GraviForce (Homepage). Welche Komplexität besitzt updateForce? (b*) Implementieren Sie das semi-implizite Euler-Verfahren sowie das GeschwindigkeitsStörmer-Verlet-Verfahren zur Integration von Hamiltonschen Differentialgleichungen (siehe Tafelanschrieb). Hinweis: Sie können sich am bereits fertig implementierten ExplicitEuler (Homepage) orientieren. (c*) Simulierren und visualisieren Sie das nachfolgende (zweidimensionale)Himmelskörpersystem mit den drei in (b) erwähnten Verfahren. Sonne Erde Jupiter Halleyscher Komet Parameter m=1 m = 3.0 · 10−6 m = 9.55 · 10−4 m = 1.0 · 10−14 t0 = 0 x0 = (0, 0)| x0 = (0, 1)| x0 = (0, 5.36)| x0 = (34.75, 0)| tend = 468.5 v 0 = (0, 0)| v 0 = (−1, 0)| v 0 = (−0.425, 0)| v 0 = (0, 0.0296)| τ = 0.015 Die Längeneinheit ist “mittlerer Abstand Erde – Sonne”, die Geschwindigkeitseinheit “mittlere Bahngeschwindigkeit der Erde”, die Masseneinheit “Masse der Sonne”. In diesen Einheiten ist die Gravitationskonstante G = 1 (warum)? Plotten Sie die Gesamtenergie des Systems über die Zeit für die drei Verfahren. Interpretieren Sie das Ergebnis. Abgabedatum: 05.07.2015 Die Lösungen der mit (*) markierten Aufgaben sind bis zum Abgabedatum an [email protected] zu senden. Verwenden Sie den Betreff ProgODE und erwähnen Sie in der Email Ihre Matrikelnummer!