Gelöste Aufgaben/T3BP
Aufgabenstellung
Sie untersuchen das „Three-Body-Problem“(vgl. Wikipedia) numerisch. Dabei sollen die Bahnen von drei Körper mit den Punktmassen m1, m2, m3 in Wechselwirkung miteinander berechnet werden.
Gesucht ist die Lösung des Anfangswertproblems für verschiedene Anfangswerte (Orte und Geschwindigkeiten) und Massen mi der Körper.
Lösung mit Matlab®
Die Lösung mit Matlab erfordert keine großen algebraischen Vorbereitungen - für die wir Maxima einsetzten würden. Als äußere Kräfte treten nur die Feldkräfte der Gravitation zwischen den Körpern auf - die wir einfach einschreiben und in Matlab implementieren können.
Declarations
Wir implementieren die Lösung in Matlab. Dafür verwenden wir das script T3BP.m
, das die Funktionen
preprocess.m
,solve.m
undpostprocess.m
aufruft. Die Klasse
planets.m
verwenden wir nur, um die Systemparameter "sys
" bequem ansprechen zu können.
T3BP
|- preprocess
|- class sys=planets(data)
|- solve
|- postprocess
Equilibrium Conditions
Die Gravitationskräfte zwischen den Körpern i und j erfassen wir mit
mit der Gravitationskonstanten
- Fehler beim Parsen (Syntaxfehler): {\displaystyle G = 6.674 \cdot 10^{\displaystyle −11}} .
Dabei gehen die Wirkungslinien der Kräfte durch die Massenmittelpunkte der Körper, die Körper ziehen sich gegenseitig an. Damit ist
- ,
wobei der Einheitsvektor der Anziehungskraft - in diesem Fall von i nach j - ist.
Die Bewegungsgleichungen schreiben wir in Vektorschreibweise für Körper i als
- .
Dabei ist z.B. i=1 und =2,3.
Die drei Bewegungsgleichungen in den drei räumlichen Koordinaten ui formulieren wir in dimensionslosen Koordinaten. Dafür brauchen wir drei unabhängige Referenzgrößen, hier wählen wir
Uns fehlt noch die Referent-Zeit T, die wir aus
erhalten.
Damit können wir schreiben:
Einsetzen und Kürzen liefert uns dann die dimensionslosen Bewegungsgleichungen
- .
function dydt = t3bpdydt(t,y,sys)
% implementation of ode
% params hold system parameters
% get coordinates
for body = 1:3
u(body,1:3) = transpose(y(3*(body-1)+1:3*body,1));
end
r = zeros(3,3,3);
e = zeros(3,3,3);
% compose vectors, unit vectors and distances
r(1,2,:) = u(2,:)-u(1,:); % this from m[1] to m[2]
:
:
:
% mass 3
dydt(9+7:9+9,1)=sys.theta(1)/R(3,1)*e(3,1,:)+sys.theta(2)/R(3,2)*e(3,2,:);
%% velocities
dydt(1:9,1) = y(10:18,1);
%%
waitbar(t / sys.tEnd);
end
Solving
Text
1+1
Matlab©-files
Die Datei-Struktur zeit das Skript T3BP.m. Classes und Functions sind in den jeweiligen Ordnern. Die Excel-Datei hält alle System-Parameter.
Den komplette Quellcode zu diesem Programm können Sie über dieses ZIP-File rechts herunterladen.
download compressed archive →
Post-Processing
Text
1+1
Links
- ...
Literature
- ...