Gelöste Aufgaben/T3BP: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 14: | Zeile 14: | ||
== Lösung mit Matlab® == | == 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. | |||
<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Declarations | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Declarations | ||
|text= | |text=Wir implementieren die Lösung in Matlab. Dafür verwenden wir das script <code>T3BP.m</code>, das die Funktionen | ||
* <code>preprocess.m</code>, | |||
* <code>solve.m</code> und | |||
* <code>postprocess.m</code> | |||
aufruft. Die Klasse | |||
* <code>planets.m</code> | |||
verwenden wir nur, um die Systemparameter "<code>sys</code>" bequem ansprechen zu können. | |||
|code= | |code= | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="notmuch" line start=1> | ||
T3BP | |||
|- preprocess | |||
|- class sys=planets(data) | |||
|- solve | |||
|- postprocess | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Equilibrium Conditions | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Equilibrium Conditions | ||
|text=Die Bewegungsgleichungen schreiben wir in Vektorschreibweise für Körper <i>i</i> als | |text=Die Gravitationskräfte zwischen den Körpern <i>i</i> und <i>j</i> erfassen wir mit | ||
::<math>F = G \cdot \frac{\displaystyle m_i\cdot m_j}{\displaystyle r_{i,j}^2}</math> | |||
mit der [https://en.wikipedia.org/wiki/Gravitational_constant Gravitationskonstanten] | |||
::<math>G = 6.674 \cdot 10^{\displaystyle −11} \frac{\displaystyle m^3}{\displaystyle kg⋅s^2}</math>. | |||
Dabei gehen die Wirkungslinien der Kräfte durch die Massenmittelpunkte der Körper, die Körper ziehen sich gegenseitig an. | |||
Damit ist | |||
::<math>\vec{F} = F\cdot \vec{e}_{i,j}</math>, | |||
wobei <math>\vec{e}_{i,j}</math> der Einheitsvektor der Anziehungskraft - in diesem Fall von <i>i</i> nach <i>j</i> - ist. | |||
Die Bewegungsgleichungen schreiben wir in Vektorschreibweise für Körper <i>i</i> als | |||
::<math> m_i \dot \ddot{\vec{u}}_i = \sum_{\ell=j,k} G\cdot \frac{\displaystyle m_i\cdot m_\ell}{\displaystyle r_{i,\ell}^2} \dot \vec{e}_{i,\ell} \text{ mit } | ::<math> m_i \dot \ddot{\vec{u}}_i = \sum_{\ell=j,k} G\cdot \frac{\displaystyle m_i\cdot m_\ell}{\displaystyle r_{i,\ell}^2} \dot \vec{e}_{i,\ell} \text{ mit } | ||
\vec{u}_i = \left(\vec{e}_x,\vec{e}_y,\vec{e}_z\right)\cdot \underbrace{\left(\begin{array}{l}u_x\\u_y\\u_z\end{array}\right)}_{\displaystyle = \underline{u}_i}</math>. | \vec{u}_i = \left(\vec{e}_x,\vec{e}_y,\vec{e}_z\right)\cdot \underbrace{\left(\begin{array}{l}u_x\\u_y\\u_z\end{array}\right)}_{\displaystyle = \underline{u}_i}</math>. | ||
Zeile 45: | Zeile 56: | ||
M&=&m_1&\text{ Referenz-Masse}\\ | M&=&m_1&\text{ Referenz-Masse}\\ | ||
L&=&1.6 10^{11} \text{km}&\text{ Referenz-Länge: der Durchmesser unseres Sonnensystems und}\\ | L&=&1.6 10^{11} \text{km}&\text{ Referenz-Länge: der Durchmesser unseres Sonnensystems und}\\ | ||
F&=& G\cdot \frac{\displaystyle m_1\cdot m_1}{\displaystyle L^2}& \text{Referenz-Kraft} | F&=& G\cdot \frac{\displaystyle m_1\cdot m_1}{\displaystyle L^2}& \text{ Referenz-Kraft} | ||
\end{array}. | \end{array}. | ||
</math> | </math> | ||
Uns fehlt noch die Referent-Zeit <i>T</i>, die wir aus | |||
::<math> | ::<math> | ||
F = \frac{\displaystyle m_1\cdot L}{\displaystyle T^2} \text{ zu } T = \sqrt{\frac{\displaystyle m_1\cdot L}{\displaystyle F}} | F = \frac{\displaystyle m_1\cdot L}{\displaystyle T^2} \text{ zu } T = \sqrt{\frac{\displaystyle m_1\cdot L}{\displaystyle F}} | ||
Zeile 64: | Zeile 75: | ||
</math> | </math> | ||
Einsetzen und Kürzen liefert uns dann die dimensionslosen Bewegungsgleichungen | Einsetzen und Kürzen liefert uns dann die dimensionslosen Bewegungsgleichungen | ||
::<math> \ddot{\underline{U}}_i = \sum_{\ell=j,k} \frac{\displaystyle \theta_\ell}{\displaystyle varrho_{i,\ell}^2} \dot \underline{e}_{i,\ell} </math>. | ::<math> \ddot{\underline{U}}_i = \sum_{\ell=j,k} \frac{\displaystyle \theta_\ell}{\displaystyle \varrho_{i,\ell}^2} \dot \underline{e}_{i,\ell} </math>. | ||
|code= | |code= | ||
<syntaxhighlight lang="matlab" line start=1> | <syntaxhighlight lang="matlab" line start=1> | ||
Zeile 99: | Zeile 110: | ||
|text=Text | |text=Text | ||
|code= | |code= | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="matlab" line start=1> | ||
1+1 | 1+1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
{{MyZipfileBlock | |||
|title=Matlab<sup>©</sup>-files | |||
|text =[[Datei:matlab-folder-structure.png|links|mini|Folder Structure]]Die Datei-Struktur zeit das Skript <nowiki>T3BP.m</nowiki>. 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. | |||
|file =T3BP.zip}} | |||
<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Post-Processing | <!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Post-Processing |
Version vom 3. Oktober 2022, 08:09 Uhr
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} \frac{\displaystyle m^3}{\displaystyle kg⋅s^2}} .
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
- ...