Wikipedia gives $10759.22$ days for sidereal period of Saturn. I have calculated a period from de441_part-1.bsp and obtained $10736.247\bar{2}$ days. Why such a big difference? Which is more accurate? What accuracy in percentage I can expect from periods of Jupiter, Saturn, Uranus and Neptune?

EDIT: Code in Python 2.7:

from datetime import datetime, timedelta
from skyfield.api import load
from skyfield.framelib import ecliptic_frame

def f(t):
    eph = load('de441_part-1.bsp')
    sun_eph = eph['sun']
    s_eph = eph['saturn barycenter']
    _, s_lon, _ = sun_eph.at(t).observe(s_eph).frame_latlon(ecliptic_frame)
    s_angle = s_lon._degrees
    print("s_angle = ", s_angle)

ts = load.timescale()
t0 = ts.utc(-13188, 8, 11, 14, 4)
# ('s_angle = ', 1.7441721183417348e-05)
t1 = ts.utc(1878, 10, 8, 3, 55)
# ('s_angle = ', 1.4075963901504881e-05)
# 10747.657377115886

Indeed there was error somewhere, now I got another number, but it still is not equal to that of Wikipedia.


1 Answer 1


The planetary orbits can not strictly be described by the usual Kepler elements anymore as they are disturbed by the other planets (Saturn in particular will for instance be heavily affected by Jupiter). The Kepler elements can therefore not be accurately defined but are only used as 'osculating elements' that approximate the actual orbit but vary from point to point. If you go to NASA's Horizons website and get the ephemeris for the last Saturn year, you can see that the sidereal period (which is calculated for each point via Kepler's law from the semimajor axis A) varies from PR=1.072402392741634E+04 d to PR=1.083416198008542E+04 d over one Saturn orbit, whereas in the header data it gives 10755.698 d for the sidereal period (which is some average over recent data for a not further specified period).

So as the orbital period (and the other Kepler elements) fluctuate in this sense with time, they are not really suitable to use as fixed values for applications where high accuracy is needed. And for uncritical applications any value that falls within the range of the fluctuations should do.

  • $\begingroup$ We should also remember that the Sun itself doesn't even "stay in one place" but dances around with Jupiter, Saturn, Uranus and Neptune; the last of which is surprising because of its low relative mass until one considers that it makes up for that with distance. $\endgroup$
    – uhoh
    Jan 21, 2022 at 23:21
  • 1
    $\begingroup$ @uhoh If you select 'osculating orbital elements' as the ephemeris type in the |Horizons app, these will refer to the center of the sun anyway (as they are essentially Kepler elements, albeit time dependent). It is only if you select 'Vector table' (i.e. x,y,z coordinates) that they are referred to the barycenter of the solar system. $\endgroup$
    – Thomas
    Jan 22, 2022 at 9:47
  • 1
    $\begingroup$ @uhoh You can not refer the osculating orbital elements to any other than the center of the sun. It will result in an error message in the Horizons app if you try to do that. You can only do it for if you select ''Vector Table' (which gives you x,y,z coordinates) or 'Observer Table' (which gives you RA,DEC) $\endgroup$
    – Thomas
    Jan 22, 2022 at 12:27
  • 1
    $\begingroup$ @uhoh I was referring to the osculating orbital elements of planets above. In general, they are only defined with regard to the primary body of the orbit. So you can not refer the orbital elements of a moon of Saturn to Jupiter for instance. You will get the error message "Cannot output osculating elements of satellite wrt non-primary center body". In this case you can select only Saturn or the Sun (in the latter case it gives some non-sensical elements though like a negative semi-major axis and and infinite orbital period) $\endgroup$
    – Thomas
    Jan 22, 2022 at 13:11
  • 1
    $\begingroup$ @uhoh This error message when trying to use a reference point other than the primary body has been appearing at lest for the least 2 years or so (I have not used Horizons much before that, so I could not tell how it used to be). You can of course choose the solar system barycenter as reference point for the osculating orbital elements, but this is not how they are normally defined and used. There would be a high risk of misinterpreting your data if you define them this way. Anyway, this option has disappeared from the dropdown menu. You have to explicitly type 500@0 for this. $\endgroup$
    – Thomas
    Jan 23, 2022 at 19:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .