Prev
Unit 5 · Lesson 5-3
Orbit Propagation
38m70 XP
Next

Orbit Propagation

Analytic Kepler propagation, numerical integration, SGP4 and ground-station passes

Analytic versus numerical propagation
You have a satellite, an epoch, and a question: where is it in six hours? There are two entirely different ways to answer, and they are not variations on a theme. Solve it. Use the closed-form solution from Unit 2 and the Kepler machinery from the last two lessons. Compute MM at the target time, iterate to EE, convert to ν\nu and rr. This is exact, instant, and requires no intermediate steps at all — six hours ahead costs precisely as much as six seconds ahead. Simulate it. Take r⃗¨=−μr⃗/r3\ddot{\vec{r}} = -\mu\vec{r}/r^3 and step it forward numerically, a few seconds at a time, twelve thousand times. This is approximate, thousands of times slower, and accumulates error at every step. So the first method wins on every axis. Except one. The first method can only propagate the model it was derived from. The instant you want to include Earth's equatorial bulge, or air drag, or the Moon, the closed form ceases to exist — because no closed form exists for those problems, and never will. Every operational system in the world runs both. Understanding which to reach for, and what each is quietly costing you, is what this lesson is about.
Watch first · presented by Shoaib Aziz
The numbers in this film are the labs' own: for a = 9,000 km and e = 0.2 the analytic and numerical orbits agree to 0.13 mm after one revolution, and over 200 revolutions a loose tolerance sinks the orbit by about 11 km (3 m when tightened); on a 7,000 km circle with 30 s steps RK4 loses about 22 m in 500 revolutions while leapfrog stays within about 2 m; and a 500 km satellite gets 2 passes of 7.5 minutes over Kourou in a day. A directly overhead pass from about 500 km lasts about 11 minutes, or about 7½ above a 10° elevation mask.
Analytic propagation is the whole of Unit 5 so far, assembled into a pipeline:
t  →  M=M0+n(t−t0)  →  E  (iterate)  →  ν, r  →  r⃗PQW  →  r⃗ECIt \;\to\; M = M_0 + n(t-t_0) \;\to\; E \;(\text{iterate}) \;\to\; \nu,\, r \;\to\; \vec{r}_{PQW} \;\to\; \vec{r}_{ECI}
Five of the six elements never change, so only MM needs updating. Every step is either closed-form or a four-iteration loop.
💡What analytic propagation actually buys you
No error accumulation. Propagating a year ahead is exactly as accurate as propagating a minute ahead, because there is no marching involved — you evaluate a formula. Direct access to any time. Want the position at one specific instant next Tuesday? One evaluation. A numerical integrator has to walk the entire intervening span to get there. It is fast. Microseconds. This is why GPS receivers do it and why catalogue screening of thirty thousand objects against each other is even feasible. And it is a closed shop. It solves the two-body problem exactly and no other problem at all. Not approximately — at all. There is no term to add.
Numerical propagation throws away the solution and returns to the differential equation. Reshape it into the first-order state form from 2-1 and hand it to an integrator:
x⃗˙=f(t,x⃗)=[v⃗−μr3r⃗+a⃗perturbations]\dot{\vec{x}} = f(t, \vec{x}) = \begin{bmatrix}\vec{v}\\ -\dfrac{\mu}{r^3}\vec{r} + \vec{a}_{\text{perturbations}}\end{bmatrix}

The whole reason to do it this way is that last term. Anything you can write as an acceleration, you can add — J₂, drag, the Moon, solar radiation pressure, a thrusting engine.

