Part III · Symmetry and Structure · Chapter 12
Almost-Solvable Worlds
Nature never hands us an exactly solvable problem — she hands us an exactly solvable problem plus a little something. This chapter is the art of the little something, and it ends by computing the frequency of the most famous radio line in the universe to four significant figures.
Sources: Cohen-Tannoudji II, Chs. XI–XIII · Sakurai Ch. 5 · Feynman III, Ch. 12
What this chapter covers
- 12.1The small print. look closely at Hα and it is not one line — and Chapter 10's own worst telescope-test residual turns out to have a name: fine structure.
- 12.2The art of the small correction. first order: the average of the nuisance. Second order: borrowed wavefunction, level repulsion, and a ground state that only ever moves down.
- 12.3When levels collide. degeneracy makes the naive formula divide by zero; the cure — let the perturbation choose the basis — is Chapter 11's total-j construction wearing work clothes.
- 12.4Hydrogen's small print, computed. spin-orbit coupling in the j-basis gives the 2p fine-structure interval, measured at 10.969 GHz; the Fermi contact term prices the 21 cm line, measured at 1420.406 MHz — Chapter 11's debt, paid.
- 12.5The safety net. the variational theorem — any guess bounds the truth from above — and helium cracked to within the 2% its referee enforces, with a single knob: each electron hides 5/16 of the nucleus.
- 12.6Kicking the atom. time-dependent perturbations and the golden rule: transition rates from matrix elements, with Chapter 5's Rabi formula as the exact case that keeps us honest.
- 12.7The lab. a perturbation engine refereed by exact diagonalization — including the run where the series' own fourth-order term bit our referee — the two-electron repulsion integral done by quadrature rather than quoted, and the fine-structure and 21 cm scoreboards.
12.1The small print in the sunlight
C · ConceptsIn 1887, Michelson — the man whose interferometers ended the luminiferous aether — pointed one at the red Balmer line of hydrogen and found that it is not a line. It is a doublet: two lines about 0.016 nm apart. Set that against the pattern Balmer had fit — Hα to Hβ is 170 nm — and the doublet is ten thousand times finer than the structure the formula was built to explain. The exact solution of Chapter 10, the one that matched the telescope to five figures, says nothing about this. And here is the delicious part: remember that our own telescope test carried a worst-case miss of a hundredth of a nanometer? That residual was not numerical noise. It was physics knocking — the fine structure, sitting exactly at the scale where our Bohr-formula precision ran out.
This is how real physics almost always presents itself: an exactly solvable skeleton — box, oscillator, hydrogen — wearing corrections like layers of increasingly fine clothing. Relativity tweaks the electron's kinetic energy. The electron's spin feels the atom's own internal magnetism. The proton's tiny magnet whispers to the electron's. Each layer is small, and that smallness is not an obstacle — it is a gift, because small things can be computed order by order. The machinery for doing so, perturbation theory, is the single most-used tool in all of physics; most working physicists spend most of their lives inside it. Time to build it.
12.2The art of the small correction
F · FormalismThe setup: a Hamiltonian whose first piece we have solved completely — — and a dial λ we imagine turning up from zero. Expand everything in powers of λ,
Before the algebra, hold the whole story as a picture. Figure 12.1 is what turning the dial λ up from zero actually does to a spectrum: every level of the solved slides a little (a shift), and any level that packed several states at one energy fans them out (a split). The concrete case drawn here — hydrogen's degenerate 2p level splitting into and — is the fine structure of §12.4, and it is exactly Michelson's doublet from §12.1. Everything below is just how to compute the sizes of those shifts and splits.
feed the expansion into , and sort by powers of λ like sorting coins. At order λ, project onto and the unknown drops out entirely (exercise 1 — two lines), leaving the most useful formula in quantum mechanics:
averaged over the unperturbed state. No new problem to solve; just an integral over a wavefunction you already own. Project instead onto the other states and you get the first-order wavefunction — the state leans toward its neighbors, each admixture weighted by coupling over distance — and feeding that lean back in gives the second-order energy:
Read (12.3) the way you would read a sociology of energy levels. Every other state pushes on level n, with strength (coupling)² over (gap): levels repel. A neighbor above pushes you down; a neighbor below pushes you up; the ground state, with everyone above it, is pushed only down — second order never raises a ground state, a theorem you get for free from the sign of the denominator. And the formula announces its own limits: it is a good approximation exactly when couplings are small compared to gaps, . Which raises an awkward question — what if two levels share the same energy, and the gap is zero?
12.3When levels collide: the degenerate case
F · FormalismC · ConceptsThen (12.3) divides by zero, and the failure is trying to tell you something true: when several states share an energy, the question “which state does the correction apply to?” is ill-posed. Any blend of degenerate states is as good an eigenstate as any other — until the perturbation arrives and prefers some blends to others. The cure is to ask the perturbation first: diagonalize within the degenerate subspace. Its eigenvectors are the blends that survive contact with the nuisance; its eigenvalues are their first-order splittings; and with the right basis chosen, the divide-by-zero terms simply never arise.
You have already done this without the name. Chapter 11's total-j states are exactly the blends that diagonalize the spin-orbit coupling inside a degenerate hydrogen level — the CG machinery was degenerate perturbation theory's basis-picker, built one chapter early. Watch both regimes live:
At small λ the red dotted parabola hugs the exact curve — that is perturbation theory earning its keep. Push λ up and watch two things: the exact curves refuse to cross (they bend away from each other — level repulsion, which is second-order PT read as geometry), and the parabola peels off wherever the coupling stops being small compared to the local gap. Now tick the degeneracy box: the naive second-order formula divides by the gap between levels 1 and 2 — which is now zero — and dies. The gold lines that replace it come from diagonalizing the 2×2 block first: the perturbation itself picks the right basis, then splits it cleanly at first order. That is the entire degenerate recipe, and Chapter 11's total-j basis is exactly this move performed on the spin-orbit coupling.
12.4Hydrogen's small print, computed
F · FormalismP · PracticeNow collect winnings. Ride along with the electron: from its seat, the proton circles it, and a circulating charge is a current loop — the electron sits in a magnetic field of the atom's own making, and its spin magnet pays an energy (the spin-orbit coupling, ξ ∝ α²/r³ in atomic units). Degenerate PT says: diagonalize in the 2p level — and Chapter 11 already did, handing us the j-basis with eigenvalues from the operator identity :
The lab shoots the 2p wavefunction (Chapter 10's Numerov, unchanged), integrates numerically, and lands the interval within the 0.2% its referee enforces of the measured 10.969 GHz — the panel below prints the number the run actually produced. What is left over has a name: the electron's anomalous g-factor plus QED, physics we gladly leave outstanding. Translated to wavelength, this splitting smears Hα by about 0.016 nm: Michelson's doublet, and our Chapter 10 residual, both accounted for.
One piece of bookkeeping before the winnings are banked, because it is where level diagrams usually lie. is traceless — its shifts, weighted by degeneracy, cancel — so spin-orbit coupling alone would leave the doublet straddling the Bohr level, one member up and one down. It does not, because spin-orbit is not travelling alone. The electron's relativistic kinetic correction is the same order in α² and depends on n and l but not on j, so it slides the whole doublet bodily downward. Add the two and both members come out below , at and . The 1s level, with no orbital angular momentum, gets no spin-orbit term at all — but it does get the relativistic one plus a contact (Darwin) term, and their sum is : the level that cannot split moves four times as far as the whole splitting we just computed. The interval is what a spectrometer sees, which is why the lab computes that and the figures draw the rest to scale.
Then the deeper whisper. The proton is also a magnet, 658 times feebler; its interaction with the electron's spin at the nucleus (the Fermi contact term, ∝ ) splits Chapter 11's singlet from its triplet. Only s-states feel it — only they touch the origin — and the splitting is the 21 cm quantum:
Read the energy scales like a set of nested magnifying glasses, and keep the two different questions apart. The scale of fine structure is α² ≈ 1/19,000 of a Bohr energy — that is what “a v²/c² correction” buys you. The particular interval drawn here is smaller still: the 2p doublet works out to α²/12 of the n = 1 → 2 gap, about 1/225,000 of it, because the n-dependence and the j-dependence each take their cut. Down one more rung, the proton is the feebler magnet by roughly its mass ratio, mₑ/m_p ≈ 1/1,836 — though its own g-factor and the fact that only s-states touch the nucleus claw most of that back, which is why the 21 cm quantum comes out at about a seventh of the 2p interval rather than a two-thousandth of it. Each rung of smallness has its own physics, and perturbation theory is the ladder that climbs down to them one order at a time.
The lab prices it from the shot 1s wavefunction and five physical constants, and its referee holds the answer to 0.01% of the 1420.406 MHz that radio astronomy is built on — four significant figures from a wavefunction nobody solved on paper. Perturbation theory, first order, one contact integral — and the map of the galaxy's spiral arms rests on it.
12.5The safety net: the variational method
F · FormalismC · ConceptsPerturbation theory needs a solvable skeleton nearby. What if there is none — two electrons, say, shoving each other around a helium nucleus with full force? There is a second tool, and its guarantee is almost insolent. Take any normalized guess whatsoever and expand it over the true (unknown!) eigenstates:
— a weighted average of energies can never undercut the smallest one. Every guess bounds the truth from above. So guessing becomes a competitive sport: build a trial state with knobs, turn the knobs to minimize , and the lowest value you reach is a certified ceiling on the ground state. For helium, the physics suggests the knob: each electron partly screens the nucleus from the other, so try two hydrogen-like 1s states with an effective charge:
The knob has a physical soul: each electron partly hides the nucleus from the other, so the charge either one feels should be a bit less than 2. The mathematics agrees and names the price of hiding: 5/16 of a proton. Slide to the bottom of the valley — -2.848 Hartree, 1.9% above the measured -2.903724 — and notice what you can never do: dip below the gray line. One knob, two percent; let the two electrons see slightly different charges and a second knob takes you to about one percent; with 1,078 knobs (Pekeris, 1958) helium's energy was pinned this way to nine figures. The bound never breaks; the art is choosing knobs.
This slider evaluates the closed form E(Z) = Z² − 2·2·Z + (5/8)Z so it can redraw as you drag. The lab does not: it computes all three expectation values — including the six-dimensional ⟨1/r₁₂⟩ whose answer is that (5/8)Z — by numerical quadrature, and uses the closed forms only as referee targets.
Now be precise about what is cheap here and what is not, because the textbook version of this calculation quietly hides its only hard step. and the nuclear attraction are one-dimensional radial integrals over a function we already know. The electron-electron repulsion is not: it is a six-dimensional integral over both electrons at once, and is its answer — a result every text quotes and almost none derives on the page. The trick that makes it tractable is that both one-electron densities are spherical, so of the whole multipole expansion of only the monopole survives the angular integrals and collapses to , leaving a nested pair of radial integrals. The lab does exactly that, numerically, and refereeing the result against is the check that the collapse was done right. Minimizing the closed form instead would have refereed nothing but the minimizer's arithmetic.
And note which referee is doing the real work. That the minimum lands on is a statement about the numerics. That the resulting energy sits above the measured −2.9037 Hartree is a statement about the physics, and it is the one claim in this section that nothing can make true by construction: get any of the three integrals wrong in the direction that lowers the energy and the bound simply breaks. We deliberately broke the repulsion kernel once to check, and it did.
That insolent guarantee — every guess a certified ceiling, better knobs a better ceiling — is the engine room of computational chemistry. Let the knobs be the shapes of molecular orbitals and minimizing is the Hartree–Fock method; let the knob be the electron density itself and it becomes density-functional theory, the workhorse that prices the energy of essentially every molecule and material simulated today. The same inequality now runs on quantum hardware, where a variational quantum eigensolver turns the knobs on a real qubit register. One theorem, and an entire industry of approximation stands on it — the reader who wants to feel it should add a second knob to the lab's helium (let the two electrons see slightly different charges) and watch two percent become one.
12.6Kicking the atom: the golden rule
F · FormalismOne tool remains, for nuisances that oscillate — a light wave washing over an atom. First-order time-dependent perturbation theory asks: starting in , what amplitude leaks into under ? Integrating the Schrödinger equation once (the same move as 12.2, with time playing λ's role) gives an amplitude concentrated where the drive matches the gap — and you already know this answer exactly: it is the small-time, weak-drive limit of Chapter 5's Rabi formula, on resonance. The new physics appears when the final state is not one level but a continuum (an ionized electron, an emitted photon's many modes): summing the sharpening resonance over final states turns growth into steady growth — a constant rate:
Matrix element squared, times how many places there are to go. Every decay rate, cross-section, and transition intensity in atomic physics is this formula wearing different matrix elements — and Chapter 11's selection rules are precisely the statement of which of those matrix elements are zero. The metastable 2s state, the ten-million-year 21 cm lifetime, the brightness ratios within the Balmer lines: all golden-rule arithmetic. We will meet Γ again in Part IV, where the “continuum” is the quantized light field itself and spontaneous emission finally gets a first-principles price.
12.7The lab: the engine and the exact answer
P · PracticeThe lab Rust-QP/ch12-perturb runs four experiments. The first is the referee's showcase: perturbation theory for the anharmonic oscillator , with the PT coefficients computed from ladder matrix elements and the exact answer from an 80-state diagonalization — including a war story where the series' own fourth-order term ambushed the referee:
1// perturbation theory straight from the matrix elements2 let coeff1 = x4[(0, 0)];3 let coeff2: f64 = (1..N).map(|m| -x4[(m, 0)] * x4[(m, 0)] / m as f64).sum();45 let exact_e0 = |lam: f64| -> f64 {6// …7 let eig = SymmetricEigen::new(h);8 eig.eigenvalues.iter().cloned().fold(f64::INFINITY, f64::min)9 };10// …11 // Referee: the residual E_exact - PT2 must be ~ c3 lambda^3 with the12 // known c3 = 333/16 = 20.8125. The naive estimate resid/lambda^3 is13 // contaminated at first order in lambda by the FOURTH-order term14 // (c4 = -30885/128 ~ -241, so the naive number is short by roughly15 // 241 * lambda; our first run tripped on exactly this). Richardson16 // extrapolation in lambda kills that linear contamination. The run17 // prints both, and the contamination is refereed as a FLOOR so the18 // war story cannot quietly stop being true.19 let c3_at = |lam: f64| -> f64 {20 let resid = exact_e0(lam) - (0.5 + coeff1 * lam + coeff2 * lam * lam);21 resid / lam.powi(3)22 };23 let c3_naive = c3_at(0.01);24 let c3_est = 2.0 * c3_at(0.005) - c3_at(0.01);25 let c3_exact = 333.0 / 16.0;
c3_est is Richardson extrapolation: accelerating a numerical estimate by combining results computed at several step sizes (here two values of λ) so that the leading error term cancels exactly, leaving a far cleaner number. It is the standard trick for squeezing a contaminated estimate — and here it is the thing that lets our referee separate the genuine third-order coefficient from the fourth-order term leaking into it. Note that c3_naive — the estimate before the fix — is kept and refereed too, as a floor: the run asserts that the naive number really is contaminated by more than 5%. A war story you stop testing is just an anecdote, and the panel below prints how badly the naive route actually misses.
The hydrogen experiments then reuse Chapter 10's Numerov solver verbatim — same seeds, same brackets — and feed shot wavefunctions into this chapter's formulas. Nothing analytic is assumed about the states; the 21 cm number rests on an extrapolated and five constants of nature:
1let (_, u_raw, r_max) = solve_state(1, 0);2 let u = normalized(&u_raw, r_max);3 // R(0) by linear extrapolation of u/r from the first few grid points4 let g1 = u[1] / H_STEP;5 let g2 = u[2] / (2.0 * H_STEP);6 let r0 = 2.0 * g1 - g2; // linear in r: R(0) = 2 g(h) - g(2h)7 let psi0_sq = r0 * r0 / (4.0 * std::f64::consts::PI);8 let factor = psi0_sq * std::f64::consts::PI; // 1.0 for the exact 1s910 // Fermi contact: nu = (4/3) g_e g_p (m_e/m_p) alpha^2 cR_inf11 // * (1 + m_e/m_p)^{-3} * [numeric |psi(0)|^2 pi a^3]12 let nu_hz = (4.0 / 3.0)13 * G_E14 * G_P15 * ME_OVER_MP16 * ALPHA17 * ALPHA18 * C_RYD_HZ19 * (1.0 + ME_OVER_MP).powi(-3)20 * factor;21 let measured = 1420.405_751_768;22 let nu_mhz = nu_hz / 1e6;23// …24 under("π|ψ_1s(0)|²a³ vs 1, extrapolated from the shot u", psi0_err, 5e-5),25 under(26 format!(27 "21 cm frequency vs measured {:.4} MHz (rel)",28 hf.nu_measured_mhz29 ),30 hf_rel,31 1e-4,32 ),
The fourth experiment is the helium bound of §12.5, and it is here that the lab does the work a textbook delegates to a footnote. All three expectation values are quadratures on the trial orbital; the and closed forms appear only inside the referees, which is the one honest place for them:
1fn he_integrals(z: f64) -> HeIntegrals {2 let n = (HE_R_MAX / HE_H) as usize;3// …4 // composite trapezoid over the whole grid5 let trap = |f: &dyn Fn(usize) -> f64| -> f64 {6 let mut s = 0.5 * (f(0) + f(n));7 for i in 1..n {8 s += f(i);9 }10 s * HE_H11 };12 let norm = trap(&|i| u[i] * u[i]);13 // <T> = (1/2) integral u'^2 dr (l = 0, u(0) = 0, so no surface term)14 let t = 0.5 * trap(&|i| du[i] * du[i]) / norm;15 // <1/r> = integral u^2 / r dr (u^2/r ~ r, finite at the origin)16 let v_ne = trap(&|i| if i == 0 { 0.0 } else { u[i] * u[i] / (i as f64 * HE_H) }) / norm;17// …18 // <1/r_12>. Both one-electron densities are spherical, so of the whole19 // multipole expansion of 1/r_12 only the l = 0 term survives and the20 // angular integrals collapse to 1/max(r1,r2):21 // <1/r12> = int P(r1) [ (1/r1) int_0^{r1} P dr2 + int_{r1}^inf P/r2 dr2 ] dr122 // with P = u^2 / norm. Cumulative trapezoids make the double integral O(n).23 let p: Vec<f64> = (0..=n).map(|i| u[i] * u[i] / norm).collect();24 let g: Vec<f64> = (0..=n)25 .map(|i| if i == 0 { 0.0 } else { p[i] / (i as f64 * HE_H) })26 .collect();27 let mut lo = vec![0.0f64; n + 1]; // int_0^{r_i} P dr28 for i in 1..=n {29 lo[i] = lo[i - 1] + 0.5 * HE_H * (p[i - 1] + p[i]);30 }31 let mut hi = vec![0.0f64; n + 1]; // int_{r_i}^{R} P/r dr32 for i in (0..n).rev() {33 hi[i] = hi[i + 1] + 0.5 * HE_H * (g[i] + g[i + 1]);34 }35 let bracket = |i: usize| -> f64 {36 if i == 0 {37 hi[0]38 } else {39 lo[i] / (i as f64 * HE_H) + hi[i]40 }41 };42 let v_ee = trap(&|i| p[i] * bracket(i));43// …44 under(45 "⟨1/r₁₂⟩ by quadrature vs 5Z/8 at Z_min (rel)",46 vee_rel,47 2e-8,48 ),49 under(50 "numeric E(Z) vs the closed form, worst over the Z grid (Ha)",51 he_form_worst,52 3e-6,53 ),54 under(55 "golden-section Z_min of the NUMERIC E(Z) vs 27/16",56 z_err,57 2e-6,58 ),59 over(60 "variational bound E_trial − E_measured (Ha) — FLOOR, must EXCEED tol",61 he_margin,62 0.0,63 ),64 under("helium E_min vs measured −2.9037 Ha (rel)", he_rel, 2e-2),
Most of the lab's referees are ceilings — something must be small. Two are floors, and their names say so: the naive λ³ contamination above, and the variational margin , which must come out positive. That second one is the chapter's load-bearing check. Every other helium referee compares a number against a closed form and so, at worst, catches a coding slip; the bound catches wrong physics, because a trial energy below the true ground state is not a small error, it is an impossibility. Breaking the repulsion kernel on purpose — dropping the branch of the collapsed integral — drives the margin negative by nearly half a Hartree and the run aborts. That is what a referee with teeth looks like.
cargo run --release in Rust-QP/ch12-perturb)Chapter 12 — what you now own
- The engine: ; second order = level repulsion, coupling² over gap, ground states only ever pushed down.
- The collision rule: degeneracy → diagonalize the block first; Chapter 11's j-basis was this recipe in disguise.
- The winnings: the 2p fine-structure interval to within 0.2% of the measured 10.969 GHz (and the leftover has a name), and the 21 cm line to within 0.01% of 1420.406 MHz from a shot wavefunction and five constants of nature.
- The safety net: any guess bounds the truth from above; one screening knob (5/16 of a proton) cracks helium to within 2% — with the six-dimensional repulsion integral done by quadrature, not quoted, and the bound itself as the referee.
- The rate book: the golden rule — matrix element squared times density of destinations — with Rabi as its exact special case and Chapter 11's selection rules deciding which entries vanish.
12.8Exercises
F · FormalismC · ConceptsP · Practice- (F) Derive (12.2) and (12.3) by the coin-sorting sketched in 12.2: expand, collect powers of λ, and project the order-λ equation onto and onto separately. Where exactly does the freedom to choose come from?
- (F) Level repulsion, exactly: for the 2×2 Hamiltonian with energies ±Δ and coupling v, expand the exact eigenvalues for small v and check against (12.3). Then take Δ → 0 and check against the degenerate recipe. One matrix, both regimes.
- (C) In the explorer, follow level 1 and find the λ at which PT2's error first exceeds 10% of the gap to level 2. Compare with the rough criterion λ|H'₁₂| ≈ gap. Then make levels 1–2 degenerate and explain why the two gold lines are straight while every exact curve bends.
- (F) Compute for general and show the fine-structure splitting of any level scales as — a millionth of the Bohr energy. Why does the same α² govern both the relativistic and spin-orbit corrections? (Both are v²/c² effects, and v/c ~ α in hydrogen — check it.)
- (F, hard) The linear Stark effect. Apply a field εz to hydrogen's n = 2 level: four degenerate states {2s, 2p₀, 2p₊₁, 2p₋₁}. Use Chapter 11's selection rules (parity and m) to show the only nonzero matrix element is (compute it with Chapter 10's wavefunctions), diagonalize the block, and find states shifting linearly — ±3aε — with field. Every other atom shifts quadratically. What is special about hydrogen? (The trench coat again: only exact l-degeneracy lets opposite-parity states blend for free.)
- (P) Divergence, discovered: extend the lab's Richardson trick to extract c₄ from the exact E₀(λ) data (expect ≈ −241). Then look up Dyson's 1952 argument — for λ < 0 the potential is unbounded below, so E₀(λ) cannot be analytic at λ = 0 — and reconcile: how can a series with zero radius of convergence predict energies to five digits? (Asymptotic series: stop at the smallest term.)
- (P, hard) The deuterium radio line. Deuterium's nucleus has spin I = 1 and g_d = 0.857438: redo the contact calculation (the jump between F = 3/2 and F = 1/2 is now 3ħ²/2 — Chapter 11's machinery for 1 ⊗ ½) and predict the DI line near 327 MHz. Radio astronomers found it in 2007, fifty years after the search began; your number should land within a fraction of a percent of 327.384 MHz.
The bridge → Chapter 13: Charges in Fields
Where you stand. You can correct what you cannot solve: perturbation series with referees, the degenerate recipe, hydrogen's fine and hyperfine print computed to household-radio precision, a variational safety net, and the golden rule's rate book.
The open question. Every field so far has been the atom's own. What happens when WE apply the field — a uniform magnetic field across an electron gas? The vector potential enters the Hamiltonian, and with it a puzzle: physics must not depend on our gauge bookkeeping, yet the bookkeeping refuses to disappear.
What comes next. Charges in magnetic fields: Landau levels (a free electron's energy collapses into an oscillator ladder), gauge invariance as a principle rather than a nuisance, and the Aharonov–Bohm effect — an electron steered by a field it never touches, settling what is 'real' about the potential.