Hear the Shape of a Drum
In 1966 Mark Kac asked whether you can hear the shape of a drum: do the frequencies a membrane rings at pin down its outline? This lab answers by computing them. Pick a preset or draw any polygon, and the membrane, fixed at its rim, is meshed and solved with quadratic finite elements right in your browser — a Delaunay mesher, a sparse Cholesky factorization and a Lanczos eigensolver find its lowest vibration modes. Click anywhere on the drum to strike it there and hear the result by modal synthesis while the skin ripples, open the mode gallery to see the nodal-line patterns, and compare two drums side by side on a spectrum chart and a Weyl’s-law plot. The default pair is the famous counterexample of Gordon, Webb and Wolpert: two differently shaped drums with identical spectra. Take the blind test and try to tell them apart by ear.
Runs 100% in your browser — simulations are computed locally on your device.
Notes
- Frequencies follow f = c·√λ, where λ are the eigenvalues of −Δu = λu with u = 0 on the rim. Every preset has the same area, so pitch differences come from shape alone; the disk has the lowest fundamental of any shape with that area (the Faber–Krahn inequality).
- Weyl’s law is what you can hear: the number of modes below λ grows like Area·λ/4π − Perimeter·√λ/4π, plus a constant from the corners. The Gordon–Webb–Wolpert drums share all of these and every eigenvalue, yet one cannot be rotated or reflected into the other.
- The pair is built from seven identical half-squares glued in two different patterns; "transplanting" pieces of a vibration mode from one drum to the other proves the spectra match, which is how Gordon, Webb and Wolpert settled Kac’s question in 1992.
- "Real strike" weights each mode by how strongly the strike point excites it, so isospectral drums can still differ in timbre depending on where you hit them. "Pure spectrum" gives every mode a loudness that depends only on its frequency — the fair test of the question.
- Runs 100% in your browser — simulations are computed locally on your device.