Wie berechnet man die Planeten und Monde jenseits der Gravitationskraft von Newton?

Die Frage zur Berechnung der Planeten und Monde anhand der Gravitationskraft von Newton wurde ziemlich genau mit zwei Punkten beantwortet:

  1. Verwenden Sie einen vernünftigen ODE-Solver; mindestens RK4 (das klassische Runge-Kutta-Verfahren) oder besser. Verwenden Sie nicht nur die Euler-Methode ,
  2. Drücken Sie alle Positions- und Geschwindigkeitsvektoren von allen aus n Körper als ein einziger Längenvektor 6 n und diese gleichzeitig lösen.

Aber das ist nicht gut genug, um mit etwas wie JPLs Horizons mitzuhalten, weil die Realität härter ist als die einfache Newtonsche Gravitation zwischen Punktteilchen.

Frage: Wie berechnet man die Planeten und Monde jenseits der Gravitationskraft von Newton?

Antworten (3)

"Frage: Wie berechnet man die Planeten und Monde jenseits der Gravitationskraft von Newton?"

Uhoh, Ihr Kommentar hat weitere Quellen dazu eingeladen. (Ein großes Lob übrigens für all die Arbeit und die interessanten Ergebnisse, die Sie in Ihrer eigenen Antwort gegeben haben.)

Haben Sie gesehen, was Steve Moshier (SL Moshier) Anfang der 1990er gemacht hat?

Er gab eine vollständige Replikation des Physikmodells für die (damals standardmäßige) JPL numerisch integrierte Ephemeride DE200/LE200 (verwendet als Grundlage der Sonnensystemdaten des Astronomical Almanac in den Jahren 1984-2002), einschließlich des vollständigen Quellcodes C zusammen mit einem geeigneten Integrator &c), wodurch auch eine Erweiterung des 250-Jahre-Zeitbereichs ermöglicht wird, der dann für DE200 von JPL veröffentlicht wurde. Moshiers Integration wurde unabhängig mit der JPL-Integration über den 250-jährigen gemeinsamen Teil des Zeitbereichs von J Chapront am Pariser Observatorium verglichen, der herausfand, dass für die fünf äußeren Planeten „die Diskrepanzen niemals über 4,10^-7 Bogen hinausgehen -Sekunde, was überreichlich ist", und im schlimmsten Fall (Mond) überstiegen Längenunterschiede nie 0,008 über das 250-Jahre-Zeitintervall von DE200.

Um das Physikmodell zu vervollständigen, damit es dem damaligen Standard entspricht, musste Moshier Informationen/Daten suchen, die über das hinausgingen, was veröffentlicht worden war, und er bestätigte die zusätzlichen Daten von JPL und anderswo.

Soweit mir bekannt ist, ist dies die einzige standardmäßige Ephemeriden-Integration des Sonnensystems, für die eine vollständige und funktionsfähige Implementierung öffentlich zugänglich gemacht wurde, und dies scheint sie zu einer bemerkenswerten und sogar historisch bedeutsamen Arbeit zu machen.

Die Verweise auf Moshiers DE200-Integration (ausgeführt als „DE118“ im Referenzrahmen von 1950 und dann gedreht) sind:

(Überblick über die Arbeit in): Moshier, SL (1992), "Comparison of a 7000-year lunar ephemeris with analytics theory", Astronomy and Astrophysics 262, 613-616: unter http://adsabs.harvard.edu/abs /1992A%26A...262..613M .

Die wichtigen Implementierungsdetails mit vollständigem (C-)Quellcode sind nicht in dem Papier von 1992 enthalten, aber noch verfügbar (bis zu diesem Schreiben im März 2018) auf der Website des Autors unter http://www.moshier.net , insbesondere in Dateien

http://www.moshier.net/de118i.zip ;

http://www.moshier.net/de118i-1.zip ;

und http://www.moshier.net/de118i-2.zip ;

mit Kommentar in http://www.moshier.net/system.html .

