Вот как это должно работать. Создать новый EllipticalBody:
tesla=ephem.EllipticalBody()
tesla.name='Tesla Roadster'
затем установите параметры (определения параметров из здесь и здесь ):
tesla._epoch=2458164.5 #julian date of osculating elements
tesla._e=0.2585469914787243 #eccentricity
tesla._Om='317.3549094214575' #longitude of ascending node wrt ecliptic
tesla._om='177.3203028023227' #argument of perihelion wrt ecliptic
tesla._inc='1.088451292866039' #inclination of orbit plane wrt ecliptic
tesla._H=25.289 #absolute magnitude parameter
tesla._G=0.15 #magnitude slope parameter
tesla._epoch_M=??? #probably the same as tesla._epoch
tesla._M=??? #unknown quantity, see below
tesla._a=??? #unknown quantity, see below
Возможно, эпоха неправильна, поскольку J2000 эквивалентен 2451545.0, а в PyEphem - 36525.0, и в этом случае, по моим расчетам, возможно
tesla._epoch=43144.5
затем запустите compute:
tesla.compute()
Но даже в этом случае, я не знаю, кем должны быть М или А. ГОРИЗОНТЫ должны выводить эти параметры как MA и A соответственно, но они не очевидны из данных. Теоретически, они могут быть получены из TP (Perihelion Julian Date) и QR (Perihelion Distance), которые даны (поскольку HORIZONS вычисляет их из MA и A для внутреннего использования в руководстве пользователя), но я не полностью уверен, как это сделать.
Некоторые возможности: из документации XEphem я выучил несколько основных формул:
- a = q / (1-e) (поскольку q = QR из HORIZONS, a = 1.3299017090067253)
- M = n (E-T) (T - TP от ГОРИЗОНТОВ)
- п = 0,9856076686 / Р
- P = а ** (3/2)
- M = 6,991725093611749
Дело в том, что в то время как все выглядит хорошо и прекрасно, когда вы вставляете это, цифры сильно отличаются от того, что заявляет ГОРИЗОНТ.