Interactive 3D is ready to start.
Pendulum Lab · Nonlinear Dynamics

Order,
undone by
chaos.

Release two nearly identical pendulums. Watch certainty split into two universes — then measure exactly how fast prediction disappears.

An interactive laboratory for understanding and measuring nonlinear dynamics.

1,597 tests SciPy-validated reproducible by design

Explore the divergence Scroll for a measured camera orbit · drag to inspect by hand
1 same start 2 tiny difference 3 divergence 4 measure it 5 open full Lab
PHASE DESCENT 01 · RELEASE
θ₁ / θ₂ 2.34 / 2.72 VIEW / ELEVATION / DEPTH 000° / e +00° / z 0.00
01 · Same start One question, five steps

Begin with one reference.

First, follow a single release. The reference is the state we will keep unchanged while we ask what one tiny difference can do.

The still image preserves the same reference path when motion or graphics preferences keep the live renderer off.

Reference trajectory · cyan · unchanged Reference trajectory · static view
02 · Tiny difference

Change only one number.

The violet trajectory copies the reference, then adds Δθ₁ = 8×10⁻⁴ rad to its first angle. Everything else stays identical.

The static traces preserve the reference and the one-variable perturbation without implying that animation is running.

referenceθ₁perturbedθ₁ + Δθ₁
03 · Divergence

Watch the futures stop agreeing.

At first the two paths overlap. Then the same deterministic rules carry them apart. Cyan always means reference; violet always means perturbed.

Cyan marks the reference and violet marks the perturbed path; their growing distance is visible without relying on motion alone.

reference: cyanperturbed: violetone variable changed
04 · Measure

Turn the visible split into a number.

The console below reports the wrapped angular difference |Δθ₁(t)| for a planar double pendulum. Enter its exact reference state and perturbation, then continue that exact planar experiment in the full Lab without retyping it.

What is the 3D view calculating?

The hero uses a constrained double-spherical model at 240 Hz. The hands-on console below integrates a planar double pendulum with RK4 at dt=0.001 and samples its trail at 150 Hz, matching the experiment continued in the full Lab.

Measure the split
04 · Measure it

One reference. One declared perturbation.

Enter exact values or use the sliders for quick exploration. The reference and perturbed states are named, not left for colour alone to explain.

Goal
See how a tiny change grows.
Exact start
θ=(2.18, 2.64) rad · ω=(0, 0) rad/s · γ=0.06.
Method
RK4 · dt=0.001.
Change
Only θ₁ by Δθ₁=1e-3 rad · symmetric · seed 20260826 · n=12.
Expected
The paths begin together, then |Δθ₁(t)| grows; trail shape alone is not the result.
Measure
|Δθ₁(t)| here, then finite-time λ₁ with the Lab's phase-state norm.
Reference unchanged initial state Perturbed reference + Δθ₁
|Δθ₁(t)|0.001 rad
screen gap0.00 px
tracewarming
modelive
The Lab URL always carries canonical radians.
2.18 rad
2.64 rad
1.0e-3 rad
0.06
Exact experiment state

Referenceθ₁ 2.18 rad · θ₂ 2.64 rad · ω₁ 0 · ω₂ 0

Perturbedθ₁ 2.181 rad · θ₂ 2.64 rad · ω₁ 0 · ω₂ 0

Full-precision radians and Δθ₁ will continue into the Lab.
Two simulated double pendulums begin 0.001 radians apart. Their cyan and violet trajectories separate over time.
reference + one perturbation 1.0e-3 rad apart
Sensitive Dependence

A thousandth of a radian becomes a different universe.

Release two double pendulums a hair apart and they trace the same arc — until they don't. Trajectories peel away exponentially, prediction collapses into noise. That rate of divergence is the largest Lyapunov exponent, and measuring it honestly — every parameter disclosed, every uncertainty owned — is the entire discipline.

Reference agreement · 20 s
eλ₁t Law of chaotic divergence
Parameters disclosed
θ₂ = 2.300 θ₂ = 2.301

Identical start · 1.0e-3 rad apart → exponential divergence

Four capabilities

From motion to a result someone else can check.

The Lab is organised around four jobs. Method names stay one level deeper until you need them.

01

Simulation

Choose a pendulum system, set exact initial conditions, and watch its state evolve. Presets give beginners a safe start; direct controls remain available for deliberate experiments.

systemsinitial statelive motion
02

Chaos & Analysis

Move from “the paths look different” to quantities that describe divergence, recurrence, stability, and phase-space structure—with uncertainty where the method defines it.

divergencestructureuncertainty
03

Numerical Trust

Compare resolution, convergence, residuals, conservation, and independent references before treating a computed pattern as a scientific conclusion.

convergenceresidualsreference checks
04

Reproducibility

Carry exact setup data in a link, save manifests and research bundles, and keep each public result tied to source evidence and explicit caveats.

