# Neptune's eccentricity stability

Will Neptune's orbital eccentricity remain lower than earth's forever? It currently is at around 0.008, compared to Earth's 0.0167.

Earth's Eccentricity varies between about 0.000055 and 0.0679. This is the first Milankovich cycle. When Earth' eccentricity is at its lowest, it is lower than that of Neptune.

The Earth's orbit approximates an ellipse. Eccentricity measures the departure of this ellipse from circularity. The shape of the Earth's orbit varies between nearly circular (with the lowest eccentricity of 0.000055) and mildly elliptical (highest eccentricity of 0.0679).4 Its geometric or logarithmic mean is 0.0019. The major component of these variations occurs with a period of 413,000 years (eccentricity variation of ±0.012). Other components have 95,000-year and 125,000-year cycles (with a beat period of 400,000 years). They loosely combine into a 100,000-year cycle (variation of −0.03 to +0.02). The present eccentricity is 0.017 and decreasing.

4Laskar J, Fienga A, Gastineau M, Manche H (2011). "La2010: A New Orbital Solution for the Long-term Motion of the Earth" PDF. Astronomy & Astrophysics. 532 (A889): A89. arXiv:1103.1084

• Without saying something about what Neptune's orbit will do in the long term, this is not yet an answer. The title of the question is "Neptune's eccentricity stability" and in the body the OP asks "Will Neptune's orbital eccentricity remain lower than earth's forever?" But this only talk about Earth's orbit likely because a Wikipedia page for Earth's orbit was easy to find. This is a helpful comment only. -1
– uhoh
Oct 21, 2021 at 4:18
• @uhoh indeed. This doesn't answer my question, only gives a lovely background of the question if you ask it about Earth Oct 21, 2021 at 11:21
• The very first sentence here does answer the question, though. Oct 21, 2021 at 13:33
• @RoryAlsop the question is about the time variation of Neptune's eccentricity; "Will Neptune's orbital eccentricity remain lower than earth's forever?" The first sentence in this answer takes Neptune's eccentricity as a constant, exactly the opposite of what's asked.
– uhoh
Oct 22, 2021 at 2:27
• No, it doesn't say anything of the sort @uhoh. You have interpreted it to say it's a constant, but that is just your assumption. Oct 22, 2021 at 20:22

tl;dr: It will be around the year 14,800 that Earth's eccentricity drops below that of Neptune's.

It's unusual to post two answers, but this one is sufficiently different that in this case I think it's better as the contents and comments they may attract may be quite different.

Lucky for us the one of the JPL development ephemerides' latest releases goes out beyond AD 17,000! See Ryan S. Park et al 2021 AJ 161 105 The JPL Planetary and Lunar Ephemerides DE440 and DE441.

Also lucky for us the Python package Skyfield can download and interpolate the ephemerides for us in an easy to use way.

However once we have state vectors (position and velocities) rather than orbital elements, we need to decide what "eccentricity" means. Orbital elements assume Kelperian trajectories and what we have is numerically integrated solutions to an n-body problem.

So I'll use an ad hoc definition $$e = (r_{max} - r_{max}) / (r_{max} + r_{max})$$ and look at two distances; heliocentric and barycentric.

We can't use osculating orbital elements since those are constantly changing within a single orbit.

Here are the results. Every 200 years I calculate Neptune's position twice a year (total of 332 times per orbit) and every 50 years I calculate Earth's position once a day (367 times per orbit) then apply the equation above to get the two eccentricities.

The result agrees qualitatively with my other answer, but since I show more accurate numerical data rather than ballparking the plots, I can now say that it will be around the year 14,800 that Earth's eccentricity drops below that of Neptune's.

from skyfield import api
import numpy as np
import matplotlib.pyplot as plt

ts = loaddata.timescale() # include builtin=True if you want to use older files (you may miss some leap-seconds)

sun = eph['sun']
earth = eph['earth barycenter']
neptune = eph['neptune barycenter']

# Neptune
years_neptune = np.arange(2000, 17001, 200)
yearz = np.arange(0, 165.6, 0.5)
e_neptune_bary, e_neptune_helio = [], []
for year in years_neptune:
y = year + yearz
times = ts.utc(year + yearz, 1, 1)

