Lesson 10 of 15

Perihelion Precession

Perihelion Precession

A planet orbiting the Sun does not follow a perfectly closed ellipse — its orbit slowly rotates. Most of this perihelion advance is explained by the gravitational pull of other planets, but a small residual remained unexplained by Newtonian gravity for decades. For Mercury, 43 arcseconds per century were unaccounted for.

General relativity provides the explanation. The extra precession per orbit is:

Δϕ=6πGMc2a(1e2)(radians per orbit)\Delta\phi = \frac{6\pi G M}{c^2 a (1 - e^2)} \quad \text{(radians per orbit)}

where:

  • MM = mass of the central body (Sun)
  • aa = semi-major axis of the orbit
  • ee = orbital eccentricity

Mercury's Parameters

ParameterValue
Semi-major axis aa5.79×10105.79 \times 10^{10} m
Eccentricity ee0.20560.2056
Orbital period87.9787.97 days

Plugging these values into the GR formula gives:

Δϕ5.02×107 rad/orbit0.1036 arcsec/orbit\Delta\phi \approx 5.02 \times 10^{-7} \text{ rad/orbit} \approx 0.1036 \text{ arcsec/orbit}

Mercury completes about 414.9414.9 orbits per century, giving:

Δϕcentury43.0 arcsec/century\Delta\phi_{\text{century}} \approx 43.0 \text{ arcsec/century}

This was one of the earliest triumphs of GR, confirmed with the observed anomalous precession known since 1859.

Your Task

Implement three functions. All physical constants must be defined inside each function body.

  • precession_per_orbit(M, a, e) — precession in radians per orbit
  • precession_arcsec_per_orbit(M, a, e) — convert to arcseconds: multiply by (180/π)×3600(180/\pi) \times 3600
  • precession_arcsec_per_century(M, a, e, period_days) — arcseconds per century: multiply by (100×365.25/period_days)(100 \times 365.25 / \text{period\_days})
Python runtime loading...
Loading...
Click "Run" to execute your code.