Ich versuche, die Ausgabe des HORIZONS -Systems mit dem SPICE-Toolkit der NASA zu reproduzieren, erhalte jedoch nicht genau die gleichen Ergebnisse. Ich verwende dieses Skript, um die Position und Geschwindigkeit des Venus-Baryzentrums im J2000-Frame mit der spkez-Funktion ( Python -Dokumentation ) zu berechnen.
import spiceypy as spice
SSB_ID = 0
VENUS_ID = 299
FRAME = 'J2000' # Earth mean equator and equinox of J2000
#FRAME = 'ECLIPJ2000' # Mean ecliptic and equinox of J2000
print(spice.tkvrsn("TOOLKIT"))
spice.furnsh("./cassMetaK.txt")
utc = '2017-09-01 12:05:50'
et = spice.str2et(utc)
state, lightTimes = spice.spkez(VENUS_ID, et, 'J2000', 'NONE', SSB_ID)
position = state[:3]
velocity = state[3:]
print(position)
print(velocity)
Meine Kerne:
$ cat cassMetaK.txt
\begindata
KERNELS_TO_LOAD=(
'naif0009.tls',
'de431.bsp',
)
\begintext
Dies sind die Werte für Position und Geschwindigkeit, die ich bekomme:
CSPICE_N0066
[ 19217297.26117753 97944611.05090818 42842518.49871409]
[-34.60894367 4.64339943 4.27861046]
Und beachten Sie die geringfügigen Unterschiede zur HORIZONS-Ausgabe:
*******************************************************************************
Ephemeris / WWW_USER Mon Sep 4 00:46:19 2017 Pasadena, USA / Horizons
*******************************************************************************
Target body name: Venus (299) {source: DE431mx}
Center body name: Solar System Barycenter (0) {source: DE431mx}
Center-site name: BODY CENTER
*******************************************************************************
Start time : A.D. 2017-Sep-01 12:05:50.0000 TDB
Stop time : A.D. 2017-Sep-02 00:00:00.0000 TDB
Step-size : 1440 minutes
*******************************************************************************
Center geodetic : 0.00000000,0.00000000,0.0000000 {E-lon(deg),Lat(deg),Alt(km)}
Center cylindric: 0.00000000,0.00000000,0.0000000 {E-lon(deg),Dxy(km),Dz(km)}
Center radii : (undefined)
Output units : KM-S
Output type : GEOMETRIC cartesian states
Output format : 3 (position, velocity, LT, range, range-rate)
Reference frame : ICRF/J2000.0
Coordinate systm: Earth Mean Equator and Equinox of Reference Epoch
*******************************************************************************
JDTDB
X Y Z
VX VY VZ
LT RG RR
*******************************************************************************
$$SOE
2457998.004050926 = A.D. 2017-Sep-01 12:05:50.0000 TDB
X = 1.921958776713952E+07 Y = 9.794430371601710E+07 Z = 4.284223531920820E+07
VX=-3.460881129595693E+01 VY= 4.644081825248464E+00 VZ= 4.278909130085439E+00
LT= 3.623116682955181E+02 RG= 1.086183056003940E+08 RR=-2.484635847985155E-01
$$EOE
Ich weiß, dass die Fehler unter 0,1 % liegen, aber es ist sehr wichtig für mich zu wissen, wie genau HORIZONS diese Werte berechnet, wenn nicht mit dem Code, den ich verwende. Was kann die Quelle dieser Abweichungen sein?
Basierend auf dieser Antwort in spice-discussion muss man die Zeit explizit als TDB eingeben, wie folgt:
tdb = '2017-09-01 12:05:50 TDB'
et = spice.str2et(tdb)
Dann stimmen die Ergebnisse genau überein:
CSPICE_N0066
[ 19219587.76713952 97944303.7160171 42842235.3192082 ]
[-34.6088113 4.64408183 4.27890913]
äh
Timescale
.astrojuanlu
astropy.time
dafür. Wenn Sie mehr Python sehen möchten, schauen Sie sich das unbedingt an ;) docs.poliastro.spaceäh