Does the full nonlinear double pendulum — integrated as raw F=ma with no linearization or normal-mode theory in the code — contain the exact small-oscillation spectrum ω∓ = √((2∓√2)g/L) with its parameter-free frequency ratio 1+√2, and is the coupling between the rods load-bearing for both that mode splitting and the large-amplitude chaos the module displays?
Units: dimensionless (ω_fast/ω_slow = 1+√2; secondary knowns ω_slow = √((2−√2)g/L) = 2.3971994, ω_fast = √((2+√2)g/L) = 5.7873513 rad/s)
▶ Run this simulationRead how it works
The double pendulum's two faces from ONE nonlinear rule: the spectrum hidden in the full F=ma equations comes back as exactly two discovered lines whose ratio is 2.41421324 ± 3.2e-7 vs the exact 1+√2 = 2.41421356 (rel 1.3e-7) — no linearization, no normal-mode formula anywhere in the generator, the amplitude bias removed by an ε²→0 extrapolation the code self-calibrates — while the SAME equations released high are chaotic (Benettin λ = 1.45 with energy conserved to 7e-10) and released gently are not (λ = 0.007); the mass sweep tracks ω±² = (g/L)/(1∓√β) at 4 points, both lines scale as 1/√L with the ratio pinned, and the rival 'a double pendulum is just two pendulums' dies twice: uncoupled, the same detector finds ONE degenerate line (ratio 1, 141% off) and the same large-amplitude release gives λ ≈ 0 — the coupling is load-bearing for BOTH the 1+√2 and the chaos
Generator = the module's verbatim _deriv (the standard energy-conserving nonlinear double-pendulum right-hand side, equal masses and lengths, g = 9.81, L = 1) stepped by the module's RK4 at oracle dt = 1e-3 (spectral) and the module's own dt = 1/2000 (Benettin); no √, no (2±√2), no 1+√2, no linearized system appears in generation or detection — knowns live in scripts/oracles/dblpendulum.reference.json and enter only the scorer. Detection: the spectral lines of θ₁(t) are DISCOVERED by scanning every local maximum of the Blackman-windowed DFT above 3% of the global max (−58 dB sidelobes — estimator lesson #22) and refining by golden section; each of 12 random-IC seeds runs at three amplitudes ε ∈ {0.02, 0.05, 0.08} and each line's position is extrapolated linearly in ε² to ε → 0, removing the O(ε²) nonlinear softening with no known value in the loop. Gates: (A) 12-seed mean ratio vs 1+√2, rel < 1e-6; (B) exactly two lines at every seed × amplitude, positions vs √((2∓√2)g/L), rel < 1e-6; (C) mass sweep μ = m₂/m₁ ∈ {0.25, 0.5, 2, 4}: both lines track ω±² = (g/L)/(1∓√β), β = μ/(1+μ), rel < 1e-4 — the ratio leaves 1+√2, so the constant is specific to equal masses; (D) length scaling L ∈ {0.5, 2}: lines × 1/√L, ratio invariant; (E) Benettin twin (module algorithm: δ₀ = 1e-8, renorm 0.2 s, settle 1 s): λ(a=2.4) > 0.4 with max energy drift < 1e-7, λ(a=0.4) < 0.2; (F) rival 'two independent pendulums' (coupling cut, fixed pivots): same detector finds exactly ONE degenerate line at √(g/L), ratio 1 rejected at 141%, AND the uncoupled a = 2.4 release gives λ ≈ 0.05 — a lone pendulum is integrable at any amplitude; (G) module mirror: the verbatim Benettin pipeline to t = 60 s pins the on-screen verdicts ('CHAOTIC' at λ = 1.397 ∈ [0.7, 1.7]; 'near-regular' at λ = 0.006 ∈ [−0.05, 0.2]) and the displayed energy drift < 1e-5; (H) tamper self-test — a wrong known_value flips the headline to FAIL with the recovered ratio unchanged (verified: known → 2.3 ⇒ exit 1, ratio still 2.41421324, restored by hand).
Linearized about hanging equilibrium, the equal-length double pendulum has normal modes ω±² = (g/L)/(1∓√β), β = m₂/(m₁+m₂); equal masses give ω∓² = (2∓√2)g/L and the parameter-free ratio 1+√2 (Landau–Lifshitz §23). At large amplitude the same equations are chaotic with λ > 0 (Shinbrot et al. 1992; Levien & Tan 1993).
3.2000e-7
12/12 pass (~27 s; gates I–L added by the honest-module certificate run, all first attempt, ZERO module edits); tamper self-tests: known_value → 2.5349 ⇒ gates A/D/I/L FAIL, exit 1, recovered ratio unchanged at 2.41421324, restored by hand; module source g 9.81 → 9.82 ⇒ gates I/J/K/L FAIL (sha pin, every executed-screen pin, replica bit-compare, probed ω̂ off by 2.9e-3), exit 1, restored via git checkout
The classical small-oscillations theory of the double pendulum — the worked problem of Landau & Lifshitz 'Mechanics' §23: diagonalizing the 2×2 mass/stiffness pair of the linearized equal-length double pendulum gives ω±² = (g/L)/(1∓√β) with β = m₂/(m₁+m₂), hence ω∓² = (2∓√2)g/L and the exact dimensionless ratio 1+√2 for equal masses — plus the canonical chaos results (Shinbrot et al. 1992; Levien & Tan 1993) that the same system at large energy has a positive largest Lyapunov exponent. Non-circular because the generator is the module's verbatim FULL NONLINEAR right-hand side under RK4: no linearization is ever performed, no mode formula or √ enters the code, the two lines are DISCOVERED by a from-scratch Blackman peak scan, and the small-amplitude limit is reached by an ε²→0 extrapolation that self-calibrates from the runs alone (proven by the tamper self-test: changing the known ratio leaves the recovered 2.41421324 unchanged while the headline flips to FAIL). The recovery is sharper than 'a double pendulum has two modes' in three ways: it returns the dimensionless constant to 1.3e-7 relative with seed-level uncertainty; the mass and length sweeps verify the full parameter law ω±² = (g/L)/(1∓√β) and the ratio's parameter-freeness rather than one point; and the uncoupled rival is falsified twice by the same machinery — one degenerate line instead of two (ratio 1 vs 2.414, a 141% miss) and λ collapsing from 1.45 to ≈ 0 at the same large-amplitude release — establishing that the inter-rod coupling manufactures BOTH the mode splitting AND the chaos. Limits: λ itself is initial-condition- and parameter-specific (no universal citable value exists), so the chaos face is gated structurally (λ > 0, energy conserved, vanishing for the gentle release and the uncoupled rival) rather than against a number; and the ratio claim is a statement about the linearized spectrum embedded in the nonlinear flow, reached in the ε → 0 limit — finite-amplitude frequencies soften below it, which is exactly the O(ε²) bias the extrapolation removes and discloses.
The on-screen DoublePendulumModule shows a running Benettin λ, a verdict string, and an energy-drift figure; oracle gate G reproduces the module's pipeline verbatim (RK4 dt = 1/2000, δ₀ = 1e-8 twin on θ₁, renorm every 0.2 s, log-growth counted after the 1 s settle, λ = Σln(d/δ₀)/Σt) to t = 60 s for both presets and pins the verdicts — chaos preset λ(60 s) = 1.397 ⇒ 'CHAOTIC · sensitive dependence (λ>0)' (the module's threshold is λ > 0.5), regular preset λ(60 s) = 0.006 ⇒ 'near-regular (λ → 0)' — and the displayed energy drift (3.9e-10 and 4.8e-15, both far under the 1e-5 gate, matching the module's '0.000%' display). Disclosed honestly: (1) the chaos-preset λ digits are NOT portable across platforms — a chaotic trajectory amplifies libm ULP differences, so the oracle pins a band [0.7, 1.7] plus the verdict, not the trailing digits; (2) the on-screen λ is a finite-time running estimate that fluctuates around the asymptotic exponent and is specific to this release and these parameters — it is honest as displayed (the module labels it a measurement, not a universal constant); (3) the module's small-angle preset (a = 0.4) is 'near-regular', not strictly ε → 0 — its normal-mode content sits ~1% below the linear frequencies from the same O(a²) softening the oracle's extrapolation removes; the module makes no frequency claim on screen, so nothing shown disagrees with the oracle. No module code was changed this run. HONEST-MODULE CERTIFICATE (refiner, 2026-07-24): gates I–L now EXECUTE the shipped DoublePendulumModule.ts (sha256 pin + 40-pair mechanical strip + new Function with recorder stubs) — both presets' screens are pinned strict through the module's own fl(1/120) engine-tick accumulator (λ bit-exact, HUD ===, trail/chart/state sha256, the 1-step deficit vs the rational schedule pinned as exact integers), the re-typed replica of gates E/G is gated BIT-FOR-BIT against the executed source at 239,999 steps, and the executed _rk4's tangent map at the hanging equilibrium equals R(hA) at machine precision, returning ω∓ and the 1+√2 ratio to 3e-12 by pure differentiation of the shipped integrator. Disclosed: the executed-screen pins are machine-local bit-exact floats (libm ULP differences move them across platforms — the portable claims remain gates A–H and the verdict bands); and gate E's λ(120 s) differs from the executed screen's by 0.0113 solely because the rational 240,000-step schedule fires one extra boundary renorm the deficit-1 executed run misses — a single-sample finite-time effect, not a bias (the underlying trajectories are bit-identical).
bright pendulum + faint ghost released 0.004 rad apart splitting on screen; Lyapunov λ read-out with the Σln(d/δ₀) divergence chart (slope = λ); verdict 'CHAOTIC · sensitive dependence (λ>0)' at large amplitude, 'near-regular (λ → 0)' for ?preset=regular; energy drift 0.000% — verdicts and drift pinned by the oracle's verbatim module mirror
npm run derisk -- dblpendulum (scripts/dblpendulum-derisk.mjs)scripts/oracles/dblpendulum.reference.jsonL. D. Landau, E. M. Lifshitz, 'Mechanics' 3rd ed. §23 (Pergamon, 1976) — small oscillations; the double pendulum worked problem with normal modes from the 2×2 secular equation. T. Shinbrot, C. Grebogi, J. Wisdom, J. A. Yorke, 'Chaos in a double pendulum', Am. J. Phys. 60, 491 (1992). R. B. Levien, S. M. Tan, 'Double pendulum: An experiment in chaos', Am. J. Phys. 61, 1038 (1993).