RealityModels

Many interacting worlds

Interactive simulation of the Hall, Deckert and Wiseman model: N classical worlds, each with the particle at a definite position, repel each other and Newton's equations alone reproduce uncertainty, zero-point energy, packet spreading, interference and the collapse of a measurement. It has no dependencies and works offline.

Open it by double-clicking simulations/quantum-mechanics/many-interacting-worlds/index.html (or from any static server); nothing to install. Theory and references: many-interacting-worlds-theory.en.md; Italian version: many-interacting-worlds-simulation-guide.it.md.

Idea

Each world n is a classical particle with position x[n] and velocity v[n]. Neighbouring worlds repel with a force that grows as the gap shrinks (the discrete quantum potential, units ħ = m = 1). With N = 1 the repulsion is zero and plain classical mechanics remains; the quantum behaviour is a property of the ensemble. The formulas and the exact results are in the theory document.

Scenarios

ScenarioWhat it shows
Oscillator: ground stateThe repulsion balances the trap ω: a configuration at rest with energy (N−1)·ħω/2 and Δx·Δp = (1−1/N)·ħ/2, both shown next to their measured values. Set N = 1 to see both vanish.
Free particle: spreadingThe trap is off from t = 0. The fan of worlds spreads as Δx(t) = Δx(0)·√(1+ω²t²); the reading compares the measured ratio with the law.
Two packets: interferenceTwo relaxed packets launched head on at ±v₀ with no trap. Worlds never cross: the repulsion channels them into density bands with spacing about πħ/p, the interference fringes.
Measurement: picking a binThe ground state plus a position measurement with resolution δ. One world drawn uniformly (Born rule for equal weights) fixes the outcome; the worlds within δ stay one interacting ensemble, the other bins decouple, fade and evolve on their own. Collapse is selection, never fusion.

Parameters and query string

ParameterQueryRangeDefault
Scenarioscground, free, collision, measureground
Worlds NN1–8020
Trap frequency ωw0.2–31
Packet speed v₀ (collision only)v00.5–63
Measurement resolution δ (measurement only)d0.1–20.4
Languagelangit, enbrowser

Example: index.html?sc=collision&N=40&w=0.5&v0=3.

Language and theme (System, Light, Dark) are set with the gear button at the top right. They are saved in the browser and apply to the other simulations too.

Readings

After a measurement the kept bin is squeezed to a width of order δ with a large repulsion energy, so Δx first collapses and then grows back fast: that is the momentum kick a sharp position measurement must give.

Graph legend

Structure

simulations/quantum-mechanics/many-interacting-worlds/
├── index.html      page and control panel
├── css/style.css   theme tokens (light, dark, system) and responsive layout
├── js/i18n.js      it/en dictionaries and translation functions
├── js/model.js     forces, ground state, integrator, measurement (also usable from Node)
├── js/graph.js     Canvas renderer: world lines, histogram, tooltip
└── js/app.js       controls, scenarios, query string, animation

The settings button (language and theme) is shared by all simulations and lives in simulations/shared/ (js/settings.js, css/settings.css).

Simplifications

Verification

cd simulations/quantum-mechanics/many-interacting-worlds && node -e 'const M=require("./js/model.js"); const I=require("./js/i18n.js").I18n; const x=M.groundState(11,1); const s=M.statistics(M.createState(x,null,1)); let sq=0; x.forEach(function(p){sq+=p*p}); console.log(sq.toFixed(6), s.energy.toFixed(6), s.product.toFixed(6), I.check().length)'

Expected: 5.000000 5.000000 0.454545 0 (sum rule Σx² = (N−1)/(2ω), energy (N−1)·ω/2, product (1−1/N)/2 for N = 11, and no missing keys in the dictionaries).

cd simulations/quantum-mechanics/many-interacting-worlds && node -e 'const M=require("./js/model.js"); const st=M.createState(M.groundState(21,1),null,0); const d0=M.statistics(st).dx; while(st.t<1-1e-9) M.step(st,0.05,1e6); console.log((M.statistics(st).dx/d0).toFixed(6))'

Expected: 1.414214 (free spreading √(1+t²) = √2 at t = 1).