Technische Dokumentation

Numerische Ephemeridenrechnung

Mathematisches Verfahren, Konstanten, Reihen und sprachübergreifende Validierung

Version 0.5.3 - 25. Juli 2026

Zusammenfassung

Der beschriebene Rechenkern berechnet scheinbare topozentrische Ephemeriden von Asteroiden, Kometen und interstellaren Objekten aus oskulierenden Bahnelementen. Elliptische, parabolische und hyperbolische Anfangszustände werden ohne externen Orbitdienst behandelt. Die anschließende numerische Integration berücksichtigt solare Gravitation, die erste relativistische Korrektur, Planeten, Erde und Mond, Erd-J2, optional 16 massereiche Asteroiden sowie Marsden-A1/A2/A3. Planeten- und Asteroidenzustände werden mit kubischer Hermite-Interpolation aus kompakten Tabellen gewonnen.

Die beobachtete Richtung entsteht nach UTC-nach-TDB-Näherung, Lichtlaufzeit, Erdrotation, Nutation und Präzession. Sechs Extremobjekte mit 20 eingefrorenen JPL-Horizons-Zeilen bilden den gemeinsamen Abnahmetest aller 49 eigenständigen Zielprogramme.

1. Fachbegriffe und Symbole

Alle Fachbegriffe und Abkürzungen, die für das Verständnis der folgenden Rechnung erforderlich sind, werden hier zusammenhängend erklärt. Bei der ersten Verwendung besonders wichtiger Begriffe folgt zusätzlich eine kurze Erklärung im Fließtext.

Glossar der astronomischen und numerischen Fachbegriffe.

Fachbegriff Bedeutung in diesem Artikel
Ephemeride Vorausberechnete Folge von Himmelspositionen und ergänzenden Größen für festgelegte Zeitpunkte und einen Beobachtungsort.
scheinbar Bezeichnet hier die Richtung nach Lichtlaufzeit, Erdrotation, Nutation und Präzession; atmosphärische Refraktion ist nicht Teil dieses Rechenkerns.
topozentrisch Auf den wirklichen Standort des Beobachters auf oder nahe der Erdoberfläche bezogen, nicht auf den Erdmittelpunkt.
geozentrisch / heliozentrisch Geozentrisch bedeutet auf den Erdmittelpunkt, heliozentrisch auf den Sonnenmittelpunkt bezogen.
Baryzentrum Gemeinsamer Massenschwerpunkt mehrerer Körper; EMB bezeichnet das Erde-Mond-Baryzentrum.
oskulierende Bahnelemente Sechs Elemente einer momentanen Keplerbahn, die Ort und Geschwindigkeit der tatsächlich gestörten Bahn an einer Epoche berührt.
Epoche Zeitpunkt, für den Bahnelemente oder ein Zustandsvektor gelten.
Kegelschnitt Ellipse, Parabel oder Hyperbel; die Exzentrizität e unterscheidet die drei Bahnformen.
Exzentrizität e Dimensionsloser Formparameter: e<1 Ellipse, e=1 Parabel und e>1 Hyperbel.
q, Tp, i, Ω, ω Periheldistanz, Perihelzeit, Bahnneigung, Länge des aufsteigenden Knotens und Argument des Perihels.
M, E, H, ν Mittlere, exzentrische, hyperbolische und wahre Anomalie; Winkel beziehungsweise Hilfsgröße für die Position auf der Bahn.
J2000 In diesem Kern die feste äquatoriale Bezugsorientierung zur Standardepoche JD 2451545.0.
AE Astronomische Einheit; exakt 149597870,7 Kilometer.
JD Julianisches Datum, eine fortlaufende astronomische Tageszählung.
UTC / TAI / TDB Koordinierte Weltzeit, Internationale Atomzeit und baryzentrische dynamische Zeit; UTC enthält Schaltsekunden, TDB dient der Dynamik.
Schaltsekunde Ganzzahlige Korrektur, die UTC an die ungleichmäßige Erdrotation bindet, während TAI gleichmäßig fortläuft.
Gravitationsparameter μ Produkt G·M aus Gravitationskonstante und Körpermasse. μ⊙ bezeichnet den Sonnenwert, μE den Erdwert.
Massenverhältnis ηb Verhältnis Mb/M⊙ eines Störkörpers zur Sonne; gleichbedeutend mit μb/μ⊙.
Störkörper Körper, dessen Gravitation die reine Zweikörperbahn zusätzlich beschleunigt.
direkter und indirekter Term Direkt wirkt der Störkörper auf das Objekt; indirekt wird die gleichzeitige Beschleunigung des heliozentrischen Ursprungs abgezogen.
N16 Optionaler Satz der 16 massereichsten Asteroiden, deren Störungen zusätzlich integriert werden.
kubische Hermite-Interpolation Polynominterpolation dritten Grades, die an beiden Tabellenknoten Position und Geschwindigkeit exakt übernimmt.
Little-Endian float64 Binärformat mit dem niederwertigsten Byte zuerst und 64-Bit-Gleitkommazahlen nach IEEE 754.
Runge-Kutta-Verfahren Einschrittverfahren, das mehrere Beschleunigungsauswertungen kombiniert, um den Zustand über einen Zeitschritt fortzuschreiben.
eingebettetes Verfahren Zwei Runge-Kutta-Lösungen verschiedener Ordnung benutzen dieselben Stufen; ihre Differenz schätzt den lokalen Fehler.
Dormand-Prince 5(4) Eingebettetes Runge-Kutta-Paar fünfter und vierter Ordnung mit sieben Stufen.
Butcher-Tafel Tabellarische Anordnung der Runge-Kutta-Koeffizienten ci, aij und bi; sie legt Stufenzeitpunkte, Zwischenzustände und Endgewichte vollständig fest.
lokaler Fehler Geschätzter Fehler eines einzelnen Integrationsschritts, hier aus der Differenz der Lösungen fünfter und vierter Ordnung.
adaptive Schrittweite Automatische Verkleinerung oder Vergrößerung des Zeitschritts anhand der normierten Fehlerschätzung.
RMS Quadratischer Mittelwert; hier die Wurzel aus dem Mittel der sechs quadrierten, skalierten Komponentenfehler.
clamp Begrenzung eines Zahlenwerts auf ein geschlossenes Minimum-Maximum-Intervall.
Lichtlaufzeit Zeit, die das Licht vom Objekt zum Beobachter benötigt; sie verschiebt die ausgewertete Emissionszeit.
Präzession / Nutation Langsame säkulare beziehungsweise kürzerperiodische Änderung der Orientierung der Erdachse.
GMST Mittlere Greenwich-Sternzeit, also der aus UTC abgeleitete Rotationswinkel der Erde relativ zum mittleren Himmelsbezug.
Erd-J2 Führender Koeffizient der Abplattung des Erdschwerefelds gegenüber einer idealen Punktmasse.
Marsden A1/A2/A3 Empirische nichtgravitative Beschleunigungen eines Kometen in radialer, transversaler und normaler Richtung.
RA / Deklination Rektaszension und Deklination; das äquatoriale Koordinatenpaar der scheinbaren Himmelsrichtung.
MPC-ρ-Faktoren Vom Minor Planet Center verwendete dimensionslose Stationsfaktoren für Abstand von Erdachse und Äquatorebene.
Bogensekunde 1/3600 Grad; das Zeichen ″ kennzeichnet diese Winkeleinheit.
Referenzephemeride / Residuum Vergleichsposition aus JPL Horizons beziehungsweise der verbleibende sphärische Winkelabstand zur Kernrechnung.
Kovarianzfortpflanzung Fortrechnung statistischer Unsicherheiten und Korrelationen einer Bahnlösung; sie gehört nicht zum dokumentierten Nominalkern.
Abnahmetest Festgelegter Vergleich, dessen Grenzwert ein Port für die Freigabe einhalten muss.

Die Symbole μ⊙ und μE werden im gesamten Artikel eindeutig unterschieden.

Symbol Bedeutung Wert oder Einheit
μ⊙ = G·M⊙ Heliozentrischer Gravitationsparameter der Sonne 0.0002959122082855911 AE³/Tag²
μE = G·ME Geozentrischer Gravitationsparameter der Erde 8.887692445125148326e-10 AE³/Tag²
μMond = G·MMond Gravitationsparameter des Mondes 1.09318946230584718e-11 AE³/Tag²
ηb = μb/μ⊙ Massenverhältnis eines Störkörpers b zur Sonne dimensionslos
r, v, a Orts-, Geschwindigkeits- und Beschleunigungsvektor AE; AE/Tag; AE/Tag²
t0, Tp, Δ Elementepoche, Perihelzeit und Differenz t0−Tp JD beziehungsweise Tage
q, a, p, e Periheldistanz, große Halbachse, Bahnparameter und Exzentrizität AE beziehungsweise dimensionslos
M, E, H, ν Mittlere, exzentrische, hyperbolische und wahre Anomalie Radiant
Ω, ω, i Knotenlänge, Perihelargument und Inklination Grad bei Eingabe, intern Radiant
c Lichtgeschwindigkeit 173.144632674240 AE/Tag
ρ Topozentrischer Objektvektor beziehungsweise im J2-Abschnitt Erdabstand AE
J2, RE Erdabplattungskoeffizient und Äquatorradius dimensionslos beziehungsweise AE
A1, A2, A3 Nichtgravitative Marsden-Parameter AE/Tag²
T Julianische Jahrhunderte seit J2000 dimensionslos

2. Konventionen, μ und Grundgrößen

Der dynamische Zustand y=[x,y,z,vx,vy,vz] ist heliozentrisch, rechtshändig und auf das äquatoriale J2000-System bezogen. Positionen sind AE, Geschwindigkeiten AE/Tag, Beschleunigungen AE/Tag². Interne Winkel sind Radiant. Bahnelemente, geographische Eingaben und Ergebniswinkel sind Grad.

