Annus Mirabilis · Interactive critical edition in preparation
The Brownian tracer ensemble
Follow hundreds of particles from one start and watch their spread grow.
A reproducible trial
The tracer ensemble
Compare the movement of individual tracers with the statistics of the whole ensemble. Changing when or how you observe the trial does not generate different paths.
Predict before the numbers
If you watch four times as long, does the typical distance from the start become 4 times as large, 2 times as large, or unchanged?
Predict before the numbers
In a liquid twice as viscous, after the same time, does the typical distance become half as large, about 0.71 times as large, or unchanged?
The result appears when you choose, say you have one in mind, or skip.
These buttons use the accepted trial, not unsaved draft edits. The requested time must lie on its recording grid.
Same-seed viscosity comparisons use common random numbers, not independent trials.
Experiment settings temperature, viscosity, radius, tracers, timing, seed
Static worked example
CurrentThese numbers match the current settings.
Model note
- Primary outputs temperature, viscosity, particleRadius, observationInterval, ensembleSize: Host calculation (bm01.acceptedInputs). Owner bm01.acceptedInputs.
- Primary output boltzmannConstant: Host calculation (constants.modernSI2019). Owner constants.modernSI2019.
- Primary output diffusionCoefficient: Host calculation (diffusion.stokesEinsteinD). Owner diffusion.stokesEinsteinD.
- Primary outputs rmsDisplacement1d, lambdaX1s, lambdaX60s: Host calculation (diffusion.rmsDisplacement). Owner diffusion.rmsDisplacement.
- Primary outputs modelSecondMoment, modelMeanNorm, modelRmsNorm: Host calculation (diffusion.moments). Owner diffusion.moments.
- Primary output tracerPositions: Host reference calculation (recordTracers). Owner diffusion.recordTracers.
- Primary output modelApparentSpeed: Host calculation (diffusion.apparentSpeed). Owner diffusion.apparentSpeed.
- Primary outputs sampledApparentSpeed, signedMean, meanSquare: Host calculation (diffusion.ensembleMoments). Owner diffusion.ensembleMoments.
- Primary outputs traceCoordinates, recordingDraws: Host calculation (diffusion.recordTracers). Owner diffusion.recordTracers.
- Primary outputs traceTimes, plotTimes, plotSampleMean, plotSampleMsd, plotSampleRms, plotSampleApparent, plotModelMean, plotModelMsd, plotModelRms, plotModelApparent, reusedRecording: Host calculation (bm01.measure). Owner bm01.measure.
- Primary outputs histogramEdges, histogramCounts, histogramFrequencies, underflow, overflow, kolmogorovDistance: Host calculation (diffusion.displacementHistogram). Owner diffusion.displacementHistogram.
- Primary output histogramModel: Host calculation (diffusion.intervalProbability). Owner diffusion.intervalProbability.
- Primary outputs meanBand, secondMomentBand, signedMeanLowerBand, signedMeanUpperBand, meanSquareLowerBand, meanSquareUpperBand: Host calculation (diffusion.ensembleMomentBands). Owner diffusion.ensembleMomentBands.
- Secondary outputs sampleMean, sampleMeanAbsolute, sampleMeanSquare, sampleRms, sampleMeanNorm, sampleMeanSquareNorm, sampleRmsNorm: Host reduction (ensembleMoments). Owner diffusion.ensembleMoments.
- Seed 1905.
- Accepted input revision 1.
- Snapshot version 1.
- Not modeled: Molecular collisions (no collision bath owns the displacement).
- Show the code
Accepted synthetic trial: 400 tracers, 1 second, coordinate mean 0.0029237 micrometres and coordinate RMS 0.98602 micrometres.
Accepted trial: seed 1905; 400 tracers; 293.15 K; viscosity 1 mPa·s; radius 0.5 μm. Observe at 1 s in a 10-second recording. Constants: modern SI 2019.
| Diffusion coefficient (model) | 0.42944 μm²/s |
|---|---|
| Signed mean (sample) | 0.0029237 μm (modern SI 2019) |
| Mean absolute coordinate displacement | 0.77808 μm (modern SI 2019) |
| Mean-square coordinate displacement | 0.97223 μm² |
| Coordinate RMS (sample / model) | 0.98602 / 0.92676 μm (modern SI 2019) |
| Mean distance (sample / model) | 0.77808 / 0.73945 μm (modern SI 2019) |
| Total mean square (sample / model) | 0.97223 / 0.85888 μm² |
| Apparent coordinate speed (sample / model) | 0.98602 / 0.92676 μm/s |
Sampling bands under the model
99.9% per comparison, not a simultaneous guarantee across the table or repeated observations. These ranges are calculated from the model variance, not estimated from the observed sample, and are not uncertainties of the model itself.
Signed coordinate mean (μm): −0.15248 to 0.15248
Total mean square (μm²): 0.67299 to 1.0729
Hundreds of particles each take their own random path from the same start. Their average position stays near the start, but their typical distance from it keeps growing, as the square root of the time.
Section 4 assumes that each particle moves independently of every other, and that one particle's moves in successive short intervals τ are independent of each other, a displacement Δ being as likely as −Δ. From these assumptions the density of particles obeys a diffusion equation, and for particles that all start at x = 0 its solution is a Gaussian with mean zero and mean square 2Dt. The typical displacement along one axis is therefore λx = √(2Dt). It grows as the square root of the time, which is why four times the observation interval doubles the spread. The instrument draws such an ensemble and sets its sample mean and RMS beside the model's.
Follow one particle through one short interval τ. It moves by some amount Δ, as often to the right as to the left, so over many particles the average of Δ is zero. The average of Δ² is not zero, since a square is never negative; Section 4 writes that average as 2Dτ, which is how it defines the diffusion coefficient D. Now follow the particle for a longer time t. It makes n = t/τ such moves, one after another, and its position x is their sum. The average of a sum is the sum of the averages, so the average of x is still zero. For the average of x², write out the square of the sum: it holds each Δ² once and every product of two different moves. Two different moves are independent and each averages to zero, so every such product averages to zero as well, and only the n squares remain. The average of x² is therefore n × 2Dτ = (t/τ) × 2Dτ = 2Dt, and the typical distance is its square root, λx = √(2Dt). Four times the time gives √4 = 2 times the spread. Einstein's own numbers follow the same rule: for particles 0.001 mm across in water at 17 °C he found about 0.8 micron in one second and about 6 microns in one minute, because √60 is about 7.7 and 0.8 × 7.7 ≈ 6. This route adds the moves one at a time; Einstein's route in Section 4 reaches the same Gaussian through the diffusion equation.
Einstein printed λx = √(2Dt) in Section 4 and, putting in his Section 3 result D = (RT/N) · 1/(6πkP), λx = √t · √((RT/N) · 1/(3πkP)) in Section 5. In his notation k is the fluid's viscosity, not Boltzmann's constant, and P is the particle's radius. He did not claim to have explained an observed motion: the paper opens by saying these motions may be the Brownian motion, but that the reports available to him were too imprecise to judge. Langevin reached the same mean square in 1908 from an equation of motion with a random force, and Perrin's measurements of 1908 and 1909 used Einstein's formula to estimate N.
Inspect the model behind this trial
These equations describe the same accepted trial as the plots and table. Select a symbol or an operation to see what it means; model predictions are not sample estimates.
Explore the equation · Modern model notation
Why the apparent speed depends on how you watch
Shown in modern letters; Einstein's are in §4 of the German source face.
divides
Select a term or operation. In the formula, Down enters an operation, Up returns to its parent, and Left/Right move between siblings. Escape clears selection. Tab leaves the formula.
Each term and operation, in words
Static worked example
These values are for the settings last applied, not for edits you have not applied yet.
- Apparent coordinate speed
- 0.92676 μm/s
- Coordinate RMS displacement
- 0.92676 μm
- Observation interval
- 1 s
Read the equation aloud in words
Apparent coordinate speed equals the model coordinate root mean square displacement divided by the observation interval.
This quotient depends on the observation interval. It is not instantaneous physical velocity. At zero interval the quotient is undefined, even though the displacement is zero.
Model assumptions and every term’s meaning
- The same one-coordinate ideal Brownian model as the RMS relation.
- A positive observation interval is required for the quotient.
- Lines joining recorded points are a rendering convention, not a velocity measurement.
- Define the observable
- This defines an interval-dependent comparison. It does not introduce a physical instantaneous Brownian velocity. Read the prerequisite
- Apparent coordinate speed
- A distance-per-interval statistic. It is not a molecular collision speed. Read the prerequisite
- Divide by the same interval
- The distance grows as the square root of time, while the denominator grows linearly. The quotient therefore decreases as the interval grows. Read the prerequisite
- Model coordinate RMS
- The same accepted one-coordinate model displacement used by the neighboring RMS equation. Read the prerequisite
- Positive observation interval
- A zero interval yields no apparent-speed value. The interface keeps the explanation instead of fabricating zero or infinity. Read the prerequisite
Every term’s units were checked when this page was built. That checks the units, not the model. This equation is written for this edition in modern notation, not transcribed from the paper, and its review is pending.
Explore the equation · Modern model notation
Resistance to motion controls spreading
Shown in modern letters; Einstein's are in §5 of the German source face.
is thermal energy divided by the viscous drag coefficient.
Select a term or operation. In the formula, Down enters an operation, Up returns to its parent, and Left/Right move between siblings. Escape clears selection. Tab leaves the formula.
Each term and operation, in words
Static worked example
These values are for the settings last applied, not for edits you have not applied yet.
- Diffusion coefficient
- 0.42944 μm²/s
- Boltzmann constant
- 1.3806 × 10−23 J/K
- Absolute temperature
- 293.15 K
- Dynamic viscosity
- 1 mPa·s
- Particle radius
- 0.5 μm
Read the equation aloud in words
The diffusion coefficient equals the Boltzmann constant times the absolute temperature, divided by six times pi times the dynamic viscosity times the particle radius.
Thermal energy competes with viscous drag. Doubling viscosity halves the diffusion coefficient while reducing RMS displacement only by the square root of two. Radius means radius, not diameter.
Model assumptions and every term’s meaning
- Dilute, approximately spherical tracers with no-slip Stokes drag in a homogeneous Newtonian liquid.
- Wall corrections, interactions, inertia, and observation noise are not included.
- The modern SI 2019 constant set is used; this is not a historical inversion exercise.
- An ideal model
- This equation assumes the dilute spherical tracer and Stokes-drag model; dimensional consistency alone does not establish those assumptions. Read the prerequisite
- Diffusion coefficient
- A squared-distance-per-time coefficient. This value comes from the accepted model calculation. Read the prerequisite
- Why divide by drag?
- Increasing the denominator reduces diffusivity at fixed thermal energy. This is a model dependence, not a rule that every larger quantity must reduce motion. Read the prerequisite
- Thermal energy scale
- Boltzmann constant times absolute temperature supplies energy per particle. Read the prerequisite
- A known modern constant
- The SI 2019 constant set supplies this value. It must not be treated as independent historical evidence when trying to infer molecular number. Read the prerequisite
- Absolute temperature
- Use kelvin. The laboratory holds viscosity as an independently supplied parameter. Read the prerequisite
- The drag coefficient
- Six pi times viscosity times radius is Stokes drag per speed for an isolated sphere in the assumed low-Reynolds regime. Read the prerequisite
- Dynamic viscosity
- Viscosity is in the denominator. Doubling it at fixed temperature and radius halves D, not the RMS displacement. Read the prerequisite
- Particle radius
- The input is a radius, not a diameter. Confusing them changes the predicted coefficient by a factor of two. Read the prerequisite
Every term’s units were checked when this page was built. That checks the units, not the model. This equation is written for this edition in modern notation, not transcribed from the paper, and its review is pending.
Explore the equation · Modern model notation
From spreading to a measurable distance
is the positive square root
Select a term or operation. In the formula, Down enters an operation, Up returns to its parent, and Left/Right move between siblings. Escape clears selection. Tab leaves the formula.
Each term and operation, in words
Static worked example
These values are for the settings last applied, not for edits you have not applied yet.
- Coordinate RMS displacement
- 0.92676 μm
- Diffusion coefficient
- 0.42944 μm²/s
- Observation interval
- 1 s
Read the equation aloud in words
The model coordinate root mean square displacement equals the square root of two times the diffusion coefficient times the observation interval.
Squaring measures spread without cancellation between directions. Taking the positive square root turns squared distance back into a distance. Four times the observation interval gives twice the model RMS, not four times.
Model assumptions and every term’s meaning
- Independent, zero-mean Gaussian displacement increments in a homogeneous liquid.
- One-coordinate model statistic, not a measured speed or a sample estimate.
- The overdamped regime is assumed rather than established from additional particle and fluid measurements.
- A model relation
- This equality concerns the ideal model. A finite synthetic ensemble fluctuates around it; its sample RMS is displayed separately. Read the prerequisite
- Coordinate RMS
- One coordinate, not the total three-dimensional distance. Model RMS and sample RMS have different meanings. Read the prerequisite
- Why a square root?
- Two D t has units of squared length. Its positive square root has units of length and defines the typical displacement. Read the prerequisite
- Build the mean square
- Independent zero-mean increments add their variances. The definition of D makes the coordinate mean square equal to 2 D t. Read the prerequisite
- Diffusion coefficient
- This is the accepted model diffusivity, not a rate inferred from the synthetic data. Read the prerequisite
- Observation interval
- This is the interval used for the displayed displacement, not the simulation frame rate. Re-observing the trial preserves its paths. Read the prerequisite
Every term’s units were checked when this page was built. That checks the units, not the model. This equation is written for this edition in modern notation, not transcribed from the paper, and its review is pending.
RMS distance over recorded time
Read the comparison as a table
| Time (s) | Sample | Model |
|---|---|---|
| 0.02 | 0.13038 | 0.13106 |
| 0.04 | 0.18556 | 0.18535 |
| 0.1 | 0.30368 | 0.29307 |
| 0.2 | 0.40416 | 0.41446 |
| 0.4 | 0.61388 | 0.58613 |
| 1 | 0.98602 | 0.92676 |
| 2 | 1.3495 | 1.3106 |
| 4 | 1.9035 | 1.8535 |
| 10 | 2.8723 | 2.9307 |
What is, and is not, being simulated
These synthetic paths are Gaussian independent increments for dilute spherical tracers in a homogeneous Newtonian liquid. They do not simulate individual molecular collisions, inertia, interactions, sedimentation, walls, localization error or motion blur.
Low Reynolds number and observation times long compared with momentum relaxation are assumed, not verified from fluid and particle data. Lines between samples are a drawing convention; they do not define an instantaneous Brownian speed.
The three latent coordinates are recorded together. Axis, dimension, observation and statistic changes reuse those coordinates. The histogram and statistics use every tracer, including those outside the view.
No FrankenSim WASM artifact produced this trial. Integer random draws follow the pinned Philox mapping; Gaussian conversion uses this host’s math functions and is not claimed bitwise identical across browser engines.
Logical recording draws: 1200000. This result was assembled from a newly generated deterministic recording.
Evaluator source digest: source:sha256:5cf1023395b9ece25ce1bb1d33a03d9f305254e5c66cb2c5c6a73921897d54f2
Show the code
Audited TypeScript reference evaluator: the owner on this device, or the host fallback for a FrankenSim capability.
stokesEinsteinD · src/physics/reference/diffusion/distributions.ts · revision workspace · sha256:a41fa1ff39026dbed9a701b368028012995d1835d9acebb2e32d5010f47404ec
This is the function that produced the current snapshot.
In words
Take the temperature and the gas constant, divide by the number of molecules in a mole to get the energy scale of one molecule, then divide by the drag on a sphere of this radius in a liquid of this viscosity.
Mathematics
Implementation
/** SI: temperature K, viscosity Pa s, radius m, output m2/s. No ambient constants. */
export function stokesEinsteinD(
{
T,
eta,
a,
medium = "liquid",
}: { T: number; eta: number; a: number; medium?: "liquid" | "gas" },
set: ConstantSet,
): Evaluation {
if (![T, eta, a].every((v) => Number.isFinite(v) && v > 0))
return outside(
"diffusionCoefficient",
"stokesEinsteinD",
"T > 0, eta > 0, a > 0",
"Enter positive finite temperature, viscosity, and particle radius.",
"input",
set,
);
if (medium !== "liquid")
return outside(
"diffusionCoefficient",
"stokesEinsteinD",
"stokes-gas-medium",
"The liquid Stokes-drag model does not include the slip correction needed in a gas.",
"model",
set,
);
const k = thermalConstant(set);
return number(
"diffusionCoefficient",
"stokesEinsteinD",
(k.value * T) / (6 * Math.PI * eta * a),
set,
undefined,
true,
);
}| Step | Expression | Value | Unit |
|---|---|---|---|
| The gas constant in SI | R = 8.31 × 107 erg mol−1 K−1 | 8.31 | J mol⁻¹ K⁻¹ |
| Thermal energy per mole | RT | 2411.1 | J mol⁻¹ |
| Drag on one sphere | 6 π η a (this operation in the equation) | 1.2723 × 10⁻⁸ | kg s⁻¹ |
| Drag on a mole of spheres | N 6 π η a | 7.6341 × 10¹⁵ | kg s⁻¹ mol⁻¹ |
| Diffusion coefficient | RT / (N 6 π η a) (this operation in the equation) | 3.1584 × 10⁻¹³ | m² s⁻¹ |
| Coordinate RMS at 1 s | λ_x = √(2 D t) at t = 1 s (this operation in the equation) | 7.9478 × 10⁻⁷ | m |
| Coordinate RMS at 60 s | λ_x = √(2 D t) at t = 60 s (this operation in the equation) | 6.1564 × 10⁻⁶ | m |
Audited TypeScript reference evaluator: the owner on this device, or the host fallback for a FrankenSim capability.
rmsDisplacement · src/physics/reference/diffusion/distributions.ts · revision workspace · sha256:6d2d381222179a43397683f83d95eecf9dab253844f72dfcaa1eaab1302222eb
This function computes the listed outputs when it runs.
In words
The typical one-dimensional displacement is the square root of twice the diffusion coefficient times the observation interval.
Mathematics
Implementation
export function rmsDisplacement(D: number, t: number): Evaluation {
if (!validDt(D, t))
return outside(
"rmsDisplacement1d",
"rmsDisplacement",
"D >= 0 and t >= 0",
"Diffusivity and elapsed time must be finite and nonnegative.",
);
return number(
"rmsDisplacement1d",
"rmsDisplacement",
scale(D, t),
undefined,
undefined,
D > 0 && t > 0,
);
}Audited TypeScript reference evaluator: the owner on this device, or the host fallback for a FrankenSim capability.
apparentSpeed · src/physics/reference/diffusion/distributions.ts · revision workspace · sha256:1f2137435fdc15b0a9b5c91cc4dafba680e8d52b0f5143fdbefdfa9945f6baec
This function computes the listed outputs when it runs.
In words
Divide the model RMS displacement by the observation interval. The quotient depends on how long you watch.
Mathematics
Implementation
export function apparentSpeed(D: number, tau: number): Evaluation {
if (!validDt(D, tau) || tau === 0)
return outside(
"apparentSpeed",
"apparentSpeed",
"D >= 0 and tau > 0",
"An apparent speed needs a positive observation interval.",
);
return number(
"apparentSpeed",
"apparentSpeed",
(Math.SQRT2 * Math.sqrt(D)) / Math.sqrt(tau),
undefined,
undefined,
D > 0,
);
}Audited TypeScript reference evaluator: the owner on this device, or the host fallback for a FrankenSim capability.
ensembleMoments · src/physics/reference/diffusion/tracers.ts · revision workspace · sha256:1d87c8e69590b8871bcc7a6390089003f59d0b80bfc7eb1919a57dec661743e6
This function computes the listed outputs when it runs.
In words
Average the recorded displacements of every tracer, not a viewport subset.
Mathematics
Implementation
/** Compensated sums over ALL members, never a viewport-selected subset. Row-major M by d. */
export function ensembleMoments({
displacements,
d,
dt,
viewport,
}: {
displacements: Float64Array;
d: number;
dt?: number;
viewport?: ViewportBounds;
}): Computation<EnsembleMoments> {
if (
!(displacements instanceof Float64Array) ||
![1, 2, 3].includes(d) ||
displacements.length === 0 ||
displacements.length % d !== 0 ||
displacements.length > 30000 ||
!displacements.every(Number.isFinite)
)
return invalid(
["displacements", "d"],
"Provide finite, row-major displacements with one, two or three coordinates per tracer.",
);
const M = displacements.length / d,
sums = new Float64Array(d * 3 + 1),
corrections = new Float64Array(d * 3 + 1);
function add(i: number, v: number) {
const corr = corrections[i] ?? 0,
sum = sums[i] ?? 0,
y = v - corr,
t = sum + y;
corrections[i] = t - sum - y;
sums[i] = t;
}
for (let i = 0; i < M; i++) {
let norm = 0;
for (let j = 0; j < d; j++) {
const v = displacements[i * d + j];
if (v === undefined) return failure("A required displacement coordinate was undefined.");
if (v !== 0 && v * v === 0)
return failure("A nonzero squared displacement is below the representable range.");
add(j * 3, v);
add(j * 3 + 1, Math.abs(v));
add(j * 3 + 2, v * v);
norm = Math.hypot(norm, v);
}
add(d * 3, norm);
}
const axes = Array.from({ length: d }, (_, j) => {
const mean = (sums[j * 3] ?? 0) / M;
const meanAbsolute = (sums[j * 3 + 1] ?? 0) / M;
const meanSquare = (sums[j * 3 + 2] ?? 0) / M;
return {
mean,
meanAbsolute,
meanSquare,
rms: Math.sqrt(meanSquare),
};
});
const meanSquareNorm = axes.reduce((s, a) => s + a.meanSquare, 0);
if (![...sums, meanSquareNorm].every(Number.isFinite))
return failure("The moment reduction exceeded the numerical range.");
const rmsNorm = Math.sqrt(meanSquareNorm);
let insideCount: number | undefined;
let outsideCount: number | undefined;
if (viewport) {
let inc = 0;
let outc = 0;
for (let i = 0; i < M; i++) {
let isInside = true;
for (let j = 0; j < d; j++) {
const v = displacements[i * d + j] ?? 0;
const minVal = viewport.min[j] ?? -Infinity;
const maxVal = viewport.max[j] ?? Infinity;
if (v < minVal || v > maxVal) {
isInside = false;
break;
}
}
if (isInside) inc++;
else outc++;
}
insideCount = inc;
outsideCount = outc;
}
const apparentSpeed =
dt !== undefined && Number.isFinite(dt) && dt > 0
? (d === 1 ? (axes[0]?.rms ?? 0) : rmsNorm) / dt
: undefined;
return {
kind: "accepted",
data: {
M,
axes,
meanNorm: (sums[d * 3] ?? 0) / M,
meanSquareNorm,
rmsNorm,
...(apparentSpeed !== undefined ? { apparentSpeed } : {}),
...(insideCount !== undefined && outsideCount !== undefined ? { insideCount, outsideCount } : {}),
},
};
}Audited TypeScript reference evaluator: the owner on this device, or the host fallback for a FrankenSim capability.
displacementHistogram · src/physics/reference/diffusion/tracers.ts · revision workspace · sha256:746f24cee7b8573b8a986cd8e072b4786549eba47dffca106dbd38582d670c7b
This function computes the listed outputs when it runs.
In words
Count how many recorded displacements fall in each interval of the histogram.
Mathematics
Implementation
export function displacementHistogram(
values: Float64Array,
edges: Float64Array,
): Computation<{ counts: Float64Array; underflow: number; overflow: number; total: number }> {
if (
values.length === 0 ||
values.length > 10000 ||
edges.length < 2 ||
edges.length > 1001 ||
!values.every(Number.isFinite) ||
!edges.every((v, i) => {
if (!Number.isFinite(v)) return false;
if (i === 0) return true;
const prev = edges[i - 1];
return prev !== undefined && v > prev;
})
)
return invalid(
["values", "edges"],
"Use finite samples and strictly increasing histogram edges.",
);
const counts = new Float64Array(edges.length - 1);
let underflow = 0,
overflow = 0;
const firstEdge = edges[0];
const lastEdge = edges[edges.length - 1];
if (firstEdge === undefined || lastEdge === undefined)
return invalid(["edges"], "Histogram edges array must contain at least two finite bounds.");
for (const value of values) {
if (value < firstEdge) {
underflow++;
continue;
}
if (value > lastEdge) {
overflow++;
continue;
}
let lo = 0,
hi = edges.length - 1;
while (hi - lo > 1) {
const mid = (lo + hi) >>> 1;
const edgeMid = edges[mid];
if (edgeMid !== undefined && value < edgeMid) hi = mid;
else lo = mid;
}
const bin = Math.min(lo, counts.length - 1);
const prevCount = counts[bin];
if (prevCount !== undefined) {
counts[bin] = prevCount + 1;
}
}
return { kind: "accepted", data: { counts, underflow, overflow, total: values.length } };
}Every histogram count, including tails
| Interval | Count |
|---|---|
| Below the plotted range | 0 |
| −4.6338 to −4.4021 | 0 |
| −4.4021 to −4.1704 | 0 |
| −4.1704 to −3.9387 | 0 |
| −3.9387 to −3.707 | 0 |
| −3.707 to −3.4753 | 0 |
| −3.4753 to −3.2437 | 0 |
| −3.2437 to −3.012 | 0 |
| −3.012 to −2.7803 | 1 |
| −2.7803 to −2.5486 | 1 |
| −2.5486 to −2.3169 | 0 |
| −2.3169 to −2.0852 | 7 |
| −2.0852 to −1.8535 | 7 |
| −1.8535 to −1.6218 | 6 |
| −1.6218 to −1.3901 | 16 |
| −1.3901 to −1.1584 | 12 |
| −1.1584 to −0.92676 | 15 |
| −0.92676 to −0.69507 | 28 |
| −0.69507 to −0.46338 | 24 |
| −0.46338 to −0.23169 | 39 |
| −0.23169 to 0 | 39 |
| 0 to 0.23169 | 43 |
| 0.23169 to 0.46338 | 37 |
| 0.46338 to 0.69507 | 26 |
| 0.69507 to 0.92676 | 32 |
| 0.92676 to 1.1584 | 23 |
| 1.1584 to 1.3901 | 17 |
| 1.3901 to 1.6218 | 8 |
| 1.6218 to 1.8535 | 6 |
| 1.8535 to 2.0852 | 6 |
| 2.0852 to 2.3169 | 3 |
| 2.3169 to 2.5486 | 1 |
| 2.5486 to 2.7803 | 1 |
| 2.7803 to 3.012 | 1 |
| 3.012 to 3.2437 | 1 |
| 3.2437 to 3.4753 | 0 |
| 3.4753 to 3.707 | 0 |
| 3.707 to 3.9387 | 0 |
| 3.9387 to 4.1704 | 0 |
| 4.1704 to 4.4021 | 0 |
| 4.4021 to 4.6338 | 0 |
| Above the plotted range | 0 |
| Total, including both tails | 400 |
The explanation
Full explanation
Each tracer takes its own random path. The average position stays near the start while the typical distance keeps growing as the square root of the time; at the default settings it is about 0.93 μm along one axis after 1 s.
Show every step of the investigation
Pick an observation time and compare the sample mean, mean square and root mean square with the model; four times as long gives twice the typical distance. Changing when you observe re-reads the same paths and draws no new ones.
An explanatory model, not an observation of nature. This embed starts from the laboratory’s worked defaults, not a saved run. Presentation options change the surrounding guide, never the numerical inputs.