Lattice vibrations · phonon dispersion
Does a wave on a CHAIN of atoms behave like a wave on a continuous string — one fixed speed for every wavelength?

▶ Run the simulationSee the measured result
Units: dimensionless ω_max/√(K/m) at the Brillouin-zone boundary k = π/a (Born & von Kármán 1912; Kittel ch. 4)
How the lab tests it
Set a ring of N equal masses joined by identical springs vibrating in one normal mode at a time (a standing wave of wavenumber k), and measure each mode's frequency ω from the oscillation period of a single mass; sweep k from long wavelength to the shortest the lattice allows.
What it checks
the dispersion relation ω(k) = 2√(K/m)·|sin(ka/2)|: at long wavelength ω ≈ √(K/m)·a·k — sound, one fixed speed, non-dispersive like a string — but the discreteness makes ω bend over and SATURATE at a maximum ω_max = 2√(K/m) at the Brillouin-zone edge k = π/a (neighbouring masses in antiphase). A continuum string has no such ceiling; the atoms do, and short waves are dispersive
Phonon dispersion calculator (zone-boundary ceiling, sound speed, group velocity, and Debye's rival)
A chain of atoms is not a string, and this page is about the one number that proves it. Pluck a continuum and there is no shortest wave and no highest note; pluck a LATTICE and there is a ceiling, because no wave can be shorter than two lattice spacings. Everything below is assembled from the three numbers you type - a spring constant, a mass and a spacing - and they only ever make ONE rate, sqrt(K/m). The dispersion is that rate times 2*|sin(ka/2)|, the ceiling is it times 2, the sound speed is it times a, and the group velocity is it times a*cos(ka/2). Nothing this world is about is stored. THE CEILING IS EXACT HERE, NOT MERELY ACCURATE. The zone boundary is f = k/k_max = 1, which this page folds as 90 DEGREES rather than pi/2 radians, so sin comes back as exactly 1 and cos as exactly 0. That second one is the physics: the group velocity at the boundary is identically zero because the zone-edge mode is a pure standing wave and a standing wave carries no energy. Math.cos(Math.PI/2) is 6.123e-17 instead, since the engine must round pi/2 before the cosine ever sees it, and a quantity that should be identically zero is the worst possible place to accept a residue - the next thing anyone does with it is divide by it. THE TEXTBOOK HAS TWO SPELLINGS OF THIS FORMULA AND THEY ARE NOT ONE DOUBLE. Kittel writes omega^2 = (4K/m)sin^2(ka/2) and plenty of treatments write the algebraically identical omega^2 = (2K/m)(1 - cos ka); the second forms a number near 1 and subtracts a number near 1, so it bleeds digits exactly at long wavelength - which is the half of the zone where Debye's continuum is supposed to be right. Over 200000 random fractions the two return different doubles 63.331% of the time, worst 5.620e-7 relative. At the default f = 0.37 they agree to zero ulps, which is why this page prices both and prints the gap rather than asserting the identity. The same trap runs through the sound direction, where the departure from omega = ck is sin(x)/x - 1: summed as its own series it keeps every figure, and spelled as written it loses eleven of them. THE RIVAL IS THE CONTINUUM, and it is Debye's, published the same year as Born and von Karman's chain. Carry omega = ck to the boundary and the ceiling becomes pi*c/a rather than 2*sqrt(K/m) - too high by exactly pi/2, a pure number with no K, no m and no a in it, which is the 36.3% the simulation above measures using its OWN recovered sound speed. Both halves of 1912 survived: Debye is right about low-temperature heat capacity because only long waves are excited there, and the lattice is right about the spectrum. Three things this page will NOT do. It will not integrate the chain - the simulation above does that from m*u'' = K(u_left - 2u + u_right) and nothing else, and recovers the sine shape, the half-angle and the ceiling from free fits. It will not do a diatomic chain, an optical branch, three dimensions or anharmonicity, which are different formulas for different questions. And it will not correct a single number the finding recovered: it prices closed forms, and the measured values belong to the oracle.
omega(k) = 2*sqrt(K/m)*|sin(ka/2)| · omega_max = 2*sqrt(K/m) at k = pi/a · c = a*sqrt(K/m) · v_g = c*cos(ka/2) · v_p = omega/k = c*sin(x)/x, x = ka/2 · Debye: omega = ck, ceiling pi*c/a = (pi/2)*omega_max