Das Symbol μ bezeichnet grundsätzlich einen Gravitationsparameter μ=G·M, also das Produkt aus Gravitationskonstante G und Masse M. Ohne Körperindex wurde es in älteren Fassungen missverständlich für die Sonne verwendet. Dieser Artikel schreibt deshalb immer μ⊙=G·M⊙ für die Sonne und μE=G·ME für die Erde. Für einen Störkörper b gilt ηb=μb/μ⊙=Mb/M⊙.

Symbol Exakter Wert Einheit
π 3.141592653589793238462643383279502884 dimensionslos
AE 149597870.7 km
μ⊙ = G·M⊙ 0.0002959122082855911 AE³/Tag²
μE = G·ME 8.887692445125148326e-10 AE³/Tag²
μMond = G·MMond 1.09318946230584718e-11 AE³/Tag²
Lichtgeschwindigkeit 173.144632674240 AE/Tag
Lichtlaufzeit 0.0057755183 Tag/AE
Masse Erde/Sonne 3.0034896149156e-6 dimensionslos
Masse Mond/Sonne 3.6943033497651e-8 dimensionslos
Erdradius 6378.1363 / 149597870.7 AE
J2 Erde 1.08262668e-3 dimensionslos
Schiefe J2000 84381.448 Bogensekunden

3. Anfangszustand aus oskulierenden Elementen

Eingaben sind Epoche t0, Exzentrizität e, Periheldistanz q, Perihelzeit Tp, Knoten Ω, Perihelargument ω und Inklination i. Oskulierend bedeutet, dass diese Elemente an der Epoche dieselbe Position und Geschwindigkeit wie die gestörte Bahn darstellen. Mit μ⊙=G·M⊙ und Δ=t0−Tp wird zuerst die wahre Anomalie ν bestimmt.

3.1 Ellipse

Gültigkeit: e < 1 - 1e-8
a = q / (1 - e)
n = sqrt(μ⊙ / a^3)
M = normalize(n Δ, -π, +π)
E0 = M                    für e < 0.8
E0 = sign(M) π            sonst
Ek+1 = Ek - (Ek - e sin Ek - M) / (1 - e cos Ek)
Abbruch: |Korrektur| < 2e-14 oder nach 80 Iterationen
ν = 2 atan2(sqrt(1+e) sin(E/2), sqrt(1-e) cos(E/2))

3.2 Hyperbel

Gültigkeit: e > 1 + 1e-8
a = q / (e - 1)                    (positive Betragskonvention)
M = sqrt(μ⊙ / a^3) Δ
H0 = asinh(M / e)
Hk+1 = Hk - (e sinh Hk - Hk - M) / (e cosh Hk - 1)
Abbruch: |Korrektur| < 2e-14 oder nach 80 Iterationen
ν = 2 atan2(sqrt(e+1) sinh(H/2), sqrt(e-1) cosh(H/2))

3.3 Parabel und nahezu parabolischer Grenzbereich

Gültigkeit: |e - 1| <= 1e-8
s = sqrt(2 q^3 / μ⊙)
B = Δ / s
D = 2 sinh(asinh(1.5 B) / 3)
ν = 2 atan D

Die Barker-Form verhindert die numerisch schlechte Division durch 1−e oder e−1 im unmittelbaren Parabelbereich. Anschließend gelten für alle drei Fälle:

p = q (1 + e)
r = p / (1 + e cos ν)
v0 = sqrt(μ⊙ / p)
r_orb = [r cos ν, r sin ν, 0]
v_orb = [-v0 sin ν, v0 (e + cos ν), 0]

Die Drehung aus der Bahnebene verwendet Rz(Ω) Rx(i) Rz(ω). Der ausgeschriebene zweidimensionale Eingang [x,y] wird zu:

X = (cosΩ cosω - sinΩ sinω cosi) x + (-cosΩ sinω - sinΩ cosω cosi) y
Y = (sinΩ cosω + cosΩ sinω cosi) x + (-sinΩ sinω + cosΩ cosω cosi) y
Z = (sinω sini) x + (cosω sini) y

Die feste Ekliptik-nach-Äquator-Rotation ist eine x-Achsenrotation um 84381.448 Bogensekunden und wird identisch auf Position und Geschwindigkeit angewandt.

4. Störkörperdaten und Hermite-Interpolation

Jeder Tabellenknoten enthält Position r0 und Geschwindigkeit v0. Für zwei Knoten im Abstand h und u=(t−t0)/h interpoliert der Kern mit den folgenden Polynomen. Eine kubische Hermite-Interpolation übernimmt an beiden Enden Position und Geschwindigkeit exakt; dies sind die vollständigen Reihen und ihre exakten numerischen Koeffizienten:

h00(u) =  2 u^3 - 3 u^2 + 1
h10(u) =    u^3 - 2 u^2 + u
h01(u) = -2 u^3 + 3 u^2
h11(u) =    u^3 -   u^2