(Diese Dateien stammen von 1993 bis 2004, die späteren Modifikationen sollten das Modell nicht ändern, aber die Syntax für weitere Compiler aufnehmen, Kommentare hinzufügen und zusätzliche Optionen wie die Einführung weiterer Körper in die Integration usw. ermöglichen.)

Die "primäre zusammenfassende Referenz" für das Physikmodell war:

Newhall, XX, EM Standish und JG Williams (1983), „DE102: eine numerisch integrierte Ephemeride des Mondes und der Planeten über vierundvierzig Jahrhunderte“, Astronomy and Astrophysics 125, 150–167, unter http://adsabs.harvard .edu/abs/1983A%26A...125..150N .

Die Rotationsmatrix zum Ändern des Referenzrahmens 1950 -> 2000 stammt von Standish, EM (1982), "Orientation of the JPL Ephemerides, DE200/LE200, to the Dynamical Equinox of J2000", Astronomy and Astrophysics 114, 297-302, at http://adsabs.harvard.edu/abs/1982A%26A...114..297S .

Die unabhängige Überprüfung wird in erwähnt

Chapront, J. (1995), "Darstellung planetarer Ephemeriden durch Frequenzanalyse. Anwendung auf die fünf äußeren Planeten." Astronomy and Astrophysics Suppl., v.109, 181-192: unter http://adsabs.harvard.edu/abs/1995A%26AS..109..181C .

"... Ihr Kommentar hat weitere Quellen dazu eingeladen." In der Tat, und es sieht so aus, als hätte ich den Jackpot geknackt! Dies ist eine ziemlich umfangreiche Antwort und bietet einen wirklich hilfreichen Einblick, ich liebe es! Es wird einige Tage dauern, bis ich ihm das "Geschuldete" in Bezug auf das vollständige Lesen sowie das Lesen der Referenzen gegeben habe. Vielen Dank für Ihre Zeit und Mühe!
Vielen Dank für Ihre Wertschätzung, uhoh. Bei Interesse habe ich auch Referenzen (und werde danach suchen und posten), die Hinweise darauf geben, wie JPL das Physikmodell in seinen neueren Angeboten aktualisiert hat. Einige davon sind unter ssd.jpl.nasa.gov/pub/eph/planets/ioms zu finden , als nächstes haben Sie bereits IPNPR (2014) 42, 196C aufgelistet, und dann gibt es noch ein paar weitere Berichte über die unmittelbaren Verbesserungen des DE118/200 Physikmodell nicht dabei, muss noch ausgegraben werden ... Mit freundlichen Grüßen,
Es gibt eine interessante neue Antwort , die Ihnen gefallen könnte!

Lassen Sie uns eine Annäherung hinzufügen, um einige der Effekte der Allgemeinen Relativitätstheorie (GR) zu berücksichtigen – zumindest für Körper, die in der Nähe der massereichen Sonne kreisen – und beginnen, sie zu betrachten J 2 der Multipolterm niedrigster Ordnung für das Gravitationspotential eines Körpers jenseits des Monopolterms G M / r .

Newton:

Die Beschleunigung eines Körpers im Gravitationsfeld eines anderen Körpers mit Standard-Gravitationsparametern G M kann geschrieben werden:

a N e w t Ö n = G M r | r | 3 ,

wo r ist der Vektor vom Körper M an den Körper, dessen Beschleunigung berechnet wird. Denken Sie daran, dass in der Newtonschen Mechanik die Beschleunigung jedes Körpers nur von der Masse des anderen Körpers abhängt, obwohl die Kraft von beiden Massen abhängt, da sich die erste Masse durch aufhebt a = F / m .

Allgemeine Relativitätstheorie (ungefähr):

Obwohl ich mit GR nicht vertraut bin, werde ich eine Gleichung empfehlen, die gut zu funktionieren scheint und von mehreren Links unterstützt zu werden scheint. Es ist eine ungefähre relativistische Korrektur der Newtonschen Schwerkraft, die in Simulationen der Orbitalmechanik verwendet wird. Unter den folgenden Links sehen Sie verschiedene Formen, die meisten mit zusätzlichen Begriffen, die hier nicht aufgeführt sind:

