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 at the target time, iterate to , convert to and . 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 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
Analytic propagation is the whole of Unit 5 so far, assembled into a pipeline:
Five of the six elements never change, so only 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:
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:
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
⚠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 , 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
| Situation | Method | Why |
|---|---|---|
| Two-body only, need many times fast | Analytic Kepler | Exact, microseconds, no accumulation |
| Any perturbation at all | Numerical | No closed form exists — this is not a preference |
| LEO operations over days | SGP4 (semi-analytic) | Analytic form with J₂ and drag pre-averaged in |
| High-precision orbit determination | Numerical, RK7/8 or Gauss–Jackson | Full force model, centimetre-level |
| Multi-century evolution | Symplectic | Energy must not drift over billions of steps |
| On-board a spacecraft | Analytic or low-order numerical | Flight processors are small and slow |
The purpose of computing is insight, not numbers.
🛰[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
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, km, passing directly overhead.
Horizon geometry. The satellite is visible when the Earth-central angle to the station is less than .
Arc travelled. Over a directly overhead pass the satellite sweeps of its orbit, which is of a revolution.
Period. s = 94.5 min.
Pass duration. 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.