r(u) = h00 r0 + h10 h v0 + h01 r1 + h11 h v1

dh00/dt = ( 6 u^2 - 6 u) / h
dh10/dt =   3 u^2 - 4 u + 1
dh01/dt = (-6 u^2 + 6 u) / h
dh11/dt =   3 u^2 - 2 u
v(u) = (dh00/dt) r0 + dh10 v0 + (dh01/dt) r1 + dh11 v1
Störkörper Masse/Sonnenmasse
Merkur 1.660114153054348e-7
Venus 2.447838287784771e-6
Mars 3.227156037554996e-7
Jupiter 9.547919101886966e-4
Saturn 2.858856727222416e-4
Uranus 4.366249662744965e-5
Neptun 5.151383772628673e-5
Pluto 7.350487833457740e-9
N16-Körper Masse/Sonnenmasse
Ceres 4.719154706681575e-10
Pallas 1.0297360324108826e-10
Juno 1.4471670474939703e-11
Vesta 1.3026875547328177e-10
Iris 8.589038999387399e-12
Hygiea 4.238598614896659e-11
Eunomia 1.5243642468487352e-11
Psyche 1.1978215785019767e-11
Euphrosyne 8.133159614634648e-12
Europa 2.0216913527078825e-11
Cybele 7.06871003275745e-12
Sylvia 1.6337820878172953e-11
Thisbe 8.965306556356798e-12
Camilla 1.0878696848144257e-11
Davida 2.9345275747768696e-11
Interamnia 2.1327387533901138e-11

5. Bewegungsgleichung

d/dt [r, v] = [v, a(r,v,t)]

Die solare Grundbeschleunigung ist aS=−μ⊙ r/|r|³. Für einen Störkörper mit heliozentrischer Position rb und Massenverhältnis ηb wird der direkte und indirekte Term gemeinsam addiert:

ab = μ⊙ ηb [(rb - r)/|rb - r|^3 - rb/|rb|^3]

Erde und Mond werden innerhalb 0,2 AE getrennt verwendet, außerhalb als Erde-Mond-Baryzentrum. Die acht übrigen Körper Merkur, Venus, Mars, Jupiter, Saturn, Uranus, Neptun und Pluto wirken stets. N16 wird nur bei gesetztem Schalter und vollständigen Daten ergänzt.

5.1 Relativistische Sonnenkorrektur

arel = μ⊙ / (c^2 |r|^3) * [ (4 μ⊙/|r| - |v|^2) r + 4 (r·v) v ]

5.2 Erd-J2

Innerhalb 0,02 AE von der Erde wird die übliche J2-Beschleunigung im erdfesten Näherungsrahmen des Ports als direkter minus indirekter Term addiert:

μE = G·ME = 8.887692445125148326e-10 AE^3/Tag^2
k = 1.5 J2 μE RE^2 / ρ^5
aJ2,x = k x (5 z^2/ρ^2 - 1)
aJ2,y = k y (5 z^2/ρ^2 - 1)
aJ2,z = k z (5 z^2/ρ^2 - 3)

5.3 Nichtgravitative Beschleunigung

g(r) = α (r/r0)^(-m) [1 + (r/r0)^n]^(-k)
Standard: r0=2.808, α=0.1112620426, m=2.15, n=5.093, k=4.6142
ang = g(r) [A1 er + A2 et + A3 en]

er ist radial, en liegt normal zur Bahnebene in Richtung r×v, und et=en×er ist transversal. Sind A1=A2=A3=0, wird exakt der Nullvektor geliefert.

6. Dormand-Prince 5(4)

Ein eingebettetes Runge-Kutta-Paar erzeugt gleichzeitig eine Lösung fünfter und vierter Ordnung. Die Differenz schätzt den lokalen Fehler. Eine Butcher-Tafel ist die tabellarische Sammlung der Stufenzeitpunkte ci, der Zwischengewichte aij und der Endgewichte bi eines Runge-Kutta-Verfahrens. Sie beschreibt damit den Integrationsschritt vollständig. Sämtliche im Code verwendeten Butcher-Koeffizienten sind:

c2=1/5;       a21=1/5
c3=3/10;      a31=3/40; a32=9/40
c4=4/5;       a41=44/45; a42=-56/15; a43=32/9
c5=8/9;       a51=19372/6561; a52=-25360/2187;
              a53=64448/6561; a54=-212/729
c6=1;         a61=9017/3168; a62=-355/33; a63=46732/5247;
              a64=49/176; a65=-5103/18656
c7=1;         a71=35/384; a72=0; a73=500/1113;
              a74=125/192; a75=-2187/6784; a76=11/84

Ordnung 5: b = [35/384, 0, 500/1113, 125/192,
                -2187/6784, 11/84, 0]
Ordnung 4: b*= [5179/57600, 0, 7571/16695, 393/640,
                -92097/339200, 187/2100, 1/40]