Die folgende Annäherung sollte dem Newtonschen Term hinzugefügt werden:

a G R = G M 1 c 2 | r | 3 ( 4 G M r | r | ( v v ) r + 4 ( r v ) v ) ,

Oblate ( J 2 nur):

Ich verwende nur die Mathematik aus dem Wikipedia-Artikel über das Geopotentialmodell mit einer sehr wichtigen Annäherung, die man sich merken sollte. Ich gehe davon aus, dass die Abflachung in der Ebene der Ekliptik liegt – dass die Rotationsachse des abgeflachten Körpers in der Ebene liegt z ^ Richtung, senkrecht zur Ekliptik. Vergessen Sie nicht, dass dies eine Annäherung ist! Die vollständigen Vektorgleichungen sind chaotischer als diese, ich werde versuchen, zurückzukommen und dies zu aktualisieren, sobald ich sicher bin, dass ich es richtig gemacht habe. In der Zwischenzeit hier eine Annäherung:

r = x x ^ + j j ^ + z z ^

a x = J 2 x | r | 7 ( 6 z 2 1.5 ( x 2 + j 2 ) )

a j = J 2 j | r | 7 ( 6 z 2 1.5 ( x 2 + j 2 ) )

a z = J 2 z | r | 7 ( 3 z 2 4.5 ( x 2 + j 2 ) )

Dem Newtonschen Term ist folgendes hinzuzufügen :

a J 2 = a x x ^ + a j j ^ + a z z ^

Gezeitenkräfte:

Noch komplizierter wird es, wenn man Terme betrachtet, die nicht-sphärische Massenverteilungen in beiden Körpern gleichzeitig beinhalten, egal ob sie statisch sind oder nicht. An diesem Punkt ist es wahrscheinlich notwendig, die Bücher zu schlagen.


Hier ist ein Testlauf. Ich habe mit heruntergeladenen Daten von JPLs Horizons verglichen . Für die äußeren Planeten verwende ich die Horizons-Daten für das Baryzentrum jedes Planeten, was sicherstellt, dass es die Geschwindigkeit für das Massenzentrum des Planeten plus all seiner Monde ist. Ich habe die Korrektur nicht zu den Massen des Planeten hinzugefügt, aber das ist ein viel kleinerer Effekt, da er nur die Bewegung anderer, entfernter Körper beeinflusst.

Stellen Sie für die Erddaten sicher, dass Sie das Geozentrum der Erde und den Mond separat herunterladen (nicht das Baryzentrum Erde-Mond). Denken Sie für die äußeren Planeten daran, die Schwerpunkte herunterzuladen.

Screenshot von JPL Horizons – Erde

Screenshot von JPL Horizons – Jupiter

Ich habe ein Jahr lang integriert, und alles ist innerhalb von etwa einem Kilometer von den Horizons-Daten entfernt, mit Ausnahme des Erdmonds. Das ist keine Überraschung angesichts all der intimen Gezeiteneffekte zwischen diesen beiden. Erde hinzufügen J 2 Das vom Mond gefühlte Potenzial hilft nur teilweise, es ist wirklich nicht der richtige Weg, besonders wenn man bedenkt, dass die Erdachse (und damit die Abflachung) so weit von der Ekliptik entfernt ist.

Dies ist also insgesamt ein Beispiel dafür, dass Sie einer wirklich ernsthaften JPL-Simulation umso näher kommen, je mehr Physik Sie einsetzen! Dies ist der absolute Abstand zwischen den hier simulierten Positionen und der Horizons-Ausgabe von 2017-01-01 00:00bis 2018-01-01 00:00. Darauf folgt das Python-Skript, mit dem ich es generiert habe.

Screenshot der Python-Ausgabe


