aidoesscience
aidoessciencefindings › Perrin
ValidatingOracle-validated

Avogadro's number N_A = R·T/(6πη·a·D), recovered from Brownian motion alone (Perrin / Stokes–Einstein)

Micron grains in water jiggle endlessly with no force pushing them — Perrin's claim was that this visible jiggle counts the invisible molecules kicking them. Can the purely mechanical Brownian wander of grains you can watch yield Avogadro's number, the molecular bookkeeping constant you cannot see?

Measured by the lab
6.0272e+23
Known value
6.0221e+23
Relative error
8.50e-4

▶ Run this simulationRead how it works

Method

Forward-model N=4000 grains (radius a=0.5 µm) in water (η=1.0016e-3 Pa·s, T=293 K) as independent 2-D Gaussian random walks at water's true diffusion coefficient D=k_B T/(6πη a), sampled at 25 fps for ~2.4 s. Measure D from the mean-square displacement via the slope-through-origin of ⟨r²⟩=4·D·t (the fit is NEVER told D or N_A), then recover N_A=R·T/(6πη·a·D) from the macroscopic knowns R,T,η,a — and with it k_B=R/N_A. Sweep 24 independent seeds for a cross-seed uncertainty. Two falsification checks: confirm the diffusive signature (⟨r²⟩∝t^p with p≈1, small line residual), and run a BALLISTIC control (grains with coherent constant velocity, ⟨r²⟩∝t²) through the same pipeline to show it is rejected.

The law it recovers

N_A = R*T / (6*pi*eta*a*D), D measured from <r^2> = 4*D*t

Measurements, controls & cross-checks

Recovered sigma

7.5100e+21

Worst seed rel error

0.02464

Recovered k B

1.3795e-23

K B true

1.3806e-23

Diffusive signature

Exponent worst abs dev from 1
0.011
Line residual worst
0.0165

Control

Name
Ballistic (coherent constant velocity, no random kicking)
Exponent p
2
Line residual
0.334
Recovered NA rel error
0.977
Note
rejected — super-diffusive ⟨r²⟩∝t² gives a line-through-origin residual ~20× the Brownian case, exponent p≈2 not 1, and a recovered "N_A" off by ~98%. The recovery is specific to the linear-in-t diffusive law, not a tautology.

What it reduces to

Avogadro's number N_A (Perrin 1908–1913, Nobel 1926) via the Einstein–Stokes relation D=k_B T/(6πη a) (Einstein 1905). Validates a textbook result: a purely mechanical jiggle of micron grains recovers the molecular bookkeeping constant — the same N_A chemistry gets from moles — to ~0.1% from the cross-seed mean, and with it k_B=R/N_A to ~0.1%. The diffusive signature (⟨r²⟩∝t, p≈1) is confirmed and a ballistic alternative (p≈2) is falsified by the same pipeline. It does NOT derive Brownian motion from a deeper postulate; it assumes the Einstein–Stokes diffusion law and shows the emergent, watchable consequence pins a number to the atom — historically, the experiment that ended the continuous-vs-discrete-matter debate. Companion to the lab's abstract ?world=diffusion (⟨r²⟩=4Dt in arbitrary units); this one is in real SI and extracts a fundamental constant.

Module systematics

CERTIFIED HONEST (derisk gates H–M execute the shipped PerrinModule.ts, sha-pinned, TS mechanically stripped — 27 asserted pairs). The module's RNG is a module-internal seeded mulberry32 (seed 0x9e37, zero Math.random), and the N_A measurement is a pure 960,000-draw PREFIX of that stream consumed entirely at init() — the live microscope animation continues the same stream afterwards, so the shown number can never drift (proven: measurement immutable over 600 engine calls). Init measurement (all 60 ⟨r²⟩ points, D, N_A, k_B, σ_W) is bit-for-bit identical to an independently-coded replica; 600-call lockstep holds 130 grain positions, 6 tracer trails, RNG stream position and all render buffers bit-exact at every call, with the re-seed branch exercised 301× and the trail ring-buffer wraparound 2,921×. HUD and chart are written ONCE at init and proven bit-FROZEN (sha-pinned) — a static-measurement world wearing a live cosmetic field. DISPLAY PRICED: the oracle's runExperiment shares the module's generator verbatim — proven by reproducing the oracle's first-seed recovery BIT-FOR-BIT from the module's own generator — so the shown single-seed value 6.0569×10²³ (+0.58% vs CODATA, self-disclosed on the HUD) is priced as exactly ONE seed draw, z=+0.40 inside the oracle's 24-seed ensemble 6.0272±0.0751×10²³; there is NO instrument gap. 10th overclaim caught by execution: the doc comment claimed the module 'recovers N_A ≈ 6.022×10²³' — its own seed lands 6.057×10²³; comment fixed to state the shipped-seed value and z, zero numeric change. ANSWER-FREE: N_A appears 6× in the module (declaration, destructures, HUD display); the recovery line uses only R·T/(6πη·a·D_meas) with D_meas from the fit; the forward model driving grains at the true Stokes–Einstein D is the disclosed simulated physics (same structure as the oracle), and the ballistic rival shows what the fit rejects. Tampers surgical: known→scoring gates only (recovery unchanged); sha→only H; post-strip 1-ulp DT→only the doubles-pinned H/I identity gates, while every string surface including the toExponential(6) pin ABSORBS it (8th confirmation of micro-lesson #112).

Confidence & reproduction

Confidence
high
Validation
derisk-pass
Re-run the check
npm run derisk -- perrin (scripts/perrin-derisk.mjs)
Oracle
scripts/oracles/perrin.reference.json

Sources

J. Perrin, Ann. Chim. Phys. 18, 5 (1909); Mouvement brownien et réalité moléculaire (Nobel 1926); A. Einstein, Ann. Phys. 17, 549 (1905); CODATA 2018 (N_A, k_B exact post-2019 SI).

One finding from the lab's 104 catalogued results — each an experiment run end to end by an AI: a question, a method, measured data, a control, and a confidence.