Two nearly identical starts.
One diverges. Watch it happen.
The planar three-body problem has no general closed-form solution — but it does have a measurable chaos boundary. This laboratory integrates a reference trajectory and an almost-identical perturbed twin, watches them diverge, and estimates a maximal Lyapunov exponent from the divergence rate. A frozen, preregistered sweep places the figure-eight orbit, the Lagrange equilateral triangle, and the Euler collinear solution on that map — and the honest result is more interesting than a clean stable/chaotic split.
The figure-eight orbit tracing itself, with a barely-perturbed twin (dashed) already visibly peeling away — the phenomenon this lab measures, looping live.
Live simulator
Watch two nearly
identical starts diverge.
This browser view uses a fixed-step leapfrog integrator for real-time responsiveness, not the DOP853 adaptive integrator validated to 1e-9 conservation tolerance in the Python package. Treat it as illustrative, not as a source of the frozen registry numbers below — those come only from scripts/generate_registry.py.
Frozen registry
The chaos map,
exactly as measured.
Read this before the classification labels below
- The stable / borderline / chaotic labels come from one disclosed, arbitrary threshold (λ̄ < 0.02 stable, ≥ 0.10 chaotic) — not a physical law.
- Every window here is short (3–4 orbital periods). A positive exponent is evidence of measured divergence within that window, not proof of unbounded long-term chaos.
- In this frozen v0.1 registry, every one of the 42 cells classified as “chaotic,” including two of the three classical special solutions — see the report for why that is a real, explainable finding and not a bug.
Full reasoning: docs/research-report.md
Read the complete perturbation-magnitude sweep data
| Configuration | Perturbation magnitude δ₀ | Mean λ̂ | Std across seeds | Classification | Energy drift |
|---|---|---|---|---|---|
| Figure-eight | 1.00e-8 | 0.2158 | 0.0275 | chaotic | 9.50e-11 |
| Figure-eight | 1.58e-7 | 0.2158 | 0.0275 | chaotic | 9.50e-11 |
| Figure-eight | 2.51e-6 | 0.2158 | 0.0275 | chaotic | 9.50e-11 |
| Figure-eight | 3.98e-5 | 0.2158 | 0.0275 | chaotic | 9.50e-11 |
| Figure-eight | 6.31e-4 | 0.2151 | 0.0277 | chaotic | 9.50e-11 |
| Figure-eight | 1.00e-2 | 0.2099 | 0.0307 | chaotic | 9.50e-11 |
| Lagrange equilateral | 1.00e-8 | 1.1683 | 0.0209 | chaotic | 2.00e-12 |
| Lagrange equilateral | 1.58e-7 | 1.1683 | 0.0209 | chaotic | 2.00e-12 |
| Lagrange equilateral | 2.51e-6 | 1.1683 | 0.0209 | chaotic | 2.00e-12 |
| Lagrange equilateral | 3.98e-5 | 1.1683 | 0.0209 | chaotic | 2.00e-12 |
| Lagrange equilateral | 6.31e-4 | 1.1683 | 0.0210 | chaotic | 2.00e-12 |
| Lagrange equilateral | 1.00e-2 | 1.1683 | 0.0218 | chaotic | 2.00e-12 |
| Euler collinear | 1.00e-8 | 1.8594 | 0.0965 | chaotic | 1.00e-12 |
| Euler collinear | 1.58e-7 | 1.8594 | 0.0965 | chaotic | 1.00e-12 |
| Euler collinear | 2.51e-6 | 1.8594 | 0.0965 | chaotic | 1.00e-12 |
| Euler collinear | 3.98e-5 | 1.8594 | 0.0965 | chaotic | 1.00e-12 |
| Euler collinear | 6.31e-4 | 1.8593 | 0.0966 | chaotic | 1.00e-12 |
| Euler collinear | 1.00e-2 | 1.8587 | 0.0987 | chaotic | 1.00e-12 |
| Generic A | 1.00e-8 | 0.2787 | 0.0210 | chaotic | 2.92e-10 |
| Generic A | 1.58e-7 | 0.2787 | 0.0210 | chaotic | 2.92e-10 |
| Generic A | 2.51e-6 | 0.2789 | 0.0210 | chaotic | 2.92e-10 |
| Generic A | 3.98e-5 | 0.2815 | 0.0220 | chaotic | 2.92e-10 |
| Generic A | 6.31e-4 | 0.3167 | 0.0335 | chaotic | 2.92e-10 |
| Generic A | 1.00e-2 | 0.5494 | 0.0713 | chaotic | 2.92e-10 |
| Generic B | 1.00e-8 | 0.8006 | 0.0057 | chaotic | 1.74e-8 |
| Generic B | 1.58e-7 | 0.7957 | 0.0117 | chaotic | 1.74e-8 |
| Generic B | 2.51e-6 | 0.7959 | 0.0114 | chaotic | 1.74e-8 |
| Generic B | 3.98e-5 | 0.7988 | 0.0116 | chaotic | 1.74e-8 |
| Generic B | 6.31e-4 | 0.8870 | 0.0199 | chaotic | 1.74e-8 |
| Generic B | 1.00e-2 | 1.1314 | 0.0084 | chaotic | 1.74e-8 |
| Generic C | 1.00e-8 | 0.5659 | 0.0398 | chaotic | 6.89e-9 |
| Generic C | 1.58e-7 | 0.5624 | 0.0379 | chaotic | 6.89e-9 |
| Generic C | 2.51e-6 | 0.5619 | 0.0390 | chaotic | 6.89e-9 |
| Generic C | 3.98e-5 | 0.5622 | 0.0389 | chaotic | 6.89e-9 |
| Generic C | 6.31e-4 | 0.5661 | 0.0361 | chaotic | 6.89e-9 |
| Generic C | 1.00e-2 | 0.6408 | 0.0367 | chaotic | 6.89e-9 |
Read the complete mass-ratio sweep data
| Mass ratio m₂/m₁ | Mean λ̂ | Std across seeds | Classification | Energy drift |
|---|---|---|---|---|
| 0.50 | 1.0259 | 0.0291 | chaotic | 1.00e-12 |
| 0.75 | 1.0946 | 0.0280 | chaotic | 1.00e-12 |
| 1.00 | 1.1495 | 0.0279 | chaotic | 1.00e-12 |
| 1.50 | 1.2380 | 0.0282 | chaotic | 1.00e-12 |
| 2.00 | 1.3193 | 0.0304 | chaotic | 2.00e-12 |
| 3.00 | 1.4328 | 0.0299 | chaotic | 2.00e-12 |
All six mass ratios sit deep in the Gascheau–Routh analytically unstable region for the Lagrange equilateral relative equilibrium. In this exact (1, r, 1) family, linear stability requires r > 25 + 18√2 ≈ 50.456—far outside the 0.5–3.0 range tested here. The monotonic increase visible in the table describes degrees of instability within one unstable regime, not a stability transition.
Scientific method
See exactly what
the estimate knows.
Fix a base configuration: a special solution or a seeded generic scatter.
DOP853, adaptive 8th-order, rtol 1e-11, atol 1e-12.
Displace a twin by a fixed magnitude in a seeded random direction.
Every 1.0 time unit, measure and rescale the twin's separation.
Average the log-growth rate; apply the disclosed threshold.
d²rᵢ/dt² = Σⱼ≠ᵢ G·mⱼ·(rⱼ − rᵢ) / (|rⱼ − rᵢ|² + ε²)^1.5λ̂ = (1 / N·Δt) · Σ ln(dₖ / δ₀)The softening length ε = 1×10⁻⁹ only prevents a literal division by zero; at every separation reached in this study it changes the force by a negligible amount relative to integrator tolerance. λ̂ is the Benettin et al. (1980) two-trajectory estimator: the mean log-growth rate of the twin's separation, renormalized every Δt = 1.0 time unit.
The twin separated by X after N renormalizations.
A numerical statement about one specific run, seed, and window.
This configuration shows measured sensitive dependence within this window.
A reproducible statement bounded by the declared integrator and parameters.
“This solves the three-body problem” or “this proves asymptotic chaos.”
Not established by a finite-window, single-threshold numerical sweep.
Research trail
Built on arguments
you can inspect.
Chenciner & Montgomery prove existence of the figure-eight orbit.
↗Proc. 3rd ECM (Birkhäuser) · 2001Periodic orbits of the planar N-body problem with equal masses and all bodies on the same pathSimo numerically refines the figure-eight initial conditions and finds it linearly stable.
↗Ergodic Theory Dynam. Systems · 2007Linear stability analysis of the figure-eight orbit in the three-body problemRoberts gives a rigorous, computer-assisted proof of linear stability.
↗Proc. LMS · 1875On Laplace's three particles, with a supplement on the stability of steady motionRouth derives the criterion now commonly called the Gascheau–Routh condition; Gascheau had obtained it earlier.
↗Meccanica · 1980Lyapunov characteristic exponents for smooth dynamical systems and for Hamiltonian systems; a method for computing all of them, Part 1: TheoryBenettin, Galgani, Giorgilli & Strelcyn establish the two-trajectory renormalization method used here.
↗Acta Mathematica, vol. 13 · 1890Sur le probleme des trois corps et les equations de la dynamiquePoincare's prize memoir, the origin of chaos theory and the non-integrability result this project never claims to overturn.
↗