Basierend auf der Diskussion der Steifheit in den Kommentaren unten ist hier ein kurzes Diagramm der Schrittgröße im Vergleich zur Zeit. Ich denke, die Steifheit kommt vom Erde-Mond-System, diese häufigen Exkursionen sehen ein bisschen wie die Fehlerexkursionen der Erde und des Mondes aus. Ich denke, ich werde versuchen, das Problem auf dimensionslose Einheiten umzuskalieren, im Moment gilt die numerische Toleranz für alle Geschwindigkeiten und Positionen gleichermaßen, keine gute Idee.

Geben Sie hier die Bildbeschreibung ein

def deriv_Newton_Only(X, t):
    x,  v  = X.reshape(2, -1)
    xs, vs = x.reshape(-1, 3), v.reshape(-1, 3)
    things = zip(bodies, xs, vs)

    accs, vels = [], []
    for a, xa, va in things:
        acc_a = np.zeros(3)
        for b, xb, vb in things:
            if b != a:
                r = xa - xb
                acc_a += -b.GM * r * ((r**2).sum())**-1.5
        accs.append(acc_a)
        vels.append(va)

    return np.hstack((np.hstack(vels), np.hstack(accs)))

def deriv_sunGRJ2EarthJ2(X, t):
    x,  v  = X.reshape(2, -1)
    xs, vs = x.reshape(-1, 3), v.reshape(-1, 3)
    things = zip(bodies, xs, vs)

    accs, vels = [], []
    for a, xa, va in things:
        acc_a = np.zeros(3)
        for b, xb, vb in things:
            if b != a:
                r = xa - xb
                acc_a += -b.GM * r * ((r**2).sum())**-1.5

        if a.do_SunGR and not a.name == 'Sun':

            a.flag0 = True

            r   = xa - xs[0]
            v   = va - vs[0]
            rsq = (r**2).sum()
            rm3 = rsq**-1.5
            rm1 = rsq**-0.5

            # https://physics.stackexchange.com/q/313146/83380
            # Eq.    1 in https://www.lpi.usra.edu/books/CometsII/7009.pdf
            # Eq.   27 in https://ipnpr.jpl.nasa.gov/progress_report/42-196/196C.pdf
            # Eq. 4-26 in https://descanso.jpl.nasa.gov/monograph/series2/Descanso2_all.pdf
            # Eq. 3.11 in http://adsabs.harvard.edu/full/1994AJ....107.1885S
            
            term_0 = Sun.GM / (clight**2) * rm3
            term_1 = 4.*Sun.GM * r * rm1
            term_2 =   -np.dot(v, v) * r
            term_3 = 4.*np.dot(r, v) * v

            accGR = term_0*(term_1 + term_2 + term_3)
            acc_a += accGR
            
        if a.do_SunJ2 and not a.name == 'Sun':

            a.flag1 = True

            r = xa - xs[0] # position relative to Sun
            x,   y,   z   = r
            xsq, ysq, zsq = r**2

            rsq = (r**2).sum()
            rm7 = rsq**-3.5

            # https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere
            accJ2x = x * rm7 * (6*zsq - 1.5*(xsq + ysq))
            accJ2y = y * rm7 * (6*zsq - 1.5*(xsq + ysq))
            accJ2z = z * rm7 * (3*zsq - 4.5*(xsq + ysq))

            accJ2  = J2s * np.hstack((accJ2x, accJ2y, accJ2z))
            acc_a += accJ2
            
        if a.do_EarthJ2 and not a.name == 'Earth':

            a.flag2 = True

            r = xa - xs[3] # position relative to Earth
            
            x,   y,   z   = r
            xsq, ysq, zsq = r**2

            rsq = (r**2).sum()
            rm7 = rsq**-3.5

            # https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere
            accJ2x = x * rm7 * (6*zsq - 1.5*(xsq + ysq))
            accJ2y = y * rm7 * (6*zsq - 1.5*(xsq + ysq))
            accJ2z = z * rm7 * (3*zsq - 4.5*(xsq + ysq))

            accJ2  = J2e * np.hstack((accJ2x, accJ2y, accJ2z))
            acc_a += accJ2
            
        accs.append(acc_a)
        vels.append(va)

    return np.hstack((np.hstack(vels), np.hstack(accs)))

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