shareable statemanifestsprovenance
Explore all methods

The advanced workspace includes fifteen primary integrators, Lyapunov spectra and vectors, Poincaré sections, recurrence analysis, FTLE, basin entropy, continuation, data-driven models, and CPU-oracle-gated GPU paths. Each method explains what it measures and where it can fail.

DOP853GBSLyapunovPoincaréCLVRQAFTLESINDyHAVOK
Three Workspaces

From first swing to peer review — the interface grows with you.

Each launch carries its intended workspace and mission hint into the lab. A five-step spotlight tour greets first-time visitors, every menu entry explains itself in one plain-language line — in English or Korean — and a command palette (Ctrl+K) reaches everything.

Beginner

Watch it move

A focused simulator: the live pendulum, one-click presets from Butterfly to Whirling, and the safest physical controls. No jargon, no clutter — just motion.

  • Guided onboarding tour
  • Preset motions with plain tooltips
  • Menu guide in English / 한국어
Research

Publish the answer

The full surface: chaos diagnostics, Trust Inspector provenance on every quoted number, reviewer kit, governance, research bundles, and the certified workbench with persisted studies.

  • Trust Inspector evidence panels
  • Reproducible research bundles
  • Reviewer console & audit trail
Optional deeper paths

Research library and engineering context.

The interactive laboratory is the primary product. These sections document the broader research library and the separate engineering portfolio connection for readers who need them.

Secondary · Research Frontier

Beyond simulation: a self-validating dynamics library.

The headless core ships as a typed library with a CLI for batch studies. Every frontier module carries its own falsifiable test contract — closed-form anchors, convergence orders, or cross-method agreement.

Melnikov flagship

The analytic chaos threshold vs the measured period-doubling onset — an engine-sized gap map, certified against literature anchors.

Floquet & continuation

Multipliers on corrected periodic orbits, Mathieu stability tongues, arclength continuation with branch switching, Neimark-Sacker tracking.

Koopman · DMD · HAVOK

Data-driven operator views of the flow: dynamic mode decomposition and Hankel-alternative analysis on a shared thin-SVD core.

SINDy & surrogates

Sparse regression rediscovers the equations of motion; polynomial-chaos surrogates yield analytic Sobol sensitivity decompositions.

Krylov eigensolvers

Restarted thick-restart Lanczos for the symmetric case and an Arnoldi–Schur solver for non-symmetric spectra — matrix-free, test-pinned.

Lattice & phonons

Coupled pendulum chains reproduce the analytic dispersion relation — the same normal-mode physics that underpins solid-state phonons.

Quantum kicked rotor

Finite-dimensional quantum Floquet quasi-energies beside their classical chaos counterparts — one engine, both regimes.

Noise & escape

Stochastic resonance, Euler–Maruyama ensembles with Welford moments, and Kramers escape rates for thermal-noise physics.

Read the mini-paper Headless core · typed library · research CLI
Secondary · Engineering portfolio

Why this work maps to TCAD.

Pendulum dynamics and semiconductor devices solve different equations, but trustworthy simulation demands the same engineering habits: expose solver assumptions, quantify discretization error, and validate against an independent reference.

01 · nonlinear solve

Residuals stay visible

Implicit integrators report convergence instead of silently accepting a bad Newton step — the same honesty required by nonlinear device solvers.

02 · mesh ↔ timestep

Resolution is measured

dt-halving, order checks, and energy-drift curves turn numerical resolution into evidence rather than a hidden default.

03 · reference deck

Claims have an oracle

SciPy, symbolic identities, literature anchors, hashes, and replay manifests form the equivalent of a reproducible golden deck.

Read the TCAD mapping Numerics · validation · provenance
Validation & Credibility

Numbers you can check — not claims you must trust.

Every integrator is cross-checked against closed-form, energy, and reference-method criteria, then externally cross-validated against an independent SciPy DOP853 reference for both the double and triple pendulum.

