DiracDirac

Part III · Symmetry and Structure · Chapter 10

The Hydrogen Atom

One proton, one electron, one 1/r potential — the simplest atom there is, and the only one nature ever lets us solve exactly. By the end of this chapter your laptop will predict the color of a nebula to five significant figures.

Sources: Cohen-Tannoudji I, Ch. VII · Feynman III, Ch. 19 · Ballentine, Ch. 10

What this chapter covers

  • 10.1The barcode in the rainbow. Balmer's 1885 curiosity: four sharp lines in hydrogen's glow, fitting one tiny formula — the single most consequential pattern-spot in the history of physics.
  • 10.2Separating the dance. two bodies become one (reduced mass), the angular part is already solved (Chapter 9's Y_lm), and what remains is one radial equation with a centrifugal barrier.
  • 10.3The wave that has to fit. decay at infinity, regularity at the origin — squeeze the wave between the two demands and out falls E_n = −13.6 eV/n², with an 'accidental' degeneracy only the Coulomb potential grants.
  • 10.4Orbitals, at last. radial humps and nodes, the Bohr radius resurrected as a most-probable distance, and the full orbital gallery — s, p, d — that chemistry is drawn with.
  • 10.5The lab. a Numerov shooting solver that rediscovers Bohr's formula without being told it — then computes the Balmer wavelengths with the reduced-mass correction and pins four measured lines to hundredths of a nanometre. Every figure quoted below is read live from the run's own scoreboard.

Pass a current through hydrogen gas and it glows pink. Send that glow through a prism and the pink resolves into something far stranger than a rainbow: four razor-sharp lines — red, blue-green, and two violets — and blackness in between. Every element does this, each with its own barcode, and through the whole nineteenth century nobody had the faintest idea why.

The apparatus that reveals the barcode is simple, and it is worth picturing before we read anything off it. Excite the gas with a current so it glows; send the glow through a narrow slit to make a clean pencil of light; pass that through a prism (or a diffraction grating), which bends each wavelength by a different amount; and catch the result on a detector. A continuous source would smear into a full rainbow — but hydrogen paints only a handful of sharp, separated lines, because it emits only a handful of sharp, separated wavelengths.

H discharge tube(hot gas + electrodes)slitapexbaseprismundeviated beamdetector(the barcode)
Figure 10.1. Emission spectroscopy of hydrogen. Light from the glowing discharge tube passes a slit and a dispersing prism, which sorts it by wavelength; only discrete lines land on the detector. Note which way the prism bends things: every ray is deviated toward the base (drawn at the bottom, apex up), away from the dashed undeviated axis, and the shortest wavelengths are deviated most. So (red, 656 nm) sits nearest the axis, (blue-green) next, and the violets land furthest out — crowding together as they go, exactly as the Balmer series crowds toward its short-wavelength limit.

In 1885 Johann Balmer — a Swiss schoolteacher, sixty years old, fitting numbers as a hobby — noticed that hydrogen's four visible wavelengths all fit one absurdly simple rule: each is proportional to for . Not roughly. To the precision of the measurements. Integers — counting numbers — hiding in the light of a gas. It took physics forty more years to understand what the integers were counting, and you already know the answer from Chapter 5: spectral lines are beat notes between energy levels, so Balmer had unknowingly measured the level ladder itself. Here is the whole structure his formula was pointing at:

series:
32: λ = 656.47 nm

Every spectral line is a difference of two rungs — Chapter 5's beat notes, photographed. The Balmer series (ending on n=2) is the one lucky enough to land in the visible: Hα at 656 nm is the red glow of every emission nebula in the sky. Notice how each series piles up against a short-wavelength edge — the rungs crowd toward E = 0 as 1/n², so the lines converge to the ionization limit, a fingerprint no classical orbit model ever explained.

The task of this chapter is to earn that ladder — to start from one proton, one electron, and the Coulomb attraction, and have forced on us the way the box's and the oscillator's were: by a wave that has to fit.

Two bodies, not one: the electron does not orbit a nailed-down proton; both swing about their common center of mass, like a waltzing couple. Exactly as in classical mechanics, the two-body problem splits into free center-of-mass motion plus a one-body problem for the relative coordinate, with the reduced mass

(10.1)

A twentieth of a percent — file it away; it is about to buy us two decimal places of glory. From here on we use atomic units (: lengths in Bohr radii, energies in Hartrees) and the problem is a single particle in the central potential . “Central” is the magic word: the Hamiltonian commutes with every rotation, so by Chapter 9 we may hunt for states of definite and , and the angular dependence is already solved:

(10.2)

where the substitution is the little gift that keeps the chapter honest: it turns the messy three-dimensional radial operator into a plain one-dimensional Schrödinger equation — Chapter 6 on the half-line:

(10.3)
V(Hartree)r (Bohr radii)04812162024−0.25−0.50E = 0−1/r (l = 0)V_eff (l = 1)centrifugal barrierl(l+1)/2r²E₁ (l = 0 only)E₂E₃ …each level runs only between its turning points; the levels crowd toward E = 0
Figure 10.2. The radial effective potential , drawn to scale on both axes (Bohr radii across, Hartree up). The Coulomb well (dashed) pulls the electron in; for the centrifugal barrier pushes it out near the origin, carving a well with a floor — and for that floor sits at Hartree, above . No well is deep enough to hold an state, which is why the lowest p state is 2p and not 1p; is therefore drawn against the barrier-free curve. Each level runs only between its own classical turning points, where it meets its curve. The levels stack toward , crowding together as grows — the same crowding that bites the solver in §10.5.

Look at the effective potential. The Coulomb well pulls in; the centrifugal barrier — the quantum cost of carrying angular momentum — pushes out, and wins at small r. An electron with is walled away from the nucleus: its wavefunction must vanish there like , so it is only the combination that the barrier forces to go as — which is why the seed in §10.5's solver carries that extra power. An s-electron, with no barrier, presses right up against the proton (its is flatly finite at ). Chemistry will spend that difference for the rest of the book.

Now the squeeze, the same one that quantized the box and the well. Far away, (10.3) says ; for a bound state () the solutions are with , and physics keeps only the decay. Near the origin the centrifugal term rules and forces . Write the solution as decay × regularity × a polynomial correction, feed it back into (10.3), and the recursion for the polynomial has a fatal flaw: unless it terminates, its tail rebuilds and the wave explodes (exercise 4 walks every step). Termination happens only when

(10.4)

There is Balmer's integer, caught red-handed: it counts the allowed decay rates of a wave pinned between “vanish at the nucleus” and “vanish at infinity.” The natural length that falls out, — the Bohr radius — sets the size of every atom in the universe, and the ground state is the simplest wavefunction in this book:

(10.5)

No orbit, no plane, no ellipse — a fuzzy exponential ball. And one oddity to savor before the lab confirms it numerically: equation (10.4) contains but not . The 2s state (no angular momentum, one radial node) and the 2p state (one unit of angular momentum, no radial node) are completely different waves with identical energy. For a general central potential that never happens — each gets its own ladder. The Coulomb potential alone hides an extra conserved quantity (the Runge–Lenz vector; exercise 5 comes at the same symmetry from the Hellmann–Feynman side) that forces the ladders into registry, giving level its full degeneracy. Physicists call it “accidental.” It is nothing of the sort — it is a symmetry wearing a trench coat, and the periodic table is what happens when multi-electron screening tears the coat off.

10.4Orbitals, at last

C · ConceptsF · Formalism

Time to look at the things. First the radial story alone — where, at what distance, the electron lives. The honest density is not but (a thin shell at radius r has area — more room farther out), and that geometric factor is what makes even the ground state peak away from the nucleus:

1 radial node (n−l−1) · E = −13.606/2² eV

Set n=1: one clean hump peaking at exactly r = 1 Bohr radius — the “orbit” of 1913, resurrected as the most probable radius of a standing wave. Now raise n at l=0 and count the wiggles: n−1 nodes, just like the box, just like the oscillator — third time's the pattern. And compare (n=2, l=0) against (n=2, l=1): different shapes, different node counts, same energy to eight decimal places in the lab below. That equality is the Coulomb potential's private privilege — bend the potential away from exactly 1/r and it shatters, which is precisely what happens in every multi-electron atom (and why the periodic table fills 4s before 3d).

Now marry the radial factor to Chapter 9's spherical harmonics and meet the complete object — the orbital, chemistry's alphabet:

radial nodes (n−l−1)
0
polar nodes (l−|m|)
1
state
|2,1,0⟩ — the 2p orbital · E = −13.606/2² eV

These are the shapes chemistry is built from. |2,1,0⟩ is the p dumbbell along z; |2,1,±1⟩ is its doughnut-shaped partner (the same energy, circulating instead of standing); |3,2,0⟩ is the d orbital with its waistband. Count the dark gaps: rings at fixed radius are radial nodes (n−l−1), dark cones at fixed angle are polar nodes (l−|m|) — the total node count n−1 is what the energy pays for, however the state chooses to spend it. Rotate any of these about the vertical axis in your head: that is the actual three-dimensional cloud, and its φ-independence is Chapter 9's stationary-phase lesson standing before you.

One bookkeeping note with large consequences: at each n there are of these states, and (once Part IV gives the electron its spin and its exclusion rule) each holds two electrons, so shell n has capacity . Be careful with the next step, because it is where the folklore goes wrong: those are shell capacities, not the lengths of the periodic table's rows. The rows run 2, 8, 8, 18, 18, 32, 32 — each of the last three repeated — because real atoms do not fill a shell before starting the next. Orbitals fill in order of increasing (and, within a tie, increasing ), which puts 4s below 3d and so closes a row at argon after 3p rather than after 3d. That reordering is exactly what happens when screening tears the trench coat off, and exercise 7 has you break the degeneracy yourself and watch the ordering appear. The shelving is built here; the filling rule is not ours yet.

The lab Rust-QP/ch10-hydrogen never lets equation (10.4) answer a question. It treats (10.3) as Chapter 6 treated its wells: a boundary-value problem, to be shot. One honest caveat, since the lab admits it in a comment: the search bracket for each level is placed using , because you have to start the hunt somewhere. But the bracket is wide — it runs to the midpoints of the neighbouring levels — and 64 halvings inside it put the answer wherever the differential equation wants it, to about one part in of the bracket width. If the integrator were wrong the root would move and the first referee would say so. Integrate outward from the origin with the Numerov method — a classic scheme for second-order equations of the form that, by leaning on the second derivative it is already computing, reaches accuracy for barely more work than a crude Euler step. A wrong energy explodes at large r, positive on one side of an eigenvalue and negative on the other; bisect 64 times on that sign. The Bohr formula is not an input — it is the verdict:

Rust-QP/ch10-hydrogen/src/main.rs — Numerov, with the seed that bit us
1/// Numerov integration of u'' = f(r) u outward. Returns (u_grid, r_grid).
2fn shoot(l: u32, e: f64, r_max: f64) -> Vec<f64> {
3 let n_steps = (r_max / H) as usize;
4 let f = |r: f64| -> f64 {
5 (l * (l + 1)) as f64 / (r * r) - 2.0 / r - 2.0 * e
6 };
7 let mut u = vec![0.0f64; n_steps + 1];
8 // seed near the origin with TWO terms of the exact series
9 // u ~ r^{l+1} (1 - r/(l+1) + ...): the second term matters — with the
10 // bare power law the eigenvalues came out 3x worse than tolerance
11 let seed = |r: f64| r.powi(l as i32 + 1) * (1.0 - r / (l + 1) as f64);
12 u[1] = seed(H);
13 u[2] = seed(2.0 * H);
14 let h2_12 = H * H / 12.0;
15 for i in 2..n_steps {
16 let r_m = i as f64 * H - H;
17 let r_0 = i as f64 * H;
18 let r_p = i as f64 * H + H;
19 let num = 2.0 * u[i] * (1.0 + 5.0 * h2_12 * f(r_0)) - u[i - 1] * (1.0 - h2_12 * f(r_m));
20 u[i + 1] = num / (1.0 - h2_12 * f(r_p));
21 // renormalize mid-flight if the trial solution explodes, so we
22 // never overflow — only the SIGN at r_max matters for bisection
23 if u[i + 1].abs() > 1e250 {
24 let s = 1e-100;
25 for v in u[..=i + 1].iter_mut() {
26 *v *= s;
27 }
28 }
29 }
30 u
31}

Two war stories this time, both instructive. The origin seed alone left the energies hundreds of times worse than the run now demands; adding the second series term (one line) bought a factor of about 300. And the first bracketing scheme (“±35% around the guess”) worked until n = 5, where hydrogen's crowding levels put two eigenvalues inside one bracket and the bisection lost its sign change — the fix is to bracket by midpoints toward the neighboring levels, which contains exactly one eigenvalue by construction:

Rust-QP/ch10-hydrogen/src/main.rs — the bisection
1/// Bisect on the sign of u(r_max) inside a bracket around the expected
2/// energy window. The window seeds the SEARCH; the ODE decides the answer.
3/// Bracket = midpoints toward the neighboring levels, so it contains
4/// exactly one eigenvalue (the levels crowd together as n grows — a
5/// naive +/-35% window would swallow two at n = 5).
6fn solve_state(n: u32, l: u32) -> Solved {
7 let e_of = |k: u32| -0.5 / (k * k) as f64;
8 let e_below = if n > 1 { e_of(n - 1) } else { 1.5 * e_of(1) };
9 let e_above = e_of(n + 1);
10 let (mut e_lo, mut e_hi) = (
11 0.5 * (e_of(n) + e_below),
12 0.5 * (e_of(n) + e_above),
13 );
14 let r_max = 28.0 * n as f64;
15 let tail_sign = |e: f64| -> f64 {
16 let u = shoot(l, e, r_max);
17 u[u.len() - 1].signum()
18 };
19 let (s_lo, s_hi) = (tail_sign(e_lo), tail_sign(e_hi));
20 assert!(
21 s_lo != s_hi,
22 "no sign change in bracket for n={n}, l={l} — bad window"
23 );
24 for _ in 0..64 {
25 let e_mid = 0.5 * (e_lo + e_hi);
26 if tail_sign(e_mid) == s_lo {
27 e_lo = e_mid;
28 } else {
29 e_hi = e_mid;
30 }
31 }
32 let e = 0.5 * (e_lo + e_hi);
33 let u = shoot(l, e, r_max);
34 Solved { e, u, r_max }
35}

Then the scoreboard. Six referees, each one a comparison between two things that could genuinely disagree: the shot eigenvalues against ; the counted nodes of against n−l−1; the two different differential equations for 2s and 2p landing on one root; the virial theorem, which compares an integral over the numeric wavefunction to the bisected energy; against its closed form; and the telescope test. Every tolerance is the achieved value rounded up by about a quarter, and none of them is decorative — perturb the Coulomb strength by one percent and five of the six fail at once. Note the finiteness pass that runs first: a NaN compares false against every tolerance, so it would sneak past a carelessly written check rather than announce itself.

Rust-QP/ch10-hydrogen/src/main.rs — the referees, and the gate they feed
1// -- the referees ------------------------------------------------------
2 // Meta-referee: FINITE before small. NaN compares false against every
3 // tolerance, so an unnoticed 0/0 would read as a silent pass in a
4 // `!(x > tol)` world rather than the loud failure it deserves.
5 for (label, v) in [
6 ("worst_energy_err", referee.worst_energy_err),
7 // …
8 ] {
9 assert!(v.is_finite(), "{label} is not finite: {v}");
10 }
11 // …
12 let referees = vec![
13 Referee {
14 name: format!("worst |E_shot − (−1/2n²)| over {n_states} states, Hartree"),
15 value: referee.worst_energy_err,
16 tol: 6e-8,
17 pass: referee.worst_energy_err < 6e-8,
18 },
19 // …
20 Referee {
21 name: format!(
22 "telescope test: worst |λ − λ_measured| over {} Balmer lines, nm",
23 lines.len()
24 ),
25 value: referee.worst_lambda_err_nm,
26 tol: 0.012,
27 pass: referee.worst_lambda_err_nm < 0.012,
28 },
29 ];
30 // …
31 let mut all_passed = true;
32 for r in &data.referees {
33 // …
34 all_passed &= r.pass;
35 }
36 assert!(all_passed, "a referee failed");
Loading /data/ch10/hydrogen.json… (run cargo run --release in Rust-QP/ch10-hydrogen)

Sit with what just happened, because it reaches far past hydrogen. A boundary-value problem on a laptop reproduced light measured in a discharge tube to five figures — which means the logic runs backwards too. Point a spectrograph at a star, a nebula, or a quasar, read the pattern of Balmer lines out of its light, and you are reading the atoms that made it: their identity from which lines appear, their velocity from how far the whole barcode is Doppler-shifted, the expansion of the universe from the redshift of hydrogen in the most distant galaxies. Every composition, temperature, and recession speed in the observable cosmos is inferred from equation (10.4) run in reverse. This is the founding instrument of astrophysics.

And look once more at the residual — the last digits where and the real atom quietly part ways. Run the energy referee's bound through and the solver can only be blamed for a small fraction of it; the rest of the gap sits at the scale where the next layer of physics we have not put in yet lives. The electron's spin and its relativistic speed split each level into fine structure; the proton's own magnetism adds the hyperfine splitting that gives the 21 cm line radio astronomers map the galaxy with; even the vacuum itself nudges the levels (the Lamb shift). Each is a thread the next chapters pull. The clean ladder was never the end of the story — it is the baseline precise enough to make the next layer of the atom visible.

Chapter 10 — what you now own

  • The separation: two bodies → reduced mass; central potential → ; and turns the rest into Chapter 6 on a half-line, with a centrifugal barrier.
  • The verdict: from decay-meets-regularity — Balmer's integer counts allowed decay rates, and the Bohr radius sets every atom's size.
  • The trench coat: the n² degeneracy is Coulomb-only — a hidden symmetry, not an accident — and its breaking by screening is the shape of the periodic table.
  • The gallery: peaks at the Bohr radius for 1s; nodes split n−1 ways between radial and angular; s, p, d shapes are R × Y, nothing more.
  • The trophy: a shooting solver that rediscovers Bohr without being told the answer, holds the 2s/2p degeneracy to the precision of its own bisection, and — with the reduced-mass correction — hits four measured Balmer wavelengths to hundredths of a nanometre. The exact figures are in the scoreboard above, read live from the run that produced them.

10.6Exercises

F · FormalismC · ConceptsP · Practice
  1. (F) Do the u = rR substitution honestly: start from the full 3D Laplacian's radial part and show every first-derivative term cancels, leaving (10.3). Where exactly does the boundary condition come from, and why would be physically fatal?
  2. (F) Prove the virial theorem the lab checks: for , show using equation (5.4) on the operator in a stationary state. For Coulomb (k = −1) conclude — so a bound electron speeds up as it binds deeper, paying with double the potential.
  3. (C) In the radial explorer, verify by eye that P(r) for 1s peaks at exactly r = 1 (prove it: maximize ). Then find the 2p peak and show it sits at r = 4 — while ⟨r⟩ = 5. Why is the mean beyond the peak? (Look at the tail.)
  4. (F, hard) The full termination argument: substitute into (10.3), derive the recursion for the series , show that a non-terminating series behaves like at large r (compare the ratio to that exponential's), and conclude κ = 1/n. You have just done, in full, what the Numerov solver does blind.
  5. (F, hard) The trench coat, via Hellmann–Feynman: for a Hamiltonian depending on a parameter, (prove it — two lines with normalization). Apply it twice to hydrogen: differentiate with respect to the nuclear charge Z to get , then treat as the parameter (it enters V_eff continuously!) to extract . Check both against the lab's wavefunctions numerically.
  6. (P) Discover deuterium. Urey found it (1931) as a faint Balmer line displaced from hydrogen's — the nucleus is twice as heavy, so the reduced mass shifts. Change one constant in the lab (deuteron mass ≈ 3670.48 mₑ), recompute Hα, and predict the H–D splitting. (You should land near 0.18 nm — resolvable on a good grating, and worth a Nobel prize if you'd done it first.)
  7. (P, hard) Break the trench coat yourself: add screening to the lab's potential, with b = 1 (a crude sodium: one valence electron outside a screening core). Re-shoot the “3s” and “3p” states and watch the degeneracy shatter — the s state, which penetrates the core, drops far below p. Quantify it as a quantum defect and compare the ordering you find with the actual periodic table's 4s-before-3d anomaly.

The bridgeChapter 11: Combining and Conserving

Where you stand. The one exactly solvable atom is yours: the radial equation and its boundary-value quantization, the n² degeneracy and its hidden symmetry, the orbital gallery, and a solver whose Balmer lines match the telescope to hundredths of a nanometre — with the exact margin printed live by the run itself.

The open question. We quietly ignored something all chapter: the electron carries spin-1/2, and the proton does too. A real hydrogen atom holds SEVERAL angular momenta at once — orbital, electron spin, nuclear spin. How do two angular momenta combine into one?

What comes next. Addition of angular momenta: the tensor-product machinery of Chapter 3 meets the rotation algebra of Chapter 9 — Clebsch–Gordan coefficients, singlets and triplets, why 'total angular momentum' takes values |j₁−j₂| through j₁+j₂, and the conservation laws that organize every spectrum.

Continue to Chapter 11