names = ['Sun', 'Mercury', 'Venus',
         'Earth', 'Moon', 'Mars',
         'Ceres', 'Pallas', 'Vesta',
         'Jupiter', 'Saturn', 'Uranus',
         'Neptune']

GMsDE430 = [1.32712440040944E+20, 2.203178E+13,  3.24858592E+14,
        3.98600435436E+14,    4.902800066E+12,  4.2828375214E+13,
        6.28093938E+10,       1.3923011E+10,    1.7288009E+10, 
        1.267127648E+17,      3.79405852E+16,   5.7945486E+15,
        6.83652719958E+15 ] # https://ipnpr.jpl.nasa.gov/progress_report/42-178/178C.pdf

# for masses also see ftp://ssd.jpl.nasa.gov/pub/xfr/gm_Horizons.pck

# https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/
# https://naif.jpl.nasa.gov/pub/naif/JUNO/kernels/spk/de436s.bsp.lbl
# https://astronomy.stackexchange.com/questions/13488/where-can-i-find-visualize-planets-stars-moons-etc-positions
# https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/jup310.cmt
# ftp://ssd.jpl.nasa.gov/pub/xfr/gm_Horizons.pck

GMs = GMsDE430

clight = 2.9979E+08 # m/s

halfpi, pi, twopi = [f*np.pi for f in [0.5, 1, 2]]

# J2 values
J2_sun = 2.110608853272684E-07  # unitless
R_sun  = 6.96E+08 # meters
J2s    = J2_sun * (GMs[0] * R_sun**2)   # is there a minus sign?

J2_earth = 1.08262545E-03  # unitless
R_earth  = 6378136.3 # meters
J2e      = J2_earth * (GMs[3] * R_earth**2)   # is there a minus sign?

JDs, positions, velocities, linez = [], [], [], []

use_outer_barycenters = True

for name in names:

    fname = name + ' horizons_results.txt'

    if use_outer_barycenters:
        if name in ['Jupiter', 'Saturn', 'Uranus', 'Neptune']:
            fname = name + ' barycenter horizons_results.txt'

    with open(fname, 'r') as infile:

        lines = infile.read().splitlines()

        iSOE = [i for i, line in enumerate(lines) if "$$SOE" in line][0]
        iEOE = [i for i, line in enumerate(lines) if "$$EOE" in line][0]

        # print name, iSOE, iEOE, lines[iSOE], lines[iEOE]

        lines = lines[iSOE+1:iEOE]

        lines = [line.split(',') for line in lines]
        JD  = np.array([float(line[0]) for line in lines])
        pos = np.array([[float(item) for item in line[2:5]] for line in lines])
        vel = np.array([[float(item) for item in line[5:8]] for line in lines])

        JDs.append(JD)
        positions.append(pos * 1000.)   # km   to m
        velocities.append(vel * 1000.)  # km/s to m/s
        linez.append(lines)

JD = JDs[0] # assume they are identical

class Body(object):
    def __init__(self, name):
        self.name = name

bodies = []
for name, GM, pos, vel in zip(names, GMs, positions, velocities):
    
    body = Body(name)
    bodies.append(body)
    
    body.GM = GM
    
    body.daily_positions  = pos
    body.daily_velocities = vel
    
    body.initial_position = pos[0]
    body.initial_velocity = vel[0]

x0s = np.hstack([b.initial_position for b in bodies])
v0s = np.hstack([b.initial_velocity for b in bodies])

X0  = np.hstack((x0s, v0s))

ndays   = 365
nperday = 144

time = np.arange(0, ndays*24*3600+1, 24*3600./nperday)
days = time[::nperday]/(24*3600.)

