Fermions and Bosons
Two particles that cannot be told apart do not get separate wavefunctions. They share one — and whether it changes sign when you swap them decides whether they crowd together or refuse to touch.
Fermions and Bosons visualization
Left: |ψ(x₁, x₂)|² for the two particles, particle 1 across and particle 2 up, brighter where the pair is more likely to be found. The dashed diagonal is x₁ = x₂ — both particles at the same place. Right: the probability of each separation x₁ − x₂, with the no-exchange product state dashed for comparison. “Drop pairs” draws positions sampled from the density, so you can see the hole as an absence rather than a colour. Nothing on this canvas animates.
Run these, in this order
Distinguishable, orbitals 1 and 2. Particle 1 in the ground state, particle 2 in the first excited state, and no symmetry demanded. The heat map is a plain product: a single bump across, two bumps up. Note the value of P(x₁ = x₂) and the mean square separation — they are the baseline.
Fermions. Same two orbitals. The dashed diagonal is now a dark trench: |ψ|² is exactly zero wherever x₁ = x₂, and P(x₁ = x₂) reads 0.000. Drop a few hundred pairs and the dots keep clear of the diagonal on their own. The mean square separation climbs to 0.168 L² from a baseline of 0.103.
Bosons. Same two orbitals again. The diagonal is now the brightest line on the map, P(x₁ = x₂) is the largest it will get, and the separation collapses to 0.038 L². Then set orbital b equal to orbital a: the boson state is still there — it is the plain product φ₁(x₁)φ₁(x₂) — and the fermion state is gone.
What just happened
Nothing pushed the fermions apart and nothing pulled the bosons together. There is no force in this simulation at all: the box has hard walls and the two particles do not interact. The only thing that changed between the three pictures was a sign.
If two particles are genuinely identical, swapping them cannot change anything you can measure, so |ψ(x₂, x₁)|² must equal |ψ(x₁, x₂)|². That leaves two ways for ψ itself to respond to the swap: stay the same, or flip sign. Nature uses both. Particles whose wavefunction stays the same are bosons; particles whose wavefunction flips are fermions. A wavefunction that flips sign under x₁ ↔ x₂ has no choice about what to do at x₁ = x₂: there, the swap does nothing, so ψ = −ψ, so ψ = 0. That is the trench. Nobody put it there. It is what antisymmetry means, evaluated on the diagonal.
The symmetric case is the mirror image of the same arithmetic. On the diagonal the two products are equal, so adding them instead of subtracting gives √2 times a single product and twice its density — exactly the factor by which P(x₁ = x₂) exceeds the no-exchange reference in the controls. Bosons bunch for the same reason fermions avoid each other: interference between “particle 1 here, particle 2 there” and the swapped alternative, which for identical particles are not two histories but one.
The only formula on this page
Take two box orbitals φ_a and φ_b. Distinguishable particles get the product φ_a(x₁)·φ_b(x₂). Identical particles get one of
ψ±(x₁, x₂) = [ φ_a(x₁) φ_b(x₂) ± φ_b(x₁) φ_a(x₂) ] / √2
with + for bosons and − for fermions. Swap x₁ and x₂ and the two terms trade places, which multiplies the whole thing by ±1: that is the symmetry, and the test file checks it holds bit for bit. Set a = b and the minus sign kills ψ₋ identically — two fermions cannot occupy the same orbital, which is the Pauli exclusion principle before any mention of spin. The energy is E_a + E_b either way; symmetrising costs nothing and changes no energy. What it changes is where the particles are.
The number in the controls quantifies it. For non-interacting particles, ⟨(x₁ − x₂)²⟩ is the distinguishable value ∓ 2|⟨a|x|b⟩|², where ⟨a|x|b⟩ is the position matrix element between the two orbitals. For orbitals 1 and 2 of a box it is −16L/9π², which makes the shift 0.065 L² in each direction — the 0.038 and 0.168 you just watched. Griffiths calls this the exchange force, and warns in the same breath that it is not a force. Move to orbitals 1 and 3 and the effect vanishes: ⟨1|x|3⟩ = 0 by symmetry, so both curves fall on top of the reference even though the trench is still there.
Filling the well
Now put more than two particles in. Bosons all sit in the lowest level. Fermions cannot, so they stack — one per level if their spins are all the same, two per level if spin up and spin down count as different states. The total energy is the sum of the occupied levels, and the ladder is the solver’s, in units of its own E₁.
Two spin-polarised fermions cost E₁ + E₂ = 5E₁ where two bosons cost 2E₁ — the test file pins both. Eight of them cost 1 + 4 + ⋯ + 64 = 204E₁, over 25E₁ each, and the top of the stack keeps climbing as N². That climb is the Fermi energy, and the pressure it exerts is what holds a white dwarf up against its own gravity with no fusion running. Turn the particles into bosons and the whole stack drops into level 1, which is the seed of a Bose–Einstein condensate: not a new force, the same minus sign switched off.
Why the periodic table has its shape
Electrons are spin-½ fermions, and an atom’s levels are the hydrogen-like subshells: s holds 2, p holds 6, d holds 10, f holds 14. Fill Z electrons in from the bottom, two per orbital with opposite spins, and the row lengths of the table fall out. Pick an element.
Violet cells are s-block (two per row), amber d-block (ten), teal p-block (six). The row lengths 2, 8, 8, 18 are the subshell capacities 2, 2+6, 2+6, 2+10+6 — read off the Pauli principle, nothing else.
1s² 2s² 2p⁶ 3s¹
Electrons per shell
- n = 12 / 2
- n = 28 / 8
- n = 31 / 18
Helium closes the first row at two because 1s holds two and nothing else is anywhere near. Neon closes the second at ten: 2s and 2p together hold eight more. The third row is also eight wide, not eighteen, because 4s fills before 3d — step from argon to potassium and watch the configuration grow a 4s¹ while 3d stays empty. The ten d electrons arrive in the fourth row instead, which is why that row is 18 wide and why the transition metals sit where they sit. Every one of those numbers is a subshell capacity 2(2l + 1), and the 2 in it is the same “two per orbital, then no more” the level diagram above was built on.
What is and isn't real here
The heat map is exact for what it claims: two non-interacting particles in a 1-D box, orbitals from the same finite-difference solver that runs /visualizations/bound-states, symmetrised by hand. Real electrons repel each other, and the symmetrised product is then the starting point of a calculation, not its end. The trench on the diagonal survives interactions — it is forced by antisymmetry alone — while the precise numbers do not.
“Fermions” on the canvas means spin-polarised fermions, or spinless ones: the spatial wavefunction has to carry the whole minus sign. Two electrons with opposite spins can share a spatial orbital because the sign lives in the spin part instead, which is why the filling section offers a spin-½ mode and why helium’s ground state is 1s².
The periodic-table section applies the Madelung filling order and a two-entry exception table. That is a rule that summarises measured atoms, not a solution of any Schrödinger equation; below krypton it is right for 34 of 36 elements and the page corrects the other two. Above krypton the exceptions multiply, which is why the picker stops at 36.
The physics is checked, not eyeballed:lib/quantum/identicalParticles.test.tsasserts that the antisymmetric state is zero on the diagonal, that both states are normalised, that exchange gives exactly ±ψ, that the two-particle energies are E₁ + E₂ and 2E₁, and that ⟨(x₁ − x₂)²⟩ lands on the closed-form exchange-force values — all against textbook numbers, never against the code’s own output.