Für jede der sechs Komponenten gilt sc=2e−15+2e−13·max(|yalt|,|yneu|). RMS bedeutet quadratischer Mittelwert; die normierte RMS-Fehlerzahl ist sqrt(sum((Fehler/sc)²)/6). Ein Schritt wird bei Fehlerzahl ≤1 oder |h|≤1e−8 Tag angenommen. Der neue Faktor ist clamp(0.9·Fehlerzahl^(−0.2),0.1,5). clamp begrenzt den Faktor auf das geschlossene Intervall [0,1;5]; bei Fehlerzahl null wird 5 verwendet. Die Schrittweite bleibt zwischen 1e−8 und 0,25 Tag. Eine Integration darf höchstens 1.000.000 Schritte ausführen.

7. Zeitskalen und Beobachter

Die öffentliche Zeit ist UTC. Für die Dynamik wird näherungsweise TDB=UTC+(TAI−UTC+32,184 s)/86400 verwendet. Die implementierten Schaltsekundenstufen lauten:

JD >= 2457754.5 : TAI-UTC = 37 s
JD >= 2457204.5 : TAI-UTC = 36 s
JD >= 2456109.5 : TAI-UTC = 35 s
JD >= 2454832.5 : TAI-UTC = 34 s
JD >= 2453736.5 : TAI-UTC = 33 s
sonst          : TAI-UTC = 32 s

Mit T=(JDUTC−2451545)/36525 wird GMST in Grad berechnet. Die folgenden Polynome und kurzen trigonometrischen Reihen sind vollständig und enthalten alle im Port verwendeten Zahlen:

GMST = 280.46061837 + 360.98564736629 (JD-2451545)
       + 0.000387933 T^2 - T^3/38710000

L_sun  = 280.4665  + 36000.7698 T              [Grad]
L_moon = 218.3165  + 481267.8813 T             [Grad]
Ω_moon = 125.04452 - 1934.136261 T             [Grad]

Δψ = -17.20 sin Ω_moon -1.32 sin(2 L_sun)
     -0.23 sin(2 L_moon) +0.21 sin(2 Ω_moon)   [Bogensekunden]
Δε =  9.20 cos Ω_moon +0.57 cos(2 L_sun)
     +0.10 cos(2 L_moon) -0.09 cos(2 Ω_moon)   [Bogensekunden]

ε0 = 23 + 26/60 + 21.448/3600 Grad
     -(46.8150 T + 0.00059 T^2 - 0.001813 T^3) Bogensekunden

ζ = 2306.2181 T + 0.30188 T^2 + 0.017998 T^3  [Bogensekunden]
z = 2306.2181 T + 1.09468 T^2 + 0.018203 T^3  [Bogensekunden]
θ = 2004.3109 T - 0.42665 T^2 - 0.041833 T^3 [Bogensekunden]

Der geozentrische Standortvektor wird aus MPC-ρ-Faktoren oder geodätischer Länge, Breite und Höhe gebildet, mit scheinbarer Sternzeit rotiert und über Nutation sowie Präzession nach J2000 zurückgeführt.

8. Lichtlaufzeit und scheinbare Richtung

Der Erdzustand und Beobachter werden zur Empfangszeit bestimmt. Für die Emissionszeit wird höchstens fünfmal iteriert:

t_emit,0 = t_TDB
ρk = r_object(t_emit,k) - r_earth(t_TDB) - r_observer(t_UTC)
t_emit,k+1 = t_TDB - |ρk| * 0.0057755183
Abbruch: |t_emit,k+1 - t_emit,k| < 1e-12 Tag

RA  = normalize(atan2(ρy,ρx), 0, 2π)
Dec = atan2(ρz, sqrt(ρx^2+ρy^2))

9. Binärtabellen

Planetenblöcke sind von 2000 bis 2040 in neun überlappende Zeitabschnitte geteilt und verwenden 0,5 Tag Schrittweite. N16 verwendet ebenfalls neun Blöcke und exakt 1,9999817474948436 Tage. Die Überlappung erlaubt sichere Hermite-Interpolation an Abschnittsgrenzen. Alle Werte sind Little-Endian float64.

Datensatz Zeitraum Schritt Inhalt
Planeten 2000–2040 0,5 Tag 11 Körper: EMB, Erde, Mond, Merkur bis Pluto
N16 2000–2040 1,9999817474948436 Tage 16 massereiche Asteroiden

10. Extrembeispiele

Die nachfolgende Tabelle nennt UTC, eingefrorene JPL-Horizons-Referenz, die C-Port-Rechnung und den sphärisch genäherten Winkelabstand. Station A68 und dieselben nominalen Elemente wurden verwendet. Werte sind Grad.

Bahnform und Periheldistanz der sechs Prüffälle.

Objekt Epoche JD e q AE
433 Eros 2453311.5 0.2228078944584026 1.133355399799004
C/2023 A3 2460448.5 1.000095309222603 0.3914300307809727
2P Encke 2459847.5 0.8477496967533629 0.3379482792219925
2I Borisov 2458853.5 3.356475782676596 2.006520878500843
99942 Apophis 2459215.5 0.19152168935010219 0.74582704784665232
367943 Duende 2456158.5 0.10812843436824709 0.893491631652941