for body in bodies:
    body.do_SunGR   = False
    body.do_SunJ2   = False
    body.do_EarthJ2 = False
    body.flag0      = False
    body.flag1      = False
    body.flag2      = False

Sun, Mercury, Venus, Earth, Moon, Mars = bodies[:6]
Ceres, Pallas, Vesta = bodies[6:9]
Jupiter, Saturn, Uranus, Neptune = bodies[9:]

Mercury.do_SunGR = True
Venus.do_SunGR   = True
Earth.do_SunGR   = True
Moon.do_SunGR    = True
Mars.do_SunGR    = True
Ceres.do_SunGR   = True
Pallas.do_SunGR  = True
Vesta.do_SunGR   = True

Mercury.do_SunJ2 = True

Moon.do_EarthJ2  = True

rtol = 1E-12   # this is important!!!

answer, info = ODEint(deriv_sunGRJ2EarthJ2, X0, time,
                      rtol = rtol, full_output=True)

print answer.shape

nbodies = len(bodies)

xs, vs = answer.T.reshape(2, nbodies, 3, -1)

for body, x, v in zip(bodies, xs, vs):
    body.x = x
    body.v = v
    body.x_daily = body.x[:, ::nperday]
    body.v_daily = body.v[:, ::nperday]
    body.difference = np.sqrt(((body.x_daily - body.daily_positions.T)**2).sum(axis=0))

if True:
    for body in bodies[:6]:
        print body.name, body.flag0, body.flag1, body.flag2

if True:
    plt.figure()
    for i, body in enumerate(bodies[:12]):  # Sorry Neptune!!!
        plt.subplot(4, 3, i+1)
        plt.plot(days, 0.001*body.difference)
        plt.title(body.name, fontsize=14)
        plt.xlim(0, 365)
    plt.suptitle("calc vs JPL Horizons (km vs days)", fontsize=16)
    plt.show()
