Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1819:sternensystem

Dies ist eine alte Version des Dokuments!



Inhaltsverzeichnis

  1. Ziel
  2. Ergebnis
  3. Dokumentation
  4. Protokoll
  5. Analyse
  6. Fazit
  7. Credits




Mithilfe von Python möchten wir ein System von Himmelskörpern simulieren, das durch die gravitativen Kräfte und andere Einflüsse berechnet wird. Die Ergebnisse sollen graphisch dargestellt werden und interaktiv nutzbar sein.

Die ermittelten Daten sollen mit Berechnungen der NASA und ESA abgeglichen werden, um so die Korrektheit der Simulation abzuschätzen. Des Weiteren möchten wir verschiedene Simulationsalgorithmen verwenden, darunter die Euler-Methode, das Leapfrog-Verfahren und das Runge-Kutta-Verfahren 4.Ordnung, um diese zu Vergleichen und entsprechend ihrer Korrektheit zu bewerten.

Im späteren Verlauf des Projekts und je nach Fortschritt können Überlegungen zu weiterführenden Fragestellungen bzw. Visualisierungen angestellt werden. Hier sind z.B. die Berechnung von Gezeitenkräften, Kollisionsparameter oder Raumschiffen in Betracht zu ziehen.




Euler-Verfahren
Euler-Verfahren

Leapfrog-Verfahren
Leapfrog-Verfahren




Voraussetzungen:
Python 3.7
SkyField 1.10
Vpython 7.4
Numpy 1.15
Itertools

Programmcode

Verfahren


Unsere Simulation ist in der Lage das n-Körperproblem mit drei verschiedenen Verfahren seperat zu lösen und so für jeden Zeitschritt die neuen Positionen zu berechnen. Die Berechnungsverfahren unterscheiden sich zum Teil deutlich in den errechneten Werten, der Genauigkeit und der Stabilität. Unsere ersten Berechnungen haben wir mit dem Euler-Verfahren erstellt. Im Folgenden haben wir das Leap-Frog Verfahren implementiert und als letzte Berechnung das Runge-Kutta Verfahren 4. Ordnung, mit einer sehr hohen Genauigkeit, geschrieben.

Euler-Verfahren


Das explizite Euler-Verfahren ist das einfachste Verfahren zur Lösung numerischer n-Körperprobleme mittels Differentialgleichungen erster Ordnung. Um die neuen Positionen der Objekte im Raum zu ermitteln, werden zu erst die Gravitationskräfte die auf ein Objekt von allen anderen Objekten aus wirken, für jedes Objekt im Raum berechnet. Durch die berechnete Gravitationskraft ist es nun möglich die Beschleunigung für jedes Objekt mithilfe des 2. newton'schen Gesetzes (F=m*a), zu berechnen

Die Gleichung für die Berechnung der Beschleunigung von multiplen Körpern:

$$ a_{ix} = \sum_{i \neq j}^{i} \frac{Gm_j}{((x_i - x_j)^2 + (y_i - y_j)^2 + (z_i - z_j)^2)^\frac{3}{2}}(x_j - x_i)\hat{x} $$

Da die Geschwindigkeit, Masse und Position der Objekte zum Simulationsbeginn bekannt sind, kann man nun mit Hilfe der berechneten Beschleunigung die neuen Positionen der Körper für einen festgelegten Zeitschritt berechnen. Da sich die Beschleunigung kontinuierlich verändert, ist die Simulation umso genauer, desto kleiner die Zeitschritte festgelegt werden.
Da es sich um ein lineares Verfahren der 1. Ordnung handelt, ist der lokale Fehler(Fehler zu in einem Schritt) der Berechnung quadratisch zur Intervallgröße. In der Darstellung wird dies deutlich.



Leapfrog-Verfahren

Das Leapfrog-Verfahren ist ebenfalls eine Methode zur numerischen Integration von Differentialgleichungen. Die Leapfrog-Integration ist eine Methode der 2. Ordnung, benötigt jedoch genauso viele Berechnungen pro Schritt wie das Euler-Verfahren. Dadurch ist das Leapfrog-Verfahren deutlich Genauer als das Euler-Verfahren und benötigt dabei keine zusätzlichen Berechnungsschritte. Beim Leapfrog-Verfahren ist die Berechnung der neuen Geschwindigkeit versetzt zur Berechnung der neuen Position.

  1. Berechnung der Kräfte
  2. Neue Geschwindigkeit basierend auf den Kräften und einem halben Zeitintervall berechnen
  3. Neue Position berechnen
  4. Neue Geschwindigkeit basierend auf einem halben Zeitschritt berechnen





Es eignet sich daher sehr gut für gravitative Simulationen, da dort nur die Position der Objekte die Berechnung beeinflussen. Besonders die Eigenschaft der Reversibilität und der Symplektizität der Berechnung, also das die Energie in einem dynamischen System stabil bleibt, machen es zu einer hervorragenden Methode zur Berechnung von Gravitationssystemen.



Runge-Kutta-Verfahren 4. Ordnung



In unserem Protokoll haben wir unsere Fortschritte an diesem Tag festgehalten, Probleme dokumentiert und Ziele bis zum nächsten Labor definiert. Zudem auch Aufnahmen vom WIP-Code und interessante Ergebnisse bzw. Probleme festgehalten.

Code-Beispiele




WIP




WIP


Lars Bonczek
Lukas Holdermann
Martina Kraußer
Lennox Lingk
Matthias Schuster

ws1819/sternensystem.1552929537.txt.gz · Zuletzt geändert: 2019/03/18 18:18 von lennox99