Ich möchte die Runge-Kutta-Methode 8. Ordnung (89) in einer in C ++ geschriebenen Anwendung für Himmelsmechanik / Astrodynamik unter Verwendung eines Windows-Computers verwenden. Daher frage ich mich, ob jemand eine gute Bibliothek / Implementierung kennt, die dokumentiert und kostenlos zu verwenden ist. Es ist in Ordnung, wenn es in C geschrieben ist, solange keine Kompilierungsprobleme zu erwarten sind.
Bisher habe ich diese Bibliothek (mymathlib) gefunden . Der Code scheint in Ordnung zu sein, aber ich habe keine Informationen zur Lizenzierung gefunden.
Können Sie mir helfen, indem Sie einige der Alternativen aufzeigen, die Sie vielleicht kennen und die zu meinem Problem passen würden?
EDIT:
Ich sehe, dass nicht wirklich so viele C / C ++ - Quellcodes verfügbar sind, wie ich erwartet hatte. Daher wäre auch eine Matlab / Octave-Version in Ordnung (muss noch kostenlos sein).
quelle
Wenn Sie über lange Zeiträume Himmelsmechanik betreiben, spart die Verwendung eines klassischen Runge-Kutta-Integrators keine Energie. In diesem Fall wäre es wahrscheinlich besser, einen symplektischen Integrator zu verwenden. Boost.odeint implementiert auch ein symplektisches Runge-Kutta-Schema 4. Ordnung, das für lange Zeitintervalle besser funktioniert. Soweit ich das beurteilen kann, implementiert GSL keine symplektischen Methoden.
quelle
einige Punkte zusammenfassen:
DP5
), wenn Sie sich 4 Stellen Genauigkeit ansehen (Toleranzen sind dafür allerdings viel niedriger. Toleranzen sind nur ein Baseballstadion in jedem Problem). Wenn Sie die Toleranzen noch weiter senken, wächst die Verbesserung gegenüber einer RK-Methode höherer Ordnung. Möglicherweise müssen Sie jedoch Zahlen mit höherer Genauigkeit verwenden.dop853
und DifferentialEquations.jlDP8
(die gleich sind). Die letztere 853-Methode kann nicht in der Standard-Tableau-Version einer Runge-Kutta-Methode implementiert werden, da ihr Fehlerschätzer nicht dem Standard entspricht. Diese Methode ist jedoch viel effizienter und ich würde nicht einmal die Verwendung der älteren Fehlberg 7 / 8- oder DP 7/8-Methoden empfehlen.quelle
Ich möchte hinzufügen, dass das, was Geoff Oxberry für die langfristige Integration vorschlägt (unter Verwendung symplektischer Integratoren), zwar wahr ist, in einigen Fällen jedoch nicht funktioniert. Insbesondere wenn Sie dissipative Kräfte haben, bewahrt Ihr System die Energie nicht mehr und daher können Sie in diesem Fall nicht auf symplektische Integratoren zurückgreifen. Die Person, die die Frage stellte, sprach von niedrigen Erdumlaufbahnen, und solche Umlaufbahnen weisen einen großen atmosphärischen Widerstand auf, dh eine dissipative Kraft, die die Verwendung solcher symplektischer Integratoren ausschließt.
In diesem speziellen Fall (und in Fällen, in denen Sie keine symplektischen Integratoren verwenden können / keinen Zugriff darauf haben / nicht verwenden möchten) würde ich die Verwendung des Bulirsch-Stoer-Integrators empfehlen, wenn Sie Präzision und Effizienz über lange Zeiträume benötigen. Es funktioniert erfahrungsgemäß gut und wird auch von den Numerical Recipes empfohlen (Press et al., 2007).
quelle
odex
Regel nicht gut. Zumindest für ODEs 1. Ordnung und für Toleranzen>=1e-13
scheint die Extrapolation nicht gut zu funktionieren und ist normalerweise nicht einmal eng. Dies steht im Einklang mit dem obigen Anspruch.