Wie würde ein numerischer Orbit-Simulator mit n-Körpern die Hierarchie in seinem Jacobi verwenden?

Bei dieser Frage geht es um Techniken zur Berechnung von Umlaufbahnen.

Der Github-Beitrag zur dynamischen Stabilität des modifizierten Jool-Systems von Principia (zitiert in dieser Antwort ) sagt:

Principia berechnet die Bahn der Himmelskörper durch Integration der Bewegungsgleichungen1; Wenn das System daher instabil ist, kann es im Spiel zusammenbrechen. Dies ist in der Tat beim Aktiensystem der Fall: Während die Einzelheiten davon abhängen, wie die Kepler-Orbitalelemente von KSP in einen kartesischen Anfangszustand übersetzt werden, mit Principias Interpretation als hierarchische Jacobi-Elemente , bricht das Jool-System innerhalb von 19 Tagen mit einer engen Begegnung zusammen zwischen Vall und Laythe.

Laut Wikipedia :

In der Vektorrechnung ist die Jacobi-Matrix einer vektorwertigen Funktion in mehreren Variablen die Matrix aller ihrer partiellen Ableitungen erster Ordnung. Wenn diese Matrix quadratisch ist, d. h. wenn die Funktion dieselbe Anzahl von Variablen als Eingabe wie die Anzahl von Vektorkomponenten ihrer Ausgabe verwendet, wird ihre Determinante als Jacobi-Determinante bezeichnet. Sowohl die Matrix als auch (falls zutreffend) die Determinante werden in der Literatur oft einfach als Jacobi bezeichnet.

Wenn ich numerische Integration für Probleme mache, mit denen ich gerade konfrontiert bin, habe ich früher die alte scipy.integrate.odeint verwendet , aber ich wechsle zu scipy.integrate.solve_ivp und letztere sagt:

Parameter: fun callable: Rechte Seite des Systems. Die aufrufende Signatur ist fun(t, y). Hier ist t ein Skalar, und es gibt zwei Optionen für das ndarray y: Es kann entweder die Form (n,) haben; dann muss Spaß array_like mit Form (n,) zurückgeben. Alternativ kann es die Form (n, k) haben; dann muss fun ein array_like mit shape (n, k) zurückgeben, dh jede Spalte entspricht einer einzelnen Spalte in y. Die Wahl zwischen den beiden Optionen wird durch ein vektorisiertes Argument bestimmt (siehe unten). Die vektorisierte Implementierung ermöglicht eine schnellere Approximation der Jacobi-Zahl durch endliche Differenzen (erforderlich für steife Löser) .

Update: Ich denke, dass dies ein Hinweis sein könnte; ein hierarchisches System könnte nützlich sein, wenn Wechselwirkungen zwischen Objekten geschätzt werden, die sich umgekehrt mit dem Quadrat der Entfernung ändern; Möglicherweise möchten Sie nur Wechselwirkungen auswerten, wenn sich umlaufende Körper nahe aneinander vorbeibewegen.

Ich habe selbst noch nie einen Jacobi benutzt, aber ich würde das gerne mehr verstehen.

In dem Dokument ist die Steifigkeit des Problems während einer engen Annäherung ein zentrales Thema.

Die in der Wikipedia-Definition gezeigte Matrix sieht flach und nicht hierarchisch aus:

J ich J = F ich X J

oder wie der Artikel vorschlägt, eine Reihe von transponierten Farbverläufen.

Frage: Was genau bedeutet die "Interpretation als hierarchische Jacobi-Elemente" eines numerischen n-Körper-Simulators ? Wie würde eine Art Hierarchie in einem Jacobi verwendet werden, der von einem n-Körper-Problemlöser verwendet wird? diese oder ähnliches?

Würde dies im Fall eines Schwarms oder einer Konstellation kleiner Erdsatelliten verwendet, deren Gravitationswechselwirkung nicht berücksichtigt wird, oder müssten die Körper auf irgendeine Weise (gravitativ oder ansprechend) miteinander interagieren, bevor diese Hierarchie einen Nutzen hat?

