‹ Experiments

N-Body Shootout

Sign in

A head-to-head. Both integrators start from the same Jovian system at J2000.0 and play it forward 26 years: N-body (every moon pulls on every other, 600 s steps, 1.38 million of them) against Keplerian orbits (each moon on its own ellipse, no interactions). Keplerian is exact for a two-body problem, so the question is what the N-body run captures that a set of ellipses cannot.

Scoreboard after 26 years

MetricN-body (ours)Keplerian
Energy conservationΔE/E = 1.5×10⁻⁶ ✓Exact (analytical)
Angular momentumΔL/L = 4×10⁻¹⁵ ✓Exact (analytical)
Laplace resonance lock+178° (alive!) ✓N/A (no interactions)
Moon-moon gravityYes: captured ✓Ignored ✗
Orbital radii stableWithin 2% ✓Exact by definition
Phase accuracy (Io)±23° drift (needs J2)Meaningless (no coupling)
Missing physicsJupiter J2, solar tidesAll moon interactions

Verdict. N-body captures real physics that Keplerian cannot. Next step: add Jupiter's J2 oblateness to fix the phase drift.

Position divergence between the N-body and Keplerian runs for Europa, Ganymede and Callisto over 26 years, the Laplace resonance angle, and the scoreboard
Tap a figure to open it full size. Left to right: how far the N-body and Keplerian positions diverge for Europa, Ganymede and Callisto; the Laplace resonance angle, which oscillates in the N-body run (the resonance is alive) and is flat in the Keplerian one.

Accuracy against tolerance

Bar chart of the N-body propagation position error for 26 bodies, each against its tolerance
Position error per body after propagating J2015.0 back to J2000.0 (run 8335f32). Each dashed box is that body's tolerance and the percentage is how much of it the error uses. Every body finishes inside its tolerance; the worst is Mercury at 74%, and the Galilean moons are the hardest of the rest.

These are recorded results from the sigma-ground physics work, shown as they were produced: the drift and the missing physics are in the table on purpose.