Perihelzeit und Orientierung der Bahnebene.

Objekt Tp TDB Ω ° ω ° i °
433 Eros 2453371.5859943051 304.40102733795362 178.665326776373 10.8291838260782
C/2023 A3 2460581.24084083 21.55947863619833 308.4917712569641 139.1121095087364
2P Encke 2460239.6495185494 334.1935846036774 187.1342463695676 11.41227811179314
2I Borisov 2458826.052845906 308.1477292269942 209.1236864378081 44.05264247909138
99942 Apophis 2459101.0394224627 204.0389272089208 126.65205183685531 3.3367513200667558
367943 Duende 2456261.554400227 147.2625010881184 271.08746874977783 10.33728752192523

Nichtgravitative Parameter; null bedeutet, dass der jeweilige Term entfällt.

Objekt A1 / A2 / A3
433 Eros 0 / 0 / 0
C/2023 A3 1.4218744044776211e-8 / 1.3486232284695711e-9 / 0
2P Encke 2.34758107815004e-10 / -6.540690743894436e-13 / 0
2I Borisov 4.8595882640274848e-8 / 1.8798986909513609e-8 / 2.8355032201284751e-9
99942 Apophis 5e-13 / -2.9017666371531647e-14 / 0
367943 Duende 0 / 0 / 0

Eingefrorene JPL-Horizons-Referenzpositionen.

Objekt UTC JPL RA ° JPL Dec °
433 Eros 2026-07-21 22:00:00 188.352878680 -15.485731924
433 Eros 2026-07-22 22:00:00 189.033073621 -15.673602566
433 Eros 2026-07-23 22:00:00 189.712493431 -15.860306533
C/2023 A3 2026-07-21 22:00:00 270.131469713 20.765253967
C/2023 A3 2026-07-22 22:00:00 269.997011490 20.710979861
C/2023 A3 2026-07-23 22:00:00 269.864375552 20.655473422
2P Encke 2026-07-21 22:00:00 22.086326480 16.151079557
2P Encke 2026-07-22 22:00:00 22.204227929 16.258348832
2P Encke 2026-07-23 22:00:00 22.318311808 16.365096989
2I Borisov 2019-12-08 00:00:00 171.852537543 -17.895950115
2I Borisov 2019-12-09 00:00:00 172.269466247 -18.665188729
2I Borisov 2019-12-10 00:00:00 172.685173642 -19.435471809
99942 Apophis 2029-04-13 20:30:00 162.187610650 -1.853259832
99942 Apophis 2029-04-13 20:40:00 158.279644424 0.774049246
99942 Apophis 2029-04-13 20:50:00 153.882081064 3.710242552
99942 Apophis 2029-04-13 21:00:00 148.942949743 6.944475706
367943 Duende 2013-02-15 19:15:00 180.339825182 -21.468034850
367943 Duende 2013-02-15 19:20:00 180.569814701 -17.847154119
367943 Duende 2013-02-15 19:25:00 180.799653390 -14.126076156
367943 Duende 2013-02-15 19:30:00 181.029779486 -10.326525675

Berechnete Positionen und sphärischer Winkelabstand zur Referenz.

Objekt UTC Kern RA ° Kern Dec ° Δ ″
433 Eros 2026-07-21 22:00:00 188.352878496 -15.485732361 0.001696
433 Eros 2026-07-22 22:00:00 189.033073460 -15.673603008 0.001687
433 Eros 2026-07-23 22:00:00 189.712493295 -15.860306981 0.001680
C/2023 A3 2026-07-21 22:00:00 270.131471956 20.765254400 0.007710
C/2023 A3 2026-07-22 22:00:00 269.997013729 20.710980297 0.007701
C/2023 A3 2026-07-23 22:00:00 269.864377787 20.655473860 0.007693
2P Encke 2026-07-21 22:00:00 22.086326254 16.151079161 0.001626
2P Encke 2026-07-22 22:00:00 22.204227701 16.258348433 0.001638
2P Encke 2026-07-23 22:00:00 22.318311578 16.365096587 0.001650
2I Borisov 2019-12-08 00:00:00 171.852535053 -17.895966055 0.058015
2I Borisov 2019-12-09 00:00:00 172.269463755 -18.665203001 0.052076
2I Borisov 2019-12-10 00:00:00 172.685171171 -19.435484512 0.046495
99942 Apophis 2029-04-13 20:30:00 162.187667572 -1.853286529 0.226242
99942 Apophis 2029-04-13 20:40:00 158.279702838 0.774021995 0.232031
99942 Apophis 2029-04-13 20:50:00 153.882138225 3.710216547 0.225683
99942 Apophis 2029-04-13 21:00:00 148.943005706 6.944451473 0.218189
367943 Duende 2013-02-15 19:15:00 180.339837945 -21.468014339 0.085326
367943 Duende 2013-02-15 19:20:00 180.569829577 -17.847141796 0.067577
367943 Duende 2013-02-15 19:25:00 180.799668504 -14.126072752 0.054168
367943 Duende 2013-02-15 19:30:00 181.029797039 -10.326531491 0.065598

