Blatt 10

Werbung
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!
Herunterladen