2.4 The Central-Force Problem and Orbits#
Notebook overview#
In §1.4 we integrated Kepler orbits directly in Cartesian coordinates and watched the ellipse close. This notebook is the analytical complement: instead of pushing \((x,y)\) forward in time, we use the two conserved quantities (energy and angular momentum) to collapse the whole two-dimensional problem onto a single radial coordinate, and then solve for the shape of the orbit itself.
The engine is one idea. Conservation of angular momentum (the rotational symmetry of §2.2; the cyclic angle of §2.3) lets us absorb the angular motion into an effective potential \(V_{\mathrm{eff}}(r)\), after which the radial coordinate moves exactly like a one-dimensional particle in that potential: the 1-D Hamiltonian motion of §2.3. Reading \(V_{\mathrm{eff}}(r)\) like a 1-D energy diagram tells us at a glance which orbits are circular (sit at the minimum), which are bound (oscillate between two turning points), and which escape. To get the geometric shape \(r(\varphi)\) we change variables to \(u=1/r\) and obtain the Binet equation, a linear oscillator equation whose solution is a conic section: the ellipse of §1.4, now derived rather than discovered.
You build the small toolkit yourself — V_eff and its two derivatives, the
Binet right-hand side, and the analytic conic — while Setup supplies the given
potential, a turning-point finder, and the 2-D Cartesian right-hand side of
§1.4 for cross-checks. Then we put
it to work: locating circular orbits and testing their stability, finding
perihelion and aphelion as turning points, integrating the Binet equation and
matching it to the analytic conic, animating the closed inverse-square ellipse,
and finally animating the precessing rosette that appears the moment the force
law departs from \(1/r^2\): the analytical sibling of the precession experiment
of §1.4.
How to read the checks. Each exercise ends with a validation that compares a computed result to an expected physical fact. A ✗ does not by itself mean the physics is wrong: it means the output didn’t match what the check expected, which may be a real error, a different-but-valid convention (a sign, a unit, an array order), or simply too tight a tolerance. Treat a ✗ as a prompt to locate the discrepancy; passing is strong evidence of correctness, not proof.
Theory in brief#
Reduction to one body and one radial coordinate#
A two-body system interacting through a potential that depends only on their separation reduces to a single fictitious particle of reduced mass \(\mu = m_1 m_2/(m_1+m_2)\) moving in the central potential \(V(r)\) about a fixed centre (§1.4). Because the force is central, the angular momentum
is conserved: this is the conserved charge of rotational symmetry (§2.2) and of the cyclic angle \(\varphi\) (§2.3). Its constancy confines the motion to a plane and fixes \(\dot\varphi = L/(\mu r^2)\), so the angular motion is no longer an independent unknown.
The effective potential: orbits as 1-D motion#
Substituting \(\dot\varphi = L/(\mu r^2)\) into the energy \(E = \tfrac12\mu(\dot r^2 + r^2\dot\varphi^2) + V(r)\) removes \(\varphi\) entirely and leaves a purely radial energy equation,
This is the conceptual heart of the chapter: the radial coordinate moves exactly like a one-dimensional particle of mass \(\mu\) in the potential \(V_{\mathrm{eff}}\) (a 1-D Hamiltonian system, §2.3). The extra term \(L^2/(2\mu r^2)\) is the centrifugal barrier (the angular-momentum cost of approaching the centre), and it is what keeps a particle with \(L\neq 0\) from falling in.
Circular orbits, turning points, and stability#
Reading Eq. 149 as a 1-D energy diagram classifies every orbit:
A circular orbit sits at a minimum of \(V_{\mathrm{eff}}\), where the inward force balances the centrifugal barrier. For the attractive inverse-square potential \(V=-GM\mu/r\) this gives
and the orbit is stable when \(V_{\mathrm{eff}}''(r_c)>0\).
A bound orbit (\(E<0\)) oscillates radially between two turning points, the roots of
which are the perihelion \(r_{\min}\) and aphelion \(r_{\max}\).
An unbound orbit (\(E\geq 0\)) has a single turning point and escapes: the scattering states that open §2.5.
The Binet equation and the conic-section orbit#
To get the shape \(r(\varphi)\) rather than the timing, substitute \(u=1/r\) and use Eq. 148 to trade \(d/dt\) for \(d/d\varphi\). The radial equation becomes the Binet equation \(d^2u/d\varphi^2 + u = -\,\mu/(L^2u^2)\,F(1/u)\), where \(F=-dV/dr\). For the inverse-square force the right-hand side is constant,
a linear oscillator in \(\varphi\), and its solution is a conic section,
The eccentricity \(e\) sorts the orbits: \(e=0\) circle, \(0<e<1\) ellipse, \(e=1\) parabola, \(e>1\) hyperbola. Because the oscillator in Eq. 152 has unit angular frequency in \(\varphi\), the perihelion-to-aphelion apsidal angle is exactly \(\pi\): the orbit closes after one revolution. Bertrand’s theorem says only two force laws share this property: the inverse-square (\(\propto 1/r^2\)) and the Hooke (\(\propto r\)) law; every other central force precesses (§1.4).
Setup#
We work in reduced units \(GM = 1\) and \(\mu = 1\), so the circular radius
Eq. 150 is simply \(r_c = L^2\). What Setup holds is the given potential
\(V(r)=-GM\mu/r\), a turning-point finder (a generic sign-change scan refined by
brentq, bound to whatever effective potential it is handed), and the 2-D
Cartesian right-hand side built from scratch in
§1.4 and restated here for an
independent cross-check. The notebook’s own machinery is not here: you write
the effective potential V_eff and its slope dVeff_dr in Exercise 1, the
curvature d2Veff_dr2 in Exercise 2, and the Binet right-hand side binet_rhs
together with the analytic conic conic_orbit in Exercise 4.
The Setup below holds this notebook’s data and instruments — nothing you are asked to build. It is collapsed so the building stays yours; expand it whenever you want the details.
The geometry (a particle located by polar coordinates \((r,\varphi)\) about a fixed force centre) is sketched in Fig. 128.
Exercise 1 — The effective potential#
Everything in this chapter is read off one curve. The effective potential Eq. 149 superposes the attractive well \(V(r)=-GM\mu/r\) (which pulls inward) on the repulsive centrifugal barrier \(L^2/(2\mu r^2)\) (which the conserved angular momentum Eq. 148 erects near the origin). Their sum has a well with a single minimum, and that shape dictates every orbit. Larger \(L\) raises a higher barrier and pushes the minimum outward. Setting \(dV_{\mathrm{eff}}/dr=0\) in Eq. 150 puts that minimum at the circular radius \(r_c=L^2/(GM\mu^2)\), which in reduced units is simply \(r_c=L^2\) — the prediction the last step checks.
Write
V_eff(r, L), the effective potential Eq. 149: the givenV(r)plus the centrifugal barrier \(L^2/(2\mu r^2)\). Write this one yourself — the implementation is the lesson; every result in this notebook is read off this one curve.Write
dVeff_dr(r, L), its analytic first derivative \(GM\mu/r^2 - L^2/(\mu r^3)\), which vanishes at a circular orbit Eq. 150.Plot \(V_{\mathrm{eff}}(r)\) for several angular momenta \(L\), on a common axis, marking the attractive well and the centrifugal barrier. The result is shown in Fig. 129.
Confirm that the well’s minimum sits at \(r_c=L^2\) by checking \(dV_{\mathrm{eff}}/dr=0\) there, for each \(L\).
Fig. 128 Central-force geometry: the reduced particle of mass \(\mu\) (the relative coordinate of the two bodies) is located by polar coordinates \((r,\varphi)\) about the fixed force centre (amber) — radius \(r\) and azimuth \(\varphi\) from the polar axis; the central force \(\mathbf F=-(dV/dr)\,\hat{\mathbf r}\) points along the radius, so the angular momentum \(L=\mu r^2\dot\varphi\) is conserved and the motion stays in this plane.#
Fig. 129 The effective potential \(V_{\mathrm{eff}}(r)=-GM\mu/r+L^2/(2\mu r^2)\) (reduced units \(GM=\mu=1\)) for three angular momenta \(L\): the attractive Kepler well (dashed) plus the repulsive centrifugal barrier \(L^2/(2\mu r^2)\) produce a well whose minimum (dot) is the circular-orbit radius \(r_c=L^2\); larger \(L\) raises a higher barrier and pushes the minimum outward.#
Validation 1 — the circular orbit sits at the \(V_{\mathrm{eff}}\) minimum#
The minimum of \(V_{\mathrm{eff}}\) is where the radial force Eq. 150 vanishes.
In reduced units that predicts \(r_c = L^2\) for every \(L\), so the dVeff_dr you
wrote in Part 2, evaluated at \(r_c=L^2\), must be zero.
✓ circular orbit sits at the V_eff minimum r_c=L²=0.64 (L=0.8) [got 0 vs expected 0 (rtol=1e-06, atol=1e-06)]
✓ circular orbit sits at the V_eff minimum r_c=L²=1.44 (L=1.2) [got 0 vs expected 0 (rtol=1e-06, atol=1e-06)]
✓ circular orbit sits at the V_eff minimum r_c=L²=2.56 (L=1.6) [got 0 vs expected 0 (rtol=1e-06, atol=1e-06)]
Exercise 2 — Circular orbits and their stability#
A minimum of \(V_{\mathrm{eff}}\) is a circular orbit; whether it is stable depends on the curvature there. A small radial nudge sees the local quadratic \(V_{\mathrm{eff}}\approx V_{\mathrm{eff}}(r_c)+\tfrac12 V_{\mathrm{eff}}''(r_c)(r-r_c)^2\), so the orbit oscillates back (stable) when \(V_{\mathrm{eff}}''(r_c)>0\) and runs away (unstable) when it is negative. The inverse-square law gives a genuine well, so its circular orbits are stable: the reason planets keep their orbits. Differentiating Eq. 149 twice gives that curvature in closed form, \(V_{\mathrm{eff}}''(r) = -2GM\mu/r^3 + 3L^2/(\mu r^4)\).
Write
d2Veff_dr2(r, L), the second derivative above: the sign of this one number decides whether a circular orbit survives a nudge.Take \(L=1.2\), locate the circular radius \(r_c=L^2\) from Eq. 150, and evaluate the curvature \(V_{\mathrm{eff}}''(r_c)\) there.
Plot the
V_effyou wrote in Exercise 1 with the circular orbit marked at the bottom of the well and the local parabola overlaid, as in Fig. 130.
circular radius r_c = 1.4400, V_eff''(r_c) = 0.3349 (>0 ⇒ stable)
Fig. 130 Stability of the inverse-square circular orbit: \(V_{\mathrm{eff}}(r)\) for \(L=1.2\) (solid) with the circular orbit (dot) at the minimum \(r_c=L^2=1.44\); the dashed parabola is the local quadratic approximation \(V_{\mathrm{eff}}(r_c)+\tfrac12 V_{\mathrm{eff}}''(r_c)(r-r_c)^2\), whose upward curvature \(V_{\mathrm{eff}}''(r_c)>0\) means a radial nudge oscillates back — the orbit is stable.#
Validation 2 — the inverse-square circular orbit is stable#
Stability is the single inequality \(V_{\mathrm{eff}}''(r_c)>0\): the well curves upward, so the orbit is a stable equilibrium of the radial 1-D motion.
✓ the inverse-square circular orbit is stable (V_eff''(r_c) > 0) [V_eff''(r_c) = 0.3349]
True
Exercise 3 — Turning points and the radial 1-D picture#
For a bound orbit (\(E<0\)) the radial coordinate is trapped in the well and bounces between two turning points (the perihelion \(r_{\min}\) and aphelion \(r_{\max}\)), exactly where the horizontal energy line \(E\) cuts the \(V_{\mathrm{eff}}\) curve, \(\dot r=0\) in Eq. 151. This is the radial motion read straight off the 1-D energy diagram. The conic solution Eq. 153 predicts these turning points analytically as \(a(1\mp e)\) with semi-major axis \(a=-GM\mu/(2E)\): a clean cross-check.
Take \(L=1\) and \(E=-0.32\) (a bound orbit). Find \(r_{\min},r_{\max}\) as the roots of Eq. 151 with the Setup’s
turning_points— a sign-change scan refined byscipy.optimize.brentq, which brackets the roots of \(E-V_{\mathrm{eff}}\) using theV_effyou wrote in Exercise 1.Plot that same \(V_{\mathrm{eff}}(r)\) with the energy line \(E\) and the two turning points marked (Fig. 131), shading the classically allowed region \(E\geq V_{\mathrm{eff}}\).
turning points: r_min = 0.625000, r_max = 2.500000
conic predicts: a(1−e) = 0.625000, a(1+e) = 2.500000
eccentricity e = 0.6000, semi-major axis a = 1.5625
Fig. 131 The bound radial orbit as 1-D motion (\(L=1\), \(E=-0.32\)): the energy line \(E\) (grey) cuts the effective potential \(V_{\mathrm{eff}}(r)\) at the perihelion \(r_{\min}\) and aphelion \(r_{\max}\) (dots), the turning points where \(\dot r=0\); the radial coordinate oscillates across the shaded classically allowed region \(E\ge V_{\mathrm{eff}}\), while the centrifugal barrier blocks the origin.#
Validation 3 — turning points equal the conic’s \(a(1\mp e)\)#
The turning points found numerically from \(E=V_{\mathrm{eff}}\) must coincide with the perihelion and aphelion of the analytic conic Eq. 153, \(a(1-e)\) and \(a(1+e)\): two independent routes to the same two radii.
✓ turning points equal a(1∓e) from the conic [max|Δ| = 3.7792e-13 (rtol=1e-06, atol=1e-09)]
True
Exercise 4 — The Binet equation reproduces the conic#
The energy diagram gives the radial range but not the orbit’s shape. For that we switch from time to angle: with \(u=1/r\), the radial equation becomes the linear Binet oscillator Eq. 152, whose solution is the conic Eq. 153. Rather than quote that solution we integrate the Binet ODE numerically from perihelion and check that it traces the analytic conic: a derivation made concrete. Both sides of that check are written here — the oscillator as a first-order system \([u', \, GM\mu^2/L^2 - u]\), and the closed form \(u(\varphi)=(1+e\cos\varphi)/p\) with semi-latus rectum \(p=L^2/(GM\mu^2)\) that it must reproduce.
Write
binet_rhs(phi, y, L), the inverse-square Binet equation Eq. 152 as a first-order system in \(y=[u,\,u']\) (the angle argument is unused —solve_ivprequires it). Write this one yourself — the implementation is the lesson: this two-line right-hand side is the orbit equation.Write
conic_orbit(L, e), returning the analytic \(u(\varphi)\) of Eq. 153 as a callable: the yardstick the integration is judged by.Use the same orbit (\(L=1\), \(E=-0.32\), hence \(e\approx0.6\)). Start at perihelion: \(u(0)=(1+e)/p\), and \(u'(0)=0\). Integrate Eq. 152 over \(\varphi\in[0,2\pi]\) with
scipy.integrate.solve_ivp(DOP853,rtol=1e-11,atol=1e-13) on a densephi-grid.Overlay the integrated \(u(\varphi)\) on the analytic conic, and plot the corresponding orbit \(r(\varphi)\) in the plane (Fig. 132).
Fig. 132 The Binet equation yields the conic orbit (\(L=1\), \(e=0.6\)). Left: \(u(\varphi)=1/r\) from numerically integrating the linear Binet equation Eq. 152 (markers) lies on the analytic conic Eq. 153 (line). Right: the reconstructed orbit \(r(\varphi)\) in the plane is a closed ellipse with the force centre (amber) at one focus, perihelion on the right, aphelion on the left.#
Validation 4 — the Binet integration is the conic#
The numerically integrated Binet solution must match the closed-form conic Eq. 153 pointwise: same orbit, one route analytic and one numerical.
✓ the Binet equation yields the conic-section orbit [max|Δ| = 4.11708e-11 (rtol=1e-06, atol=1e-09)]
True
Exercise 5 — Apsidal angle and orbit closure (worked animation)#
Why does the Kepler ellipse close? Because the Binet oscillator Eq. 152 advances \(u\) through exactly one full cycle as \(\varphi\) goes from perihelion to perihelion: the angle from perihelion to aphelion (the apsidal angle) is exactly \(\pi\), so after \(2\pi\) the orbit returns to its start. The apsidal line (the major axis joining perihelion and aphelion through the focus) never rotates. This is the analytic statement of what §1.4 found by integration. The apsidal geometry is sketched in Fig. 133; the animation traces the closed ellipse, and the validation measures the apsidal angle of the animated orbit, not the animation object.
This is the worked animation; you build the second in Exercise 6. The orbit it
draws is the analytic conic u_of_phi returned by your Exercise 4
conic_orbit.
Fig. 133 Apsidal geometry of a bound orbit: the force centre (amber) sits at one focus; the particle’s radius reaches its minimum \(r_{\min}\) at perihelion (right) and its maximum \(r_{\max}\) at aphelion (left), joined by the dashed apsidal line through the focus. For the inverse-square law the apsidal angle from perihelion to aphelion is exactly \(\Delta\varphi=180^\circ\), so the orbit closes and the apsidal line stays fixed.#
measured apsidal angle (perihelion → aphelion) = 179.955°
Fig. 134 Animation of the closed inverse-square orbit (\(L=1\), \(e=0.6\)): the particle (blue) traces an ellipse with the force centre (amber star) at one focus and the fixed apsidal line (dashed) joining perihelion and aphelion. The orbit closes after one revolution because the apsidal angle is exactly \(180^\circ\) — the analytic counterpart of the closure measured by integration in §1.4.#
Validation 5 — the apsidal angle is 180° (the orbit closes)#
The defining property of the inverse-square orbit: the angle swept from perihelion to aphelion is \(180^\circ\). Measured from the animated orbit data, it must equal \(180^\circ\) to within the angular grid resolution: the orbit closes.
✓ inverse-square apsidal angle is 180° (closed orbit) [got 179.955 vs expected 180 (rtol=1e-06, atol=0.5)]
True
Exercise 6 — Precession under a modified force law (student-implemented animation)#
The closure of the orbit is a knife-edge property of the \(1/r^2\) law. Add even a small extra term and the apsidal angle stops being \(180^\circ\): the ellipse fails to close, and instead its apsidal line slowly precesses, tracing a rosette. We model this with a relativistic-like correction to the Binet equation,
the same \(u^2\) term that produces Mercury’s perihelion advance in general relativity (a forward link to “Outlook”). This is the analytical sibling of Exercise 7 of §1.4, which integrated a modified force law in Cartesian coordinates and watched the same rosette appear.
This is the student-implemented animation: the modified dynamics is given; you build the player and measure the precession.
Integrate the modified Binet equation above with
scipy.integrate.solve_ivp(DOP853) over several orbits (use \(\beta=0.1\), \(L=1\), and the unperturbed perihelion of your Exercise 4conic_orbitat \(e=0.6\) as the start), storing \(u(\varphi)\). The right-hand side is thebinet_rhsyou wrote in Exercise 4 with the extra \(\beta u^2\) term.Build the animation of the precessing rosette \(r(\varphi)=1/u\) in the plane, with the slowly rotating apsidal line (there are many valid ways to draw it), then
plt.close(fig)and end withecp.animate.show(anim).Detect successive perihelia (interior maxima of \(u\) on the dense grid) and measure the precession per orbit: the perihelion-to-perihelion angle minus \(360^\circ\).
A ✗ on the final check is about the perihelion detection or the orbit data, not the drawing: any correct animation of the same data is fine. If it fails, check that consecutive \(u\)-maxima are being found on a finely sampled grid.
perihelion-to-perihelion angle = 409.64°
precession per orbit = +49.64° (β=0.1)