Release evidence · synchronized and reproducible 14 methods profiled
Evidence snapshot from the simulation repository, including measured limitations.
EvidenceMeasured resultScopeStatus
Best energy profile DOP853 8(5,3)1.612e-14 max relative drift 14 methods profiledCompare each method against its documented order and structure-preservation behavior. measured
SciPy DOP853 agreement ~6e-14 regular reference casesChaotic trajectories use time-amplified tolerances and are not claimed bitwise-identical. The flagship study centers one frequency, uses a restricted scan and warm-started attractor branch, may miss coexisting basins, and uses first-order Melnikov theory. The independent Python check uses coarser steps and finite-difference monodromy, supporting tolerance-level reproduction rather than bitwise equality. MATLAB validation is optional and unpinned; any release claim using it must pin release, toolbox, script, and checksum manifests. validated
Period-doubling anchor 1.066372 vs 1.066300 computed vs literature passed
Physical GPU matrix 1 / 3 vendors NVIDIA + AMD pendingExpired or undated driver evidence cannot retain a validated hardware level. Partial vendor coverage is a measured subset and cannot imply complete GPU certification. The matrix is intentionally incomplete until missing physical vendor runners upload evidence. Software adapters do not satisfy this contract. Physical GPU evidence currently covers Intel only; NVIDIA or AMD behavior and complete vendor certification must not be inferred. The N-chain GPU path is planar N at most eight and hybrid; nonlinear trajectories and Jacobian tapes remain CPU f64, so it is not a full-GPU trajectory implementation. The AssemblyScript f64 SIMD N-chain path remains an unpromoted candidate until parity and speedup evidence satisfy its promotion gate. SharedArrayBuffer side-plot claims require Cloudflare mirror COOP and COEP headers plus a positive crossOriginIsolated deployment probe. This evidence is expired and retained only as historical information. informational
Public release chain withheld withheldFailed or unavailable endpoint evidence cannot support a publication claim. npm registry does not resolve this exact package version. No matching public Zenodo DOI record resolves for Pendulum Lab. SharedArrayBuffer side-plot claims require Cloudflare mirror COOP and COEP headers plus a positive crossOriginIsolated deployment probe. MATLAB validation is optional and unpinned; any release claim using it must pin release, toolbox, script, and checksum manifests. Windows headless WebKit audio instability is environment evidence; user-facing audio needs a fallback and an explicit browser matrix. withheld

Evidence current · 2 validated · 1 measured · 2 informational · 1 withheld · valid through 9 Sept 2026

Unit tests · validated

Windows headless WebKit audio instability is environment evidence; user-facing audio needs a fallback and an explicit browser matrix. Plus Chromium, Firefox, WebKit and mobile end-to-end suites, with a machine-readable Stryker aggregate of 65.32% · low band · 29 shards (informational). Expired or undated mutation evidence cannot retain a validated public level. A mutation score below the quality target remains a measurement, not a validated quality claim. Below the 70% quality target; the 65% regression floor is enforced. This evidence is expired and retained only as historical information.

Agreement vs SciPy DOP853 · validated

Regular orbits agree to ~6e-14 over 20 s; chaotic orbits to the e^{λ₁t}-amplified tolerance floor. Chaotic trajectories use time-amplified tolerances and are not claimed bitwise-identical. The flagship study centers one frequency, uses a restricted scan and warm-started attractor branch, may miss coexisting basins, and uses first-order Melnikov theory. The independent Python check uses coarser steps and finite-difference monodromy, supporting tolerance-level reproduction rather than bitwise equality. MATLAB validation is optional and unpinned; any release claim using it must pin release, toolbox, script, and checksum manifests.

Period-doubling onset A_PD

Engine-measured against the published value of 1.0663 — a literature anchor, not a fit.

The gate every change must pass enforced in CI
verifyCSP-safe lint → strict typecheck → module-size ratchet → 1597 unit tests → result-count guard → docs sync → format gate
browsersPlaywright e2e on Chromium, mobile-Chrome, Firefox and WebKit, with visual-regression baselines per host
memoryHard memory-regression gate against a committed browser-benchmark baseline
evidenceReports attest their source commit; a reviewer console reads the machine-readable certification chain
mutationStryker aggregate: 65.32% total · 68.34% covered · low band · 29 shards
Do not take the numbers on trust

Open the evidence ledger and verify each claim yourself.

Latest release signals

What changed — from the source, not a marketing rewrite.

These highlights are synchronized from the simulation repository at the same evidence commit used by this page.

01

Folder rename

the entire docs/ tree moved to documents/ via git mv (history preserved).

02

Cross-repo link

the companion pendulum-landing page (EN + KO) and its docs were repointed to .../blob/master/documents/...

03

Historical entries preserved

older CHANGELOG entries keep their original docs/...

Read the full changelog Synced with release evidence
How It Works

Three steps to the edge of chaos.

No install. No account. Open it in your browser, choose a workspace, run it, and export diagnostics anyone on earth can reproduce.

01

Choose workspace & system

Pick Beginner, Student, or Research, then a system from double pendulum to N-link, driven, and elastic — and one of fifteen primary integrators, each labeled with its order and character.

02

Set parameters & run

Dial in initial conditions and dt, then watch the trajectory, energy drift, and residuals update live. Summon chaotic, periodic, or resonant regimes from presets in a single click.

03

Diagnose & export

Run the Lyapunov spectrum, Poincaré sections, and bifurcation sweeps, then export a hash-verifiable research bundle — PNGs, CSVs, SHA-256 checksums, and a replay manifest.

Open Lab now Runs in your browser · no install
Open the Engine

Release it. Watch it diverge.

The full simulator runs in your browser — fifteen primary integrators, every analysis tab, and hash-verifiable research exports. No install, no account. Just the unvarnished mathematics of chaos.