Slowly tighten the spring under a swinging mass and both its energy and its frequency climb. Is ANYTHING conserved under a slow change of the potential — and is it the same quantity Bohr and Sommerfeld quantized?
Units: dimensionless (R = J_final/J_initial, the ratio of the action J=E/ω before and after a slow change of the potential; the adiabatic theorem predicts R→1. Independent of mass, amplitude, and starting phase)
▶ Run this simulationRead how it works
The adiabatic invariant: slowly tightening an oscillator's well raises both its energy and its frequency, yet the action J = E/ω = (1/2π)∮p dq is CONSERVED — recovered from a from-scratch symplectic trajectory as R = J_final/J_initial = 1.000001 over a slow linear ramp k:1→4 (|Δ|=1.4e-6) while the energy RISES by the full frequency ratio √(k₁/k₀)=2.0 (energy is NOT the invariant; the phase-space AREA is), with R=1 NEVER plugged in. |R−1| falls monotonically with ramp duration as a clean power law ~τ⁻² (slowest ramp >1000× more invariant than fastest); a SUDDEN step of the same endpoints breaks it (phase-averaged R=1.25, a deviation 10⁵× the slow ramp's), so slowness is essential; and the action read geometrically as the shoelace phase-space area ∮p dx/2π equals E/ω to 2e-8 — the very ∮p dq Bohr and Sommerfeld quantized (Ehrenfest 1916)
Integrate a from-scratch 1-D oscillator H = ½p² + ½k(t)x² (unit mass, so acceleration a=−k·x and ω=√k) with velocity Verlet (symplectic, so at fixed k the energy stays bounded — the property that makes the measured energy CHANGES under ramping physical rather than numerical). Launch at amplitude 1 with energy E₀=0.5 and SLOWLY ramp the stiffness k from k₀=1 (ω₀=1) to k₁=4 (ω₁=2). Read the action J = E/ω — equivalently the enclosed phase-space area (1/2π)∮p dq — straight off the trajectory's own E(t), ω(t), and track the invariance ratio R = J_final/J_initial, phase-averaged over 24 initial phases. Five probes: (A) a slow linear ramp (τ=400); (B) the energy ratio over that ramp; (C) an adiabaticity scan over τ∈{25…800}; (D) an instantaneous SUDDEN step of the same endpoints; (E) a shoelace measurement of the phase-space loop area held at k₁; plus a smooth-ramp shape-independence check and a slow up-then-down round trip. The value R=1 is loaded from the reference ONLY to score; the recovery sees only the integrated E(t) and ω(t).
adiabatic invariance of the action, J = (1/2π)∮p dq (Ehrenfest 1916); for the oscillator J = E/ω, and a slow change of k conserves J to all orders in the slowness ε=(1/ω)(dω/dt), even as E and ω individually scale (E_final/E_initial = ω_final/ω_initial = √(k₁/k₀))
1.000001
1.4000e-6
2
2
E rises by √(k₁/k₀)=2.0 while J=E/ω holds — the invariant is the phase-space area, not the energy
| Tau | R minus 1 abs | Note |
|---|---|---|
| 25 | 0.0005332 | |
| 50 | 0.0001113 | |
| 100 | 3.5500e-5 | |
| 200 | 5.4160e-6 | |
| 400 | 1.3780e-6 | |
| 800 | 3.6670e-7 | |
| monotone decreasing; log-log slope −2.12 (~τ⁻², the linear-ramp kinked-endpoint prediction); slowest is 1.45e3× more invariant than fastest — slower ⇒ more adiabatic |
6.1700e-7
recovered R = J_final/J_initial = E/ω ratio from the symplectic trajectory; the target R=1 is loaded from the reference only to score. All 19 derisk gates pass (12 physics + 7 module-honesty: reference integrity, bit-exact transcription pins, HUD strings verbatim with live headless read-back, slow-phase staircase/phase-averaging decomposition, sudden-phase single-trajectory reconciliation with the stale-acceleration artifact predicted analytically, hold-segment freeze).
The adiabatic invariance of the action, J = (1/2π)∮p dq, first proved for the general slowly-perturbed periodic system by Ehrenfest (1916) building on Boltzmann and Clausius's mechanical heat theorem; for the harmonic oscillator J = E/ω. This world VALIDATES, not derives: it assumes only Newtonian dynamics (a=−k(t)x integrated symplectically) and recovers the invariance ratio R=J_final/J_initial=1 as a pure number, with R=1 never entering the recovery — only the trajectory's E(t),ω(t) are read. It is non-circular on several fronts — the recovery sees only E and ω; the invariance holds while the energy manifestly does NOT (E rises by the full frequency ratio √(k₁/k₀)=2, isolating the phase-space AREA as the conserved quantity, not the naive energy); the adiabaticity scan gives the falsifiable perturbation prediction that slower ⇒ more invariant with a clean ~τ⁻² law; the SUDDEN-step control shows a fast change of the same endpoints breaks the invariant (R=1.25), proving slowness is essential; and an independent shoelace measurement confirms the conserved number IS the enclosed phase-space area to 2e-8. It is DISTINCT from the virial theorem (?world=virial, a time-average of a single fixed orbit) and from resonance/coupled oscillators (?world=resonance, ?world=coupled, fixed-parameter response): here the parameter itself is slowly driven and the conserved object is the action of the slowly-deforming orbit. Its deepest significance is the bridge to old quantum theory: this ∮p dq is exactly the quantity Bohr and Sommerfeld quantized (∮p dq = nh), so its classical adiabatic invariance is why a quantum system's quantum number is preserved under a slow perturbation — the classical seed of the quantum adiabatic theorem (Born–Fock 1928) and of Berry's phase. It does not treat non-integrable/chaotic adiabatic invariants (where invariance can fail at separatrix crossings), multiple slowly-varying parameters, or the quantum problem itself; it establishes the cleanest classical case, the oscillator whose action is E/ω. The lab's first adiabatic-invariant world.
npm run derisk -- adiabatic (scripts/adiabatic-derisk.mjs)scripts/oracles/adiabatic.reference.jsonP. Ehrenfest, 'Adiabatische Invarianten und Quantentheorie', Ann. Phys. 356, 327 (1916). L. D. Landau & E. M. Lifshitz, 'Mechanics' §49 (the adiabatic invariant J=(1/2π)∮p dq; I=E/ω for the oscillator). A. Sommerfeld, 'Atombau und Spektrallinien' (∮p dq = nh). M. Born & V. Fock, Z. Phys. 51, 165 (1928) — the quantum adiabatic theorem. Reference value: R = J_final/J_initial = 1 (adiabatic limit); R_sudden = (k₀+k₁)/(2k₀)/√(k₁/k₀) = 1.25 for k₀=1,k₁=4.