x_bary = neptune.at(times).position.km
r_bary = np.sqrt((x_bary**2).sum(axis=0))
e_bary = (r_bary.max() - r_bary.min()) / (r_bary.max() + r_bary.min())
e_neptune_bary.append(e_bary)

r_helio  = neptune.at(times).observe(sun).apparent().distance().km
e_helio = (r_helio.max() - r_helio.min()) / (r_helio.max() + r_helio.min())
e_neptune_helio.append(e_helio)

e_neptune_bary = np.array(e_neptune_bary)
e_neptune_helio = np.array(e_neptune_helio)

# Earth
years_earth = np.arange(2000, 17001, 50)
days = np.arange(367)
e_earth_bary, e_earth_helio = [], []
for year in years_earth:
times = ts.utc(year, 1, days)

x_bary = earth.at(times).position.km
r_bary = np.sqrt((x_bary**2).sum(axis=0))
e_bary = (r_bary.max() - r_bary.min()) / (r_bary.max() + r_bary.min())
e_earth_bary.append(e_bary)

r_helio  = earth.at(times).observe(sun).apparent().distance().km
e_helio = (r_helio.max() - r_helio.min()) / (r_helio.max() + r_helio.min())
e_earth_helio.append(e_helio)

e_earth_bary = np.array(e_earth_bary)
e_earth_helio = np.array(e_earth_helio)

if True:
fig, (ax1, ax2, ax3) = plt.subplots(3, 1)
ax1.plot(years_neptune, e_neptune_bary, label='barycentric')
ax1.plot(years_neptune, e_neptune_helio, label='heliocentric')
ax1.set_xlim(1950, 17050)
ax1.set_ylim(0, None)
ax1.legend()
ax1.set_ylabel('eccentricity')
ax2.plot(years_earth, e_earth_bary, label='barycentric')
ax2.plot(years_earth, e_earth_helio, label='heliocentric')
ax2.set_xlim(1950, 17050)
ax2.set_ylim(0, None)
ax2.legend()
ax2.set_ylabel('eccentricity')
ax3.plot(years_neptune, e_neptune_bary, label='Neptune barycentric')
ax3.plot(years_earth, e_earth_helio, label='Earth heliocentric')
ax3.set_xlim(1950, 17050)
ax3.set_ylabel('eccentricity')
ax3.set_xlabel('Year')
ax3.set_ylim(0, None)
ax3.legend()
fig.suptitle('DE441, e = rmax-rmin / rmax+rmin', fontsize=14)
plt.show()


Will Neptune's orbital eccentricity remain lower than earth's forever?

tl;dr: No, in about 10,000 years Earths' will go below Neptune's, which stays above it's current value for the next ~400,000 years.

It is hard to consider "forever" for two reasons:

1. "forever" is a long time
2. While numerical integration can be arbitrarily accurate, the inputs needed to model the solar system (e.g. exact positions and velocities at $$t_0$$ and masses) can't be ascertained, and the calculation integrating from now until "forever" (or at least until the Sun expands and eats the Earth) is extremely long.

@JamesK's answer cites a source that suggests Earth's eccentricity oscillates at several frequencies and will range between about 5.5×10-5 and 6.8×10-2.

The orbital evolution of the Sun–Jupiter–Saturn–Uranus–Neptune system on long time scales (also here) show Neptune staying fairly low in eccentricity for 2 million years, but never going anywhere near as low as Earth is expected to.

### No. Not "forever" and not even for very long!

So for the next two million years or so, Neptune's eccentricity will remain in the same ballpark, whereas Earth's will repeatedly dip way below it.

From here showing that Neptune will stay above it's current 0.008 eccentricity for at least 400,000 years.

below: Cropped from Milankovitch Cycles Orbit and Cores and annotated to show Neptune's minimum for the next 400 kiloyears.

It looks like in very roughly only 10,000 years Earth's eccentricity will dip below that of Neptune's.

• Thank you for the informative answer! If Neptune's eccentricity won't stay as it is forever, what's its lowest and highest? Oct 25, 2021 at 4:02