433 Eros prüft die gewöhnliche Ellipse. C/2023 A3 liegt fast auf der Parabel und enthält A1/A2. 2P/Encke ist ein periodischer Komet mit Nichtgravitation. 2I/Borisov erzwingt e=3,356475782676596 und A1/A2/A3. Apophis und Duende prüfen die rasche Richtungsänderung bei dichter Erdpassage.

11. Reproduzierbarkeit und Grenzen

Anhang A. Vergleich der Programmiersprachen

Alle erfolgreichen Fassungen bestanden dieselben 20 Referenzzeilen. Die Genauigkeitstabelle ist alphabetisch nach Sprache sortiert. Die getrennte Geschwindigkeitstabelle ist nach der Medianzeit aufsteigend sortiert, also mit der schnellsten Fassung zuerst. Die Zeiten beziehen sich auf sechs Fälle, die je Sprache siebenmal in sprachübergreifend wechselnder Reihenfolge gerechnet wurden; sie zeigen auf diesem Rechner nur die relative Laufzeit.

A.1 Genauigkeit, alphabetisch

Maximaler sphärischer Winkelabstand über alle 20 Referenzzeilen.

Sprache Max. Δ ″ Ergebnis Quelle B Paket B Werkzeug
Ada 0.223931 PASS 65.773 520.661 GNAT/GCC 15.2.0 (MSYS2)
B4X 0.232382 PASS 63.915 550.906 B4J 10.50
Ballerina 0.238317 PASS 54.944 546.455 Ballerina Swan Lake 2201.13.4
BlitzMax 1.203843 PASS 91.196 549.418 BlitzMax NG 0.154.3.58
C 0.232031 PASS 55.659 565.802 GCC 16.1.0
C# 0.232031 PASS 50.345 545.734 .NET SDK 8.0.423
C++ 0.238317 PASS 56.461 546.717 Microsoft Visual C++ Community
Clojure 0.235614 PASS 45.101 486.240 Clojure 1.12.5 / OpenJDK
Common Lisp 0.223203 PASS 45.225 496.773 SBCL 2.6.6
D 0.250215 PASS 38.210 514.240 DMD 2.112.0
Dart 0.228185 PASS 42.668 538.284 Dart 3.12.2
Delphi/Object Pascal 0.232316 PASS 56.636 524.660 Free Pascal 3.2.2
Elixir 0.243787 PASS 53.273 575.919 Elixir 1.20.2 / Erlang OTP 29
Erlang 0.243787 PASS 52.475 583.700 Erlang/OTP 29.0.3
F# 0.216606 PASS 121.927 758.208 .NET SDK 8.0.423
Factor 51.049773 PASS 43.312 493.140 Factor 0.101
Fantom 0.238317 PASS 54.847 549.148 Fantom 1.0.83
Fortran 0.226948 PASS 51.037 495.006 GNU Fortran 16.1.0
FreeBASIC 0.252308 PASS 66.512 580.763 FreeBASIC 1.10.1
GNU Octave 38.034360 PASS 35.427 503.786 GNU Octave 11.3.0
Go 0.239381 PASS 39.667 526.531 Go 1.26.5
Groovy 2.810988 PASS 47.731 586.421 Apache Groovy 5.0.2 / OpenJDK
Haskell 0.259614 PASS 44.580 498.045 GHC 9.10.3
Haxe 0.228185 PASS 46.913 533.441 Haxe 4.3.7
Java 0.238317 PASS 46.825 548.599 Microsoft OpenJDK 25.0.3
JavaScript 0.236219 PASS 107.767 592.039 Node.js 24.15.0 / Browser ES Modules
Julia 0.229764 PASS 30.958 477.282 Julia 1.12.6
Kotlin 0.238317 PASS 39.887 505.280 Kotlin 2.4.10 / OpenJDK
Lua 0.216606 PASS 41.719 521.245 Lua 5.4
Nim 0.228185 PASS 38.024 520.143 Nim 2.2.10
OCaml 0.232382 PASS 119.362 724.314 OCaml 5.4.0
Perl 0.236719 PASS 43.107 469.668 Perl 5
PHP 0.232031 PASS 33.017 516.442 PHP 8.3.30 CLI
PowerShell 37.997961 PASS 49.973 470.165 PowerShell 7.6.4
Prolog 38.032226 PASS 55.733 632.243 SWI-Prolog 10.0.2
Python 0.082129 PASS 218.903 787.360 Python 3.11.9
R 0.231526 PASS 33.980 506.812 R 4.6.1
Racket 0.218560 PASS 44.652 482.854 Racket 9.2
Ruby 0.238317 PASS 37.165 506.816 Ruby 3.4
Rust 0.228185 PASS 49.635 541.242 rustc 1.94.1
Scala 0.238317 PASS 43.107 499.504 Scala CLI 1.15.0 / OpenJDK
Smalltalk 42.792737 PASS 34.747 422.800 Pharo 12
Squirrel 0.228185 PASS 44.919 530.616 Squirrel 3 with float64 build
Tcl 0.232382 PASS 47.620 468.744 Tcl 8.6
TypeScript + WebAssembly 0.239511 PASS 57.170 555.531 TypeScript 7.0.2, Rust WASI, Node.js 24.15.0
V 0.236584 PASS 40.341 507.133 V 0.4
Vala/Genie 0.228185 PASS 74.030 589.922 Vala 0.56
Visual Basic .NET 0.232031 PASS 102.111 650.099 .NET SDK 8.0.423
Zig 0.239824 PASS 44.555 524.110 Zig 0.16.0