The classical workhorse is fourth-order Runge–Kutta. It estimates the derivative at four points across the step and takes a weighted average, which cancels error terms up to fourth order:
k1=f(tn,x⃗n)k2=f(tn+h2,x⃗n+h2k1)k3=f(tn+h2,x⃗n+h2k2)k4=f(tn+h,x⃗n+hk3)x⃗n+1=x⃗n+h6(k1+2k2+2k3+k4)\begin{aligned}k_{1} &= f(t_{n}, \vec{x}_n)\\ k_{2} &= f(t_{n} + \tfrac{h}{2}, \vec{x}_n + \tfrac{h}{2}k_{1})\\ k_{3} &= f(t_{n} + \tfrac{h}{2}, \vec{x}_n + \tfrac{h}{2}k_{2})\\ k_{4} &= f(t_{n} + h, \vec{x}_n + hk_{3})\\ \vec{x}_{n+1} &= \vec{x}_n + \tfrac{h}{6}(k_{1} + 2k_2 + 2k_3 + k_{4})\end{aligned}

RK4. Halving the step size reduces the error per step by a factor of 16 — and doubles the number of steps, so the total error falls by 16 as well.

Figure 5.4
00.5111.52one step, hstatetrue pathtrue pathEuler — k₁ onlyovershoots the curvemidpoint probesk₂, k₃RK4 resultweighted 1:2:2:1Halving h cuts the errorby sixteen — but doublesthe number of steps.
One RK4 step. A single slope at the start (Euler) overshoots badly on a curved trajectory. Four slopes, weighted 1:2:2:1, track the curvature and land far closer to the true path.
⚠Energy drift in numerical integrators
Integrate a circular orbit with RK4 for a thousand revolutions and something disturbing happens: the orbit shrinks. Not because of any physics. Because RK4 is not designed to conserve energy, and its truncation error has a systematic component. Each step loses a little ε\varepsilon, and a little never stops being a little — it accumulates linearly, forever. After a few thousand orbits your satellite is measurably lower than it should be, and there is nothing in the output that says so. This is a specific danger for long-arc work: asteroid studies, mission lifetime analysis, debris evolution over decades. The satellite quietly spirals inward and every conclusion you draw is contaminated. The cure is a symplectic integrator — a method built to conserve a nearby quantity exactly rather than the true one approximately. Leapfrog and Verlet are the simplest. They are usually less accurate step for step than RK4, and their energy error oscillates around zero instead of drifting, which for long integrations is worth far more than raw per-step accuracy. The lesson generalises: choose the integrator for the invariant you must not lose, not for the smallest local error.
Figure 5.5
10⁰10²10⁴10⁻¹²10⁻⁹10⁻⁶10⁻³10⁰10²revolutions propagatedposition error (km)analytic Keplernothing accumulatessymplecticbounded oscillationRK4grows without boundWhere RK4 crosses thesymplectic line is where"more accurate per step"stops being the right test.
Position error against propagation span for three methods. Analytic Kepler is a flat line at machine precision — and stays flat forever, because there is nothing to accumulate. RK4 climbs steadily. A symplectic integrator holds a bounded oscillation. The crossing point is where "fast and approximate" stops being the cheaper choice.
SituationMethodWhy
Two-body only, need many times fastAnalytic KeplerExact, microseconds, no accumulation
Any perturbation at allNumericalNo closed form exists — this is not a preference
LEO operations over daysSGP4 (semi-analytic)Analytic form with J₂ and drag pre-averaged in
High-precision orbit determinationNumerical, RK7/8 or Gauss–JacksonFull force model, centimetre-level
Multi-century evolutionSymplecticEnergy must not drift over billions of steps
On-board a spacecraftAnalytic or low-order numericalFlight processors are small and slow
The purpose of computing is insight, not numbers.
– Richard Hamming, Numerical Methods for Scientists and Engineers, 1962
🛰[SGP4](https://en.wikipedia.org/wiki/Simplified_perturbations_models) and the accuracy of TLE positions
Every public TLE is meant for exactly one propagator: SGP4, dating from 1970 and still in service. It is neither purely analytic nor purely numerical. It is semi-analytic: the dominant perturbations — J₂, J₃, J₄ and a simplified drag model — are averaged over an orbit and folded into closed-form secular rates. The result runs almost as fast as pure Kepler while capturing most of what actually moves a LEO satellite. The consequences of this design are strict, and routinely violated: TLE elements are not osculating elements. They are mean elements in SGP4's own internal sense. Feeding them to a two-body propagator gives a wrong answer, and feeding them to a high-precision propagator gives a confidently wrong answer. Accuracy is about 1 km at epoch, degrading to several km within days. For a conjunction assessment where the miss distance is 200 m, that is not usable. The output frame is TEME, not J2000 and not GCRF — the awkward frame from Unit 4 that exists essentially because SGP4 uses it. So TLEs are superb for pointing an antenna and useless for deciding whether two objects will collide. Operators who need the latter use precise ephemerides that are not public.
Now put propagation to work on the question a ground station actually asks. A pass is an interval during which the satellite is above the horizon from a given site, and finding one is a chain that runs through every frame in Unit 3:
Figure 5.6
horizonelevation through a pass-505050minutes from closest approachelevation °10° maskabout eleven minutes overhead — eight above a 10° mask
Pass geometry. The satellite rises above the horizon, climbs to a maximum elevation at closest approach, and sets. Higher maximum elevation means longer contact and shorter range. Below about 5° elevation the signal is cutting through so much atmosphere that most stations do not even try — the mask angle is a real operational constraint, not a rounding.
M(t)→E→r⃗ECI→  R3(θg)  r⃗ECEF→ρ⃗=r⃗ECEF−r⃗site→az, el, rangeM(t) \to E \to \vec{r}_{ECI} \xrightarrow{\;R_{3}(\theta_g)\;} \vec{r}_{ECEF} \to \vec{\rho} = \vec{r}_{ECEF} - \vec{r}_{site} \to \text{az, el, range}

The full pipeline. Kepler for the time problem, GMST for the rotation, a vector subtraction for the geometry, and SEZ for the answer the antenna needs.

📐Worked Example: duration of a ground-station pass
Take a satellite at 500 km altitude, r=6871r = 6871 km, passing directly overhead. Horizon geometry. The satellite is visible when the Earth-central angle to the station is less than λ=arccos⁡(R⊕/r)=arccos⁡(6378/6871)=21.7°\lambda = \arccos(R_\oplus/r) = \arccos(6378/6871) = 21.7°. Arc travelled. Over a directly overhead pass the satellite sweeps 2λ=43.4°2\lambda = 43.4° of its orbit, which is 43.4/360=12.1%43.4/360 = 12.1\% of a revolution. Period. T=2π68713/398600=5668T = 2\pi\sqrt{6871^3/398600} = 5668 s = 94.5 min. Pass duration. 0.121×5668=6840.121 \times 5668 = \mathbf{684} s — about 11 minutes, and that is the best case. Apply a realistic 10° elevation mask and the usable window drops to about 7½ minutes. A pass that only reaches 20° maximum elevation gives 4 or 5 minutes. Worse, most revolutions produce no pass at all. The track shifts 23° west each time round, and the visibility footprint is only about 15° of Earth-central angle wide, so the satellite simply misses the station on the great majority of its fifteen daily revolutions. Depending on the site latitude and the orbit, a single ground station typically sees two to five usable passes a day — the lab below finds two, for around fifteen minutes of total contact. That number explains an entire industry. A quarter of an hour of contact per day per station is why operators run globally distributed ground networks, why data is stored on board and dumped in bursts, why inter-satellite laser links are worth their considerable cost, and why services like AWS Ground Station exist at all. Everything about LEO operations is shaped by the fact that you can only talk to the thing for eight minutes at a time, a couple of times a day.
↓But there is a problem
Everything in this lesson assumed you were handed an orbit you could trust. In practice, the orbit of almost every object in Earth orbit comes from one public source, in one compact format, built for one specific propagator: SGP4. Pointing an antenna, planning an observation, checking a launch against the space station: all of it starts with two lines of 69 characters. Those two lines look like the classical elements from Unit 3. They are not. Hand them to the wrong propagator and the answer is wrong from the first second. The next lesson takes them apart, field by field, and runs them through the program they were written for.