Keep every explanation and worked example on the page. Nothing moves or plays by itself, and the larger instruments load only when you ask.
Light quanta · Sections 1–2
Give every resonator its share,and the total never stops growing.
If every resonator gets the same mean energy whatever its frequency, how much energy does the radiation hold, and does the total ever stop growing? §1 gives every linear resonator oscillation the same mean energy, whatever its frequency. Widen the range of resonator frequencies you allow, and see what that classical allocation actually predicts, and why the paper says it rules out any equilibrium between matter and radiation.
Classical mode-energy allocation
Classical mode-energy allocation
Static worked example
Predict before the numbers
Widening the resonator range from 100 THz to 1000 THz changes the energy by how much?
The result appears when you choose, say you have one in mind, or skip.
Worked example: with resonators up to 1 × 10¹⁴ Hz at 1500 K, the classical allocation holds 0.00644 J per cubic metre, and widening the cutoff tenfold multiplies it by 1000.
Mean energy per resonator oscillation
2.070974 × 10−20 J
Energy with resonators up to the cutoff
0.006439187 J/m³
Share of that energy above the probe frequency
0.9990000
Energy after widening the cutoff tenfold
6.439187 J/m³
Ratio: tenfold-widened energy ÷ current energy
1000
With resonators up to 1.000 × 1014 Hz at 1500 K, the classical allocation holds 0.006439 J per cubic meter; each tenfold widening multiplies it by 1000. Every resonator oscillation carries the same mean energy kBT (source notation (R/N)T), which §1 notes is two-thirds of a free molecule's mean kinetic energy.
§2's Avogadro match and §4's later entropy argument (a separate instrument) use two disjoint limits of the same spectrum: the classical region, admitted at the 1% criterion for x ≤ 0.0198678, and the Wien region, admitted at x ≥ 4.60517. Meeting both arguments does not mean one "quantum regime" supplied both numbers.
The historical Avogadro readout, from Einstein's §2 constants
N, from Einstein's printed §2 constants (historical)
6.170486 × 1023 mol⁻¹
N, as printed in §2
6.17 × 1023 mol⁻¹
NA, defined, 2019 SI (modern)
6.02214076 × 1023 mol⁻¹
Hydrogen-atom mass from the printed N (historical)
1.62 × 10−24 g
Hydrogen-atom mass, modern (labeled modern)
1.673533 × 10−24 g
α is a suspected historical typographical correction (10⁻⁵⁷, not the witness's 10⁻⁵⁶); R = 8.31×10⁷ erg mol⁻¹ K⁻¹ and L = 3×10¹⁰ cm s⁻¹ are declared editorial inputs, not printed values, since §2 does not appear to print either. This readout is never mixed with a modern constant in the same number.
Not modeled: The mechanism coupling matter and radiation beyond Planck's stated equilibrium condition; Cavity shape and walls; The approach to equilibrium; Any quantum hypothesis; Measured spectra (a separate instrument shows those).
Show which functions computed these numbers
src/physics/reference/radiation/classical.ts (classicalCutoffEnergyDensity, classicalTotalEnergy, meanResonatorEnergy), src/physics/reference/radiation/avogadro.ts (avogadroFromPlanckConstants), src/physics/reference/radiation/spectra.ts (regimeRelativeErrors), and src/experiments/lq02/session.ts (which gathers these results for the page; this component never recomputes any of them).
If every way a resonator can vibrate gets the same share of energy, the energy of the radiation grows without limit as higher and higher frequencies are allowed. Einstein notes that on this picture matter and light could never settle into a definite share of the energy.
Section 1 puts a gas, free electrons and resonators, electrons bound to fixed points, in a box with mirror walls. Collisions give each resonator's vibration along one line a mean energy Ē = (R/N)T, the same at every frequency; at 1500 K that is 2.07 × 10−20 J. Planck's relation between a resonator and the radiation around it, Ēν = (L3/8πν2)ρν, then fixes the density: ρν = (R/N)(8πν2/L3)T. The energy per unit volume up to a highest frequency νc is (8πkBT/3c3)νc3, which at 1500 K is 0.00644 J/m3 up to 1014 Hz, and 99.9 percent of it lies above 1013 Hz. Allow frequencies ten times higher and the energy grows a thousandfold, to 6.44 J/m3; allow them all and there is no finite total, which the instrument reports as a refusal rather than a number. Einstein concludes that the relation disagrees with experience and that on this picture there can be no definite distribution of energy between the ether and matter. Section 2 then shows that Planck's formula, which fits experience, agrees with this law at long wavelengths, and that matching the two gives N = 6.17 × 1023.
Take a resonator vibrating along one line. In a gas at temperature T each molecule's energy of motion averages (3/2)(R/N)T, which is (1/2)(R/N)T for each direction. A bound electron also has potential energy, and for a spring force the average potential energy equals the average kinetic energy, so the vibration along one line averages (R/N)T in all. With R/N = kB = 1.381 × 10−23 J/K and T = 1500 K that is 2.071 × 10−20 J. Planck showed that a resonator of frequency ν, in radiation whose energy per unit volume and unit frequency is ρν, settles at Ēν = c3ρν/(8πν2). Setting Ēν = kBT gives ρν = 8πν2kBT/c3. The energy up to νc adds this density up: the integral of 8πν2kBT/c3 from 0 to νc is (8πkBT/3c3)νc3. The factor in front is 8π × 2.071 × 10−20/(3 × (2.998 × 108)3) = 6.44 × 10−45 J s3/m3, and multiplied by (1014)3 = 1042 it gives 0.00644 J/m3. Up to 1013 Hz the cube is a thousand times smaller, 6.44 × 10−6 J/m3, so 1 − 1/1000 = 99.9 percent of the energy lies between 1013 and 1014 Hz. Each tenfold widening multiplies the energy by 103, to 6.44 J/m3 at 1015 Hz, and there is no highest frequency at which to stop, so the total is infinite. For N: at low frequency Planck's formula αν3/(eβν/T − 1) becomes (α/β)ν2T, because eβν/T − 1 is then close to βν/T. Matching (R/N)(8π/c3) = α/β gives N = (β/α)(8πR/c3); with Planck's constants that is 6.17 × 1023, and a hydrogen atom weighs 1/N gram, 1.62 × 10−24 g.
Modern qualifications
Einstein wrote Ē for the resonator's mean energy, L for the speed of light and ρν for the density, and he gave the result no name; the name it later carried in textbooks is Ehrenfest's, from 1911. Rayleigh had given a density growing as ν2T for long waves in June 1900, and Jeans corrected its coefficient in July 1905, after this paper was received. Planck had derived the resonator relation in 1900 by treating the radiation as the most disordered process conceivable, which is how Einstein cites it; Einstein uses it without Planck's energy elements. The value N = 6.17 × 1023 is Planck's own. The exponent of α as the edition reads the plate, 10−56, would give a tenth of that N; the constants that give 6.17 × 1023 need 10−57, and the provenance record leaves the printed digit to a second witness.
Show the code
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
meanResonatorEnergy · src/physics/reference/radiation/classical.ts · this site’s source, as built · sha256:8e2de4a307208c7d7d1db091948f7f506dcb965f85b6b13bb6d9eea35664fd47
This function computes the listed outputs when it runs.
In words
The classical equipartition result, returned in joules and in electronvolts, with the ratio to a free molecule's average kinetic energy beside it. At 300 K it is 4.141947 times 10^-21 J, which is 0.025852 eV. The function takes the Boltzmann constant from the declared set rather than a literal, so a historical set gives Einstein's printed R over N instead.
Implementation
/** Mean resonator energy E_bar = k_B * T = (R/N) * T. */exportfunctionmeanResonatorEnergy(T:number,set:ConstantSet,):Readonly<{status:"value";quantityId:"meanResonatorEnergy";unit:"J";value:number;valueEv:number;linearRepresentable:true;ratioToFreeMoleculeKineticEnergy:number;}>{constkB=thermalConstant(set).value;constenergyJoules=kB*T;constenergyEv=energyJoules/JOULES_PER_EV;return{status:"value",quantityId:"meanResonatorEnergy",unit:"J",value:energyJoules,valueEv:energyEv,linearRepresentable:true,ratioToFreeMoleculeKineticEnergy:2/3,// E_bar / (3/2 * k_B * T) = 2/3};}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
classicalCutoffEnergyDensity · src/physics/reference/radiation/classical.ts · this site’s source, as built · sha256:30fafb7552580daad6a33f3b2a92743fa440291109a59225b8d52c85a7502397
This function computes the listed outputs when it runs.
In words
U = (8 pi k_B T / 3 c^3) times the cube of the cutoff frequency, which is the Rayleigh-Jeans density integrated from zero up to that cutoff. At a cutoff of 10^15 Hz and 5800 K it returns 24.898 J/m^3. Doubling the cutoff multiplies it by eight, and that is the whole of the difficulty: there is no frequency at which the classical allocation stops adding energy.
Implementation
/** Classical cutoff energy density U(nu_c) = (8 * pi * k_B * T / (3 * c^3)) * nu_c^3 in J m^-3. */exportfunctionclassicalCutoffEnergyDensity(nuCutoff:CyclicFrequency|number,T:number,set:ConstantSet,):RadiationResult<number>{constquantityId="radiationEnergy";constunit="J/m^3";if(!Number.isFinite(nuCutoff)||nuCutoff===Number.POSITIVE_INFINITY){return{status:"outside-domain",quantityId,unit,condition:"classical-total-diverges",domainKind:"physical",reason:"The classical allocation assigns unbounded total energy; an infinite cutoff diverges.",};}if(nuCutoff<=0){return{status:"outside-domain",quantityId,unit,condition:"nonpositive-cutoff-frequency",domainKind:"physical",reason:`Cutoff frequency must be positive and finite (got ${nuCutoff}).`,};}if(!Number.isFinite(T)||T<=0){return{status:"outside-domain",quantityId,unit,condition:"nonpositive-temperature",domainKind:"physical",reason:`Temperature must be positive and finite (got ${T}).`,};}constc=constantValue(set,"speedOfLight").value;constkB=thermalConstant(set).value;// U(nu_c) = (8 * pi * k_B * T / (3 * c^3)) * nu_c^3constuCutoff=((8*Math.PI*kB*T)/(3*c**3))*nuCutoff**3;// The allocation grows as the cube of the cutoff without bound, so a large enough cutoff or// temperature carries the product past the floating-point range (the cube alone leaves it above// a cutoff of about 5.6 x 10^102 Hz). That is a limit of the arithmetic, not a value: returned as// one, it printed "Infinity J/m³" on lq-02 with a NaN share beside it.if(!Number.isFinite(uCutoff)){return{status:"outside-domain",quantityId,unit,condition:"energy-beyond-number-range",domainKind:"numerical",reason:"At this cutoff the classical energy is larger than this calculation can represent. It grows as the cube of the cutoff without bound.",};}return{status:"value",quantityId,unit,value:uCutoff,linearRepresentable:true,};}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
classicalTotalEnergy · src/physics/reference/radiation/classical.ts · this site’s source, as built · sha256:3ce397f29778d8b35371d97d40d6278b47c6c19bca6bf7ecc7132745953540bb
This function computes the listed outputs when it runs.
In words
Integrating the classical density from zero to infinity gives no finite answer, because the density rises as the square of the frequency and never turns over. So this function computes nothing. It returns an outside-domain result whose reason is that the classical allocation assigns unbounded total energy, and it does that for every temperature.
Implementation
/** Classical total energy integral over [0, infinity] diverges. */exportfunctionclassicalTotalEnergy(_T:number,_set:ConstantSet):RadiationResult<number>{return{status:"outside-domain",quantityId:"radiationEnergy",unit:"J/m^3",condition:"classical-total-diverges",domainKind:"physical",reason:"the classical allocation assigns unbounded total energy",};}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
avogadroFromPlanckConstants · src/physics/reference/radiation/avogadro.ts · this site’s source, as built · sha256:df0de169bcc51df201761940d1cede359d1b87afa7a55ee78c6cc2e5968526c3
This function computes the listed outputs when it runs.
In words
N = (beta / alpha) times 8 pi R / L^3, with alpha and beta the two constants of Wien's law as Planck had fitted them, R the gas constant and L the speed of light. Run on the 1905 CGS inputs it returns 6.170486250063268 times 10^23, against the 6.17 times 10^23 Einstein printed and 6.02214076 times 10^23 in the modern definition: high by 2.5 per cent. It returns both the unrounded value and the printed one, and it derives the hydrogen atom mass and R over N from the PRINTED N, so that the page's numbers and the paper's numbers agree digit for digit.
Implementation
exportfunctionavogadroFromPlanckConstants(set?:ConstantSet):AvogadroReadout{// If no set or modern set is passed, compute with standard historical 1905 CGS inputs or set entriesletalpha=6.1e-57;letbeta=4.866e-11;letR_cgs=8.31e7;letL_cgs=3e10;letalphaStatus="printed-corrected";letalphaReason="Corrected witness exponent from 10^-56 to 10^-57.";letrStatus="editorial-input";letrReason="Einstein did not print R in §2; standard 1905 value R = 8.31e7 erg/(mol K).";letrSensitivity="Linear in R.";letlStatus="editorial-input";letlReason="Speed of light rounded to 3e10 cm/s in 1905 text.";letlSensitivity="Inverse cubic in L.";if(set){if(set.id==="planck-1900-1901-printed"){// Planck's own 1900-1901 printed readoutreturn{status:"value",avogadroConstant:6.175e23,printedAvogadroConstant:6.175e23,hydrogenAtomMassGrams:1/6.175e23,printedHydrogenAtomMassGrams:1.62e-24,unroundedHydrogenAtomMassGrams:1/6.175e23,rOverN:8.31e7/6.175e23,printedROverN:8.31e7/6.175e23,unroundedROverN:8.31e7/6.175e23,markers:{avogadroConstant:{printedStatus:"printed",reason:"Planck 1900-1901 printed value."},},modernComparisons:{modernAvogadro:MODERN_AVOGADRO,modernReciprocalGram:MODERN_RECIPROCAL_GRAM,modernHydrogenAtomMassGrams:MODERN_H1_ATOM_MASS_GRAMS,modernBoltzmannConstant:MODERN_BOLTZMANN,},};}// Check if set has entries for alpha, beta, R, LconstalphaEntry=set.entries.find((e)=>e.quantityId==="wienConstantAlpha");if(alphaEntry){alpha=alphaEntry.value;if(alphaEntry.printedStatus)alphaStatus=alphaEntry.printedStatus;if(alphaEntry.reason)alphaReason=alphaEntry.reason;}constbetaEntry=set.entries.find((e)=>e.quantityId==="wienConstantBeta");if(betaEntry){beta=betaEntry.value;}constrEntry=set.entries.find((e)=>e.quantityId==="molarGasConstant");if(rEntry){// If R is in SI (8.31), convert to CGS erg/(mol K)R_cgs=rEntry.value<100?rEntry.value*1e7:rEntry.value;if(rEntry.printedStatus)rStatus=rEntry.printedStatus;if(rEntry.reason)rReason=rEntry.reason;if(rEntry.sensitivity)rSensitivity=rEntry.sensitivity;}constlEntry=set.entries.find((e)=>e.quantityId==="speedOfLight");if(lEntry){L_cgs=lEntry.value<1e9?lEntry.value*100:lEntry.value;if(lEntry.printedStatus)lStatus=lEntry.printedStatus;if(lEntry.reason)lReason=lEntry.reason;if(lEntry.sensitivity)lSensitivity=lEntry.sensitivity;}}// N = (beta / alpha) * (8 * pi * R / L^3)constN_unrounded=(beta/alpha)*((8*Math.PI*R_cgs)/L_cgs**3);constN_printed=6.17e23;consthMass_from_printed_N=1/N_printed;// 1.62074554e-24 gconsthMass_printed=1.62e-24;consthMass_unrounded=1/N_unrounded;// 1.62061805e-24 gconstrOverN_from_printed_N=R_cgs/N_printed;// 1.34683955e-16 erg/KconstrOverN_unrounded=R_cgs/N_unrounded;// 1.34673347e-16 erg/Kreturn{status:"value",avogadroConstant:N_unrounded,printedAvogadroConstant:N_printed,hydrogenAtomMassGrams:hMass_from_printed_N,printedHydrogenAtomMassGrams:hMass_printed,unroundedHydrogenAtomMassGrams:hMass_unrounded,rOverN:rOverN_from_printed_N,printedROverN:rOverN_from_printed_N,unroundedROverN:rOverN_unrounded,markers:{wienConstantAlpha:{printedStatus:alphaStatus,reason:alphaReason},molarGasConstant:{printedStatus:rStatus,reason:rReason,sensitivity:rSensitivity},speedOfLight:{printedStatus:lStatus,reason:lReason,sensitivity:lSensitivity},},modernComparisons:{modernAvogadro:MODERN_AVOGADRO,modernReciprocalGram:MODERN_RECIPROCAL_GRAM,modernHydrogenAtomMassGrams:MODERN_H1_ATOM_MASS_GRAMS,modernBoltzmannConstant:MODERN_BOLTZMANN,},};}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
regimeRelativeErrors · src/physics/reference/radiation/spectra.ts · this site’s source, as built · sha256:a4b44ec160f4721a8ce8233a6c39adb4e6b2dc061a427db51151d9bddaee5917
This function computes the listed outputs when it runs.
In words
Everything turns on one dimensionless number, x = h nu / (k_B T). Wien's relative error is e to the minus x, so Wien is good where x is large, which is high frequency or low temperature. The classical error is (e^x - 1)/x - 1, which vanishes where x is small. The function returns both errors, the regime they put you in, and the value of x at which each error reaches its tolerance, one per cent by default. Measured at 600 THz and 5800 K: x = 4.96, Wien runs 0.70 per cent below Planck, and the classical law is 27.7 times too large.
Implementation
/**
* Relative error analysis comparing Wien and Rayleigh-Jeans approximations to Planck's exact law.
*/exportfunctionregimeRelativeErrors(nu:CyclicFrequency|number,T:number,set:ConstantSet,options:{epsilonW?:number;epsilonRJ?:number}={},):RegimeReport{const{h,kB}=getBasePhysicsConstants(set);constepsilonW=options.epsilonW??0.01;constepsilonRJ=options.epsilonRJ??0.01;constx=(h*nu)/(kB*T);constwienRelativeError=Math.exp(-x);// The classical (Rayleigh-Jeans) relative error, measured against Planck like Wien's above:// (u_classical - u_Planck) / u_Planck = (e^x - 1)/x - 1. It was computed as 1 - x/(e^x - 1),// which divides by u_classical instead: the two agree to first order at small x, but at// x = 5.76 that read 0.98 while the classical law is 54.8 times Planck's value, and it put the// 1% boundary at x = 0.020067 where the owning bead specifies 0.0198678. Past x = 700, e^x// exceeds binary64 and the error is reported as Infinity, which callers must show in words.letrayleighJeansRelativeError:number;if(x<1e-7){rayleighJeansRelativeError=x/2;}elseif(x>700){rayleighJeansRelativeError=Number.POSITIVE_INFINITY;}else{rayleighJeansRelativeError=Math.expm1(x)/x-1;}constwienBoundaryX=Math.log(1/epsilonW);// Solve (e^x - 1)/x - 1 = epsilonRJ, that is e^x - 1 = (1 + epsilonRJ) x, by Newton's method.// For small epsilonRJ, x ~ 2 * epsilonRJ - (2/3) * epsilonRJ^2.letrjBoundaryX=2*epsilonRJ;for(letiter=0;iter<20;iter++){constfVal=Math.expm1(rjBoundaryX)-(1+epsilonRJ)*rjBoundaryX;constdfVal=Math.exp(rjBoundaryX)-(1+epsilonRJ);conststep=fVal/dfVal;rjBoundaryX-=step;if(Math.abs(step)<1e-12)break;}constwienAdmitted=wienRelativeError<=epsilonW;constrayleighJeansAdmitted=rayleighJeansRelativeError<=epsilonRJ;letregime:"wien"|"rayleigh-jeans"|"intermediate";if(wienAdmitted){regime="wien";}elseif(rayleighJeansAdmitted){regime="rayleigh-jeans";}else{regime="intermediate";}return{x,wienRelativeError,rayleighJeansRelativeError,regime,wienAdmitted,rayleighJeansAdmitted,wienBoundaryX,rayleighJeansBoundaryX:rjBoundaryX,};}
Every resonator oscillation, at every frequency, carries the same mean energy Ē = kBT (source notation (R/N)T), two-thirds of a free molecule's mean kinetic energy, as §1 notes. Because that mean energy never falls off with frequency, the energy held by resonators up to a cutoff grows as the cube of the cutoff, without limit as the cutoff is removed.
Why the paper calls this a difficulty, not just an approximation
§1 draws two conclusions from this, not one: the classical allocation disagrees with the measured spectrum, and, independently, it rules out any equilibrium between matter and the radiation field at all, because the total grows without bound as the resonator range widens. This instrument's "remove the upper limit" action shows that second conclusion directly, as a typed refusal rather than a number that quietly becomes huge.
What §2 does with Planck's constants
§2 does not use Planck's radiation law as a hypothesis about light; it uses the two constants of Planck's fitted formula, in the classical limit, to solve for Avogadro's number. The historical readout below reproduces that calculation from Einstein's printed constants, labeled apart from the modern, defined value.
Planck had already proposed that light consists of quanta.
The “elementary quanta” of § 2 are Planck's determination of atomic magnitudes, such as the number of molecules in a gram-molecule. The light quantum is the paper's own viewpoint, proposed in its introduction.
The light-quantum paper was written to answer the “ultraviolet catastrophe”.
The phrase does not occur in the paper. § 1 shows the classical infinity as one difficulty, and the paper's argument for light quanta rests on something else, the entropy of radiation of low density.