Technische Kritik, Verbesserungen, bessere Links/Referenzen/Quellen sind willkommen!
Sie schränken die Genauigkeit (insbesondere im Hinblick auf die langfristige Genauigkeit) bei Ihrer Verwendung von scipy.integrate.odeint ein. Während eine ODE zweiter Ordnung in eine ODE erster Ordnung umgewandelt werden kann, wirft dies zwangsläufig Geometrie aus.
@DavidHammen, das ist eine faszinierende Sache zu sagen, und ich werde etwas darüber lesen. Ich denke, dass Integrationstechniken, die in den Antworten auf Was bedeutet „symplektisch“ in Bezug auf numerische Integratoren beschrieben werden, und verwendet SciPys Odeint sie? sind zweite Ordnung? Ich hatte dieses Thema und ein gründliches Lesen dieser Antworten für einen regnerischen Tag zurückgelassen, an dem ich etwas Zeit verbringen kann, und es ist derzeit hier "Regenzeit", also ist vielleicht Zeit gekommen.
Genau. Ein symplektischer Integrator behandelt notwendigerweise Geschwindigkeit (oder linearen Impuls) und Position unterschiedlich. Keiner der scipy.integrate Integratoren tut das; sie lösen nur ODEs erster Ordnung. Das Umwandeln einer ODE zweiter Ordnung in eine ODE erster Ordnung wirft Geometrie aus (dass das Problem zweiter Ordnung ist, dh dass es Beschleunigung beinhaltet, ist Geometrie). Verwechseln Sie die Reihenfolge der ODE nicht mit der Reihenfolge eines Integrators. Beispielsweise ist symplektisches Euler ein Integrator erster Ordnung für eine ODE zweiter Ordnung, während das Heun-Verfahren ein Integrator zweiter Ordnung für eine ODE erster Ordnung ist.
Ein weiteres mögliches Problem ist, dass Sie alle acht Planeten plus die Sonne als einen integrieren. Dabei gibt es ein Problem namens Stiffness . Die Umlaufzeit von Neptun beträgt das 684-fache der Umlaufzeit von Merkur. Das Winkelgeschwindigkeitsverhältnis von Merkurperihel zu Neptun am Aphel liegt nahe bei 1000. Dies macht das Sonnensystem von Natur aus zu einem ziemlich steifen System. Der beste Zeitschritt, um die Umlaufbahn von Merkur richtig zu machen, ist ein ziemlich schlechter Zeitschritt, um die Umlaufbahn von Neptun richtig zu machen, und umgekehrt.
Eine letzte Sache, es sei denn, Sie machen sich Sorgen über Zeitspannen von Millionen Jahren, Symplekizität ist nicht so wichtig. Ich bezweifle, dass JPL einen symplektischen Integrator verwendet. Das Ziel des JPL ist es, das Sonnensystem über einen Zeitraum von höchstens einigen tausend Jahren genau vorherzusagen. Das Wenige, das sie zu diesem Thema veröffentlicht haben, deutet darauf hin, dass JPL einen Integrator der Adams-Familie verwendet. Ich habe noch nichts über einen symplektischen Adams-Integrator gelesen. Andererseits gibt es Integratoren der Adams-Familie, die Position und Geschwindigkeit getrennt behandeln (z. B. Störmer-Cowell, Gauss-Jackson).
Ein guter symplektischer Integrator sollte ein simuliertes Sonnensystem davor bewahren, über Millionen von Jahren künstlich instabil zu werden; JPL kümmert sich nicht um dieses Problem. Sie kümmern sich um Genauigkeit über viel kürzere Zeiträume, was den meisten symplektischen Integratoren egal ist.
@DavidHammen das alles ist ausgezeichnet, danke! Ich habe überprüft, die Ausgabe gibt alle 2 zurück für mused: einen Vektor von Methodenindikatoren für jeden erfolgreichen Zeitschritt: 1: adams (nicht steif), 2: bdf (steif) In diesem Fall ist es wahrscheinlich das Erde-Mond-System, das den Integrator so hält beschäftigt. Mir ist auch aufgefallen, dass sie endlich eine dichte Ausgabeoption und einen Interpolator für einige Integratoroptionen hinzugefügt haben
Nach dem Ausprobieren mit einem Integrator mit variabler Schrittweite (automatisches Reduzieren der Schrittweite und Integrationsreihenfolge, wenn das Problem steifer wird) hatte ich den Eindruck, dass das Problem vielleicht am steifsten war, wo Merkur in der Nähe des Perihels war, und stimmte anscheinend mit dem überein, was @david-hammen vorgeschlagen hatte. Das verstehe ich aber nicht, denn die alten analytischen Theorien scheinen Merkur nicht so stark gestört zu zeigen.
@terry-s - Zunächst einmal wird Merkur durch die Umlaufbahnen anderer Planeten gestört. Die Newtonsche Präzession der Merkurbahn beträgt 532 Bogensekunden pro Jahrhundert, mehr als das 12-fache der Präzession von 43 Bogensekunden pro Jahrhundert, die durch die allgemeine Relativitätstheorie verursacht wird. Zweitens ist das Problem, selbst wenn überhaupt keine Wechselwirkung auftritt, aufgrund der stark unterschiedlichen charakteristischen Frequenzen immer noch schwierig. Ein numerischer Integrator hat einen Zeitschritt, bei dem er für eine gegebene charakteristische Frequenz am besten funktioniert. (Fortsetzung)
(Fortsetzung) Angenommen, dieser optimale Schritt beträgt 300 Schritte pro Umlaufbahn. Ein optimaler Betrieb für Neptun würde für Merkur einen Schritt in jeder zweiten Umlaufbahn bedeuten. Das ist offensichtlich schlecht. Ein optimaler Betrieb für Merkur würde für Neptun über 200000 Schritte pro Umlauf bedeuten. Nein, so offensichtlich, das ist auch schlecht. Es gibt keinen goldenen Mittelweg, wenn die charakteristischen Frequenzen drei Größenordnungen umfassen.
@DavidHammen Ich habe unten eine Darstellung der Schrittgrößen hinzugefügt, zusammen mit einem Kommentar zum Wechsel zu dimensionslosen Einheiten. Dies ist ein hässliches Drehbuch, aber es war unglaublich lehrreich.
@david-hammen : Ich habe nicht geschrieben, dass Merkur nicht beunruhigt ist, aber dass es '[nicht] allzu stark beunruhigt' schien. In der Tat, wenn Sie sich die Amplituden der Terme der Störungen auf Merkur ansehen, die in Newcombs Theorie auftreten (ab Seite 176, babel.hathitrust.org/cgi/… ), werden Sie sehen, dass sie insgesamt kleiner sind als die Störungsamplituden auf den anderen Planeten . Ich stimme zu, dass die Verwendung von zu kleinen Schritten für Neptun suboptimal ist, aber vielleicht ist das Problem dort nicht wirklich Steifheit, sondern eine übermäßige Rundung von zu vielen Schritten.
@terry-s - Überschüssige Abrundung durch zu viele Schritte, einer der vielen Aspekte der "Steifigkeit".
Wie bekommt man daraus die Mondphasen?
@blademan9999 Fragen Sie in Astronomy SE, aber suchen Sie dort zuerst nach vorhandenen Fragen und Antworten. Ich weiß, dass es mehrere gab, wie man eine Ephemeride für die Mondphase erstellt. "Mondphase"