A.2 Geschwindigkeit, schnellste zuerst

Der Faktor 1,000 bezeichnet die schnellste Medianzeit des Prüflaufs.

Rang Sprache Minimum ms Median ms Maximum ms Faktor
1 TypeScript + WebAssembly 597.377 700.999 1047.449 1.000
2 Fortran 596.688 750.360 1158.344 1.070
3 Rust 523.705 823.898 1294.582 1.175
4 B4X 775.000 971.000 2194.000 1.385
5 Haxe 39.747 1077.578 2013.806 1.537
6 Delphi/Object Pascal 937.000 1078.000 1672.000 1.538
7 Zig 1035.454 1160.447 2320.055 1.655
8 C++ 1223.592 1441.870 2671.024 2.057
9 Java 1284.711 1458.187 3353.160 2.080
10 C 1343.938 1486.065 3056.110 2.120
11 Kotlin 1176.612 1593.443 5530.074 2.273
12 Ada 1460.014 1640.974 3057.029 2.341
13 V 1575.736 1878.741 2571.347 2.680
14 D 1546.526 1890.757 4220.870 2.697
15 Go 1468.523 2141.171 9256.961 3.054
16 Visual Basic .NET 1696.939 2216.958 3742.810 3.163
17 F# 1783.725 2231.113 3564.241 3.183
18 Nim 2119.599 2326.564 5060.611 3.319
19 C# 2374.419 2552.401 6731.288 3.641
20 Dart 2190.595 2733.704 5027.791 3.900
21 Scala 2073.900 3242.849 7436.041 4.626
22 OCaml 2669.212 3467.746 8892.401 4.947
23 FreeBASIC 2767.911 3570.477 5810.864 5.093
24 Julia 3434.719 4304.078 8335.834 6.140
25 Fantom 4241.671 5794.304 8545.390 8.266
26 Vala/Genie 4412.042 5820.308 8666.353 8.303
27 Haskell 6047.352 8690.853 14693.710 12.398
28 BlitzMax 7899.000 8742.000 12931.000 12.471
29 JavaScript 7724.900 10157.720 23217.210 14.490
30 Common Lisp 11056.269 14392.095 22933.360 20.531
31 Ballerina 12341.616 16894.464 33663.612 24.101
32 Racket 16694.584 21229.729 44060.672 30.285
33 Erlang 19354.829 24802.406 45274.726 35.381
34 Elixir 23434.035 29699.584 53299.712 42.367
35 PHP 41451.985 49798.621 104949.488 71.039
36 Prolog 49043.000 69317.000 255244.000 98.883
37 Lua 53249.000 69977.000 130427.000 99.825
38 Squirrel 55843.000 71891.000 119351.000 102.555
39 Clojure 55241.707 72206.563 171065.047 103.005
40 Ruby 66049.112 90263.925 168102.051 128.765
41 Factor 70004.415 94462.332 151220.285 134.754
42 Smalltalk 65113.000 95089.000 157550.000 135.648
43 Groovy 68129.578 95282.139 143061.528 135.923
44 Python 74058.281 138890.584 308314.450 198.132
45 Perl 108115.457 154930.755 276448.215 221.014
46 PowerShell 206315.845 250942.054 717706.460 357.978
47 Tcl 202078.602 265143.768 494701.078 378.237
48 R 168780.000 343730.000 910730.000 490.343
49 GNU Octave 315324.607 419255.178 922894.954 598.082

Anhang B. Lizenzabgrenzung

Der projektgeschriebene Rechenkern und die zugehörigen Generatoren und Hilfen stehen, soweit LICENSE-SCOPE.md sie erfasst, unter Apache License 2.0. Datentabellen, externe Ephemeriden, JPL-Kernel und Drittprogramme sind getrennt zu beurteilen. Eine Weitergabe muss LICENSE und NOTICE beilegen, Copyright- und Lizenzvermerke erhalten und geänderte Dateien kenntlich machen. Patentlizenz und Kündigungsregel ergeben sich aus Abschnitt 3 der Apache-Lizenz.

Projektwebseite: https://www.jostjahn.de/amrum-software/ephemeris/