I'm starting to study orbital perturbations and I can't find any physical explanation about the perigee advance (apsidal precession) when considering Earth oblateness effects. Can someone give a physical explanation or recommend a book/article to read?.

PS: From the equations it is quite clear that it must happen, but I am looking for some sort of physical meaning similar to the change in angular momentum due to equatorial bulges when studying nodes regression.

  • $\begingroup$ This is an interesting question! If you can mention or add a link to what you are currently reading, it might be helpful for an answer to be written with similar language/terminology. I noticed my first few clicks into Wikipedia failed to find a derivation or even a formula, but I was surprised to learn that the Moon's apsidal precession period is only 8.85 years, which means every orbit around the Earth advances its periapsis by about 3 degrees! It's even faster than the nodal precession period of 18.60 years. Amazing! $\endgroup$
    – uhoh
    Commented Oct 4, 2017 at 16:03
  • $\begingroup$ I have a hunch that the math for an artificial point-mass satellite will turn up something much slower than for the moon with it's strong tidal effects. By the way, you may want to peruse the references in this excellent answer! $\endgroup$
    – uhoh
    Commented Oct 4, 2017 at 16:04

2 Answers 2


In the subsection The deviations of Earth's gravitational field from that of a homogeneous sphere of the Wikipedia article on Geopotential model you can see that the $J_2$ or quadrupole moment of the Earth's gravitational potential falls off much more rapidly with distance than the monopole term. In the Earth's equatorial plane, the acceleration due to the monopole and quadrupole moments are given as:

$$a_0 = -\frac{GM_E}{r^2},$$

$$a_2 = -\frac{3}{2} J_2 \frac{GM_E R_E^2}{r^4},$$

where the unit-less value of Earth's $J_2$ is about 0.0010825 and $R_E$ is the normalizing radius of the Earth of 6378136.3 meters, and the standard gravitational parameter of the Earth $GM_E$ is about 3.986E+14 m^3/s^2.

You can read a little more about Earth's $J_2$ and it's effect on gravity at the equator and poles in David Hammen's nice table.

On the Earth's surface, at the equator, the values for these two are 9.7983 and 0.0159 m/s^2 respectively, but remember that they fall of with distance as $1/r^2$ and $1/r^4$ respectively as well.

So a satellite orbiting in Earth's equatorial plane in an elliptical orbit will "think" that the Earth's gravity is stronger at periapsis than at apoapsis, even taking $1/r^2$ into account.

Since the Earth (or any oblate spheroid) "pulls harder" as the satellite swings closest to the planet, it sort-of wraps the orbit tighter. The following apoapsis will come a bit later and advance around the planet, as will the periapsis.

Here is a Python simulation run for a satellite in a very elliptical LEO orbit with a periapsis altitude of about 400km and apoapsis altitude of about 32,000 km. I've run it for Earths normal $J_2$, and again for ten times larger $J_2$ to magnify the effect so that each orbit clearly advances. In addition to the advancement you can see that the semimajor axis is slightly smaller for the larger $J_2$ because the average gravitational force is slightly larger.

enter image description here

def deriv(X, t):

    x, v = X.reshape(2, -1)

    acc0  = -GMe * x * ((x**2).sum())**-1.5
    acc2  = -1.5 * GMe * J2 * Re**2 * x * ((x**2).sum())**-2.5

    return np.hstack([v, acc0 + acc2])

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint as ODEint

# David Hammen's nice table https://physics.stackexchange.com/a/141981/83380
# See http://www.iag-aig.org/attach/e354a3264d1e420ea0a9920fe762f2a0/51-groten.pdf
# https://en.wikipedia.org/wiki/Geopotential_model#The_deviations_of_Earth.27s_gravitational_field_from_that_of_a_homogeneous_sphere

GMe = 3.98600418E+14  # m^3 s^-2
J2e = 1.08262545E-03  # unitless
Re  = 6378136.3 # meters

X0 = np.hstack([6778000.0, 0.0, 0.0, 10000.])  # x, y, vx, vy

time = np.arange(0, 300001, 100)

J2 = J2e  # correct J2
answerJ2, info = ODEint(deriv, X0, time, full_output=True)

J2 = 10*J2e # 10x larger J2
answer10xJ2, info = ODEint(deriv, X0, time, full_output=True)

if 1 == 1:
    x, y = answerJ2.T[:2]
    plt.plot(x, y, '-b')
    x, y = answer10xJ2.T[:2]
    plt.plot(x, y, '-r')
    plt.plot([0], [0], 'or')
  • 1
    $\begingroup$ Your penultimate paragraph was what I was looking for, nice explanation, thanks!. My class demonstration involved taking Lagrange planetary equations terms as mean values (first order approximation), compute mean value of J2 potential term for 1 revolution and introducing this computed term in the equations which leads to have only non-null time derivatives of RAAN, perigee argument and mean anomaly. $\endgroup$
    – Julio
    Commented Oct 5, 2017 at 7:25
  • $\begingroup$ That's good to hear, thank you for your comment! I didn't know why this happens either. There are other effects that can cause apsidal precession including more complex tidal effects, perturbations from other bodies, and general relativity, but this is the simplest one to understand. $\endgroup$
    – uhoh
    Commented Oct 5, 2017 at 7:56

Sutton, (note - 4th edition!), page 156, has this to say:

[the figure] shows an exaggerated shift of the apsidal line with the center of the earth remaining as a focus point. This perturbation may be visualized as the movement of the prescribed elliptical orbit in a fixed plane. Obviously, both the apogee and perigee points change in position, the rate of change being a function of the satellite altitude and plane inclination angle. At inclinations of 63.4° and 116.6°, the rate of shifting of the apsidal line, also called apsidal drift, is zero. At an apogee altitude of 1000 nautical miles (n.m.) and a perigee of 100 n.m. in an equatorial orbit, the apsidal drift is approximately 10°/day.

enter image description here

More descriptive than explanatory but perhaps it's of interest.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.