Ich möchte nur hinzufügen, dass der in der Antwort von uhoh erwähnte relativistische Korrekturterm, bei dem es sich um die "post-Newtonsche Erweiterung" auf der "1PN" -Ebene handelt, relativistische Effekte durch Einführung einer Abstoßung annähert 1 / r 3 Begriff. Der Ausdruck wird von der JPL verwendet, also müssen Sie ihn verwenden, wenn Sie so nah wie möglich an die Ephemeriden herankommen wollen. Obwohl Sie die "anomale Perihelverschiebung" richtig verstehen, erhalten Sie sehr seltsame Effekte des "Aufpralls" in der starken Feldgrenze, sodass der Ausdruck wahrscheinlich hauptsächlich in den schwachen Feldern unseres Sonnensystems funktioniert. Ich habe unten einige Simulationen durchgeführt, der grüne Kreis ist der Schwarzschild-Radius und der rote Kreis ist der Radius der "innersten stabilen Kreisbahn", die sich in einem radialen Abstand von drei Schwarzschild-Radien befindet. Das sichtbare "Aufprallen" ist offensichtlich auf den abstoßenden inversen Würfelterm zurückzuführen. Mit mehr anfänglichem Drehimpuls werden die Bahnen weniger seltsam .

Geben Sie hier die Bildbeschreibung ein

Danke für deinen Beitrag! In der Tat haben Sie Recht damit, dass die Antwort, die ich gepostet habe, nur bis zu einem gewissen Grad annähert, "wie man die Planeten und Monde jenseits der Gravitationskraft von Newton berechnet" . Ich liebe die Plots! Ich habe keine Simulation mit einem viel stärkeren Feld ausprobiert, aber es macht natürlich Sinn, dass die Verwendung nur einer Erweiterung niedriger Ordnung zu einigen verrückten Ergebnissen führt, wenn sie außerhalb ihres nützlichen Bereichs verwendet wird. Ich hatte nicht darüber nachgedacht, aber es ist ziemlich lustig, dass die Kürzung zu einem abstoßenden Verhalten und Dingen führt, die "von der Sonne abprallen" (wenn die Sonne zig-mal massiver wäre). Vielen Dank!
Möglicherweise finden Sie auch die Frage Könnte eine Flugbahn um eine große Masse aufgrund allgemeiner relativistischer Effekte jemals um mehr als 180 Grad abgelenkt werden? Spaß, und ein oder zwei Plots wären auch toll!