Ich weiß es nicht von Jacobians, aber Hierarchie in n-Körper-Simulationen mit großem n wird verwendet, um die Komplexität des naiven O (n ^ 2) zu reduzieren. Beispielsweise könnten das Subsystem von Jool und seine Monde isoliert simuliert und dann als ein einzelner Körper mit Punktmasse im Rest des Kerbol-Systems angenähert werden. Kerbol und alle seine Planeten und ihre Monde könnten als ein einziger Körper auf der Simulationsebene des lokalen Sternhaufens angenähert werden, und so weiter.
@RussellBorogove Ja, das könnte die Art von Sache sein, auf die es sich bezieht. Ich habe die scipy.integrate.solve_ivp-Dokumentation erneut gelesen, das Wort "Annäherung" gesehen und dann gleichzeitig einen Update- Abschnitt hinzugefügt.
Ich kenne weder n-Körper-Simulationen noch KSP, aber ich kenne Jacobians ziemlich gut (habe eine Arbeit darüber geschrieben, wie man sie effizienter berechnet). Ich kann folgendes sagen: Mir ist kein Jacobi bekannt, der „hierarchisch“ genannt wird. Die Finite-Differenzierung-Methode verwendet die Definition F ' ( X ) = ( F ( X + H ) F ( X ) ) / H um die Ableitung einer multivariaten Funktion zu erhalten. Vielleicht gibt es eine Berechnungsmethode, die eine geordnete und parallelisierte Berechnung für die endliche Differenzierung ermöglicht, aber das Ergebnis an sich nicht ändern sollte. Beachten Sie, dass die endliche Differenzierung die Hälfte der Genauigkeit Ihres Computers ist, vgl. AAS 19-716-Konferenzpapier.
@ChrisR danke dafür, ich verstehe was du meinst. Ich denke, RB und ich untersuchen die Möglichkeit, dass die Hierarchie in der bestimmten Teilmenge der berechneten Elemente liegen könnte ; man könnte sich nur die Mühe machen, die Genauigkeit für zwei Planeten (in diesem Fall) zu verbessern, die sich in benachbarten Umlaufbahnen oder in unmittelbarer Nähe befinden. Ich weiß nicht, ob es möglich ist, nur einige Elemente einer Jacobi-Matrix und andere nicht zu berechnen und sie trotzdem zu verwenden. Vielleicht kann das ein intelligenter Integrationsalgorithmus tun.
Tatsächlich ist „Hierarchie“ kein Konzept in den numerischen Bibliotheken von Python (oder anderen), die sich mit Jacobianern befassen. Die Berechnung des Jacobi-Werts entweder durch endliche Differenz (wie @ChrisR anmerkt) oder eine explizite Funktion (wie Sie sie symbolisch differenzieren und implementieren) ist häufig eine Option, je nachdem, welchen numerischen Ansatz Sie wählen. Bei beiden Ansätzen gibt es je nach vorliegendem Problem Kompromisse.
@uhoh, bei der endlichen Differenzierung wäre es trivial, bestimmte Teile des Jacobi nicht zu berechnen, indem man diesen Teil des Zustandsvektors einfach nicht variiert. Zur automatischen Unterscheidung sollte es auch möglich sein, den dualen Zahlenteil für diese Komponente auf Null zu setzen. Schließlich ist es für die analytische Ableitung auch möglich, einige Komponenten zu ignorieren, obwohl dies schwierig ist, wenn Ihre Bibliothek Vektormathematik verwendet.

Antworten (1)

Ich behalte mir das Recht vor, hier völlig falsch zu liegen! Das heißt, ich werfe dies eher in eine Antwort als in einen Kommentar, weil ich hoffe, dass dies das Sprungbrett für eine solide Antwort der Community sein kann.

Ich bezweifle sehr, dass sich der fettgedruckte Text auf die Jacobi-Matrix bezieht (die vermutlich alle Teiltöne erster Ordnung aller Systemvariablen gegeneinander enthält). Angesichts der Tatsache, dass sie sagen, dass sie die Definition von KSP, wo sich Himmelskörper in der Epoche befinden (in Kepler-Elementen angegeben), in eine kartesische Form umwandeln, gehe ich davon aus, dass sie als nächstes das System in einer Hierarchie von Jacobi-Koordinaten definieren, in denen Positionen koordiniert werden relativ zum Schwerpunkt eines n-Körper-Systems für kleine n. (Im fettgedruckten Text verwenden die Autoren den Begriff "Jacobi-Elemente", auf den ich zuvor noch nicht gestoßen bin, aber an anderer Stelle in der Dokumentation verwenden sie die eher standardmäßigen "Jacobi-Koordinaten")

Ich bin mir nicht sicher, ob diese Hierarchie fest codiert oder dynamisch zugewiesen ist, aber ich vermute, dass sie in erster Linie verwendet wird, um Gleitkommafehler bei Positionsberechnungen zwischen nahen Objekten zu reduzieren. Im Gegensatz zu einigen Kommentaren bedeutet dies nicht, dass Principia die n-Körper-Gravitation annähert, indem es nur Massen in der Nähe erlaubt, zu interagieren - wiederum (vermute ich), dies ist nur eine Methode zur Koordinierung von Körpern, während der Gleitkommafehler im Relativen gemildert wird Positionen.

Für eine definitive Antwort schlage ich vor, entweder einen der Leroys anzusprechen , entweder über Github oder in diesem Zwiespalt , in dem die Diskussion über die Entwicklung von Principia stattfindet (ich bin nicht mehr dort, aber Egg war immer freundlich, meine Fragen zu ihrer Anzahl zu beantworten Methoden). Bitte teilen Sie dem SE mit, was Sie finden!

Oh, ich denke, das wird sich als die richtige Antwort herausstellen, ja. Ich habe noch nie von Jacobi-Koordinaten gehört, aber nach dem erneuten Lesen von " Cartesianischer Anfangszustand mit Principias Interpretation als hierarchische Jacobi-Elemente" scheint es genau so zu sein, worüber es spricht. Danke!