Oscillations
Coupled Oscillators
Two pendulums joined by a spring — normal modes, beats, and energy transferring back and forth
Two pendulums or masses joined by a spring oscillate as a sum of two normal modes — a symmetric in-phase mode at ω₊ = ω₀ and an antisymmetric out-of-phase mode at ω₋ = √(ω₀² + 2ω_c²). Excite only one bob, and energy slowly drains into its partner and back over the beat period T_beat = 2π/(ω₋ − ω₊), producing visible amplitude beats. Foundation of molecular vibrations, LC ladder filters, and the Wilberforce pendulum.
- Equationsmẍ₁ = −kx₁ − k_c(x₁−x₂); mẍ₂ = −kx₂ − k_c(x₂−x₁)
- Symmetric modeω₊ = √(k/m), bobs in phase, coupler relaxed
- Antisymmetric modeω₋ = √((k+2k_c)/m), bobs opposite
- Beat periodT_beat = 2π / (ω₋ − ω₊) ≈ T₀ · k / k_c (weak coupling)
- N coupled massesN normal modes, sinusoidal mode shapes (wave limit)
- First demonstratedHuygens 1665 — synchronized pendulum clocks
Interactive visualization
Press play, or step through manually. The visualization is yours to drive — try it before reading on.
Watch the 60-second explainer
A condensed visual walkthrough — narrated, captioned, under a minute.
The setup
Two identical masses m on identical springs of stiffness k, joined by a softer coupling spring of stiffness k_c. Let x₁ and x₂ be the displacements from each mass's own equilibrium. Newton's law for each mass:
mẍ₁ = −k x₁ − k_c (x₁ − x₂)
mẍ₂ = −k x₂ − k_c (x₂ − x₁)
The system is linear, so the matrix form M ẍ + K x = 0 has solutions of the form x(t) = v · cos(ωt + φ) where (K − ω²M) v = 0. The eigenvalues give the squared mode frequencies; the eigenvectors give the mode shapes.
The two normal modes
Adding and subtracting the equations of motion isolates two new coordinates that decouple:
q₊ = (x₁ + x₂)/2 → q̈₊ = −(k/m) q₊ ω₊ = √(k/m)
q₋ = (x₁ − x₂)/2 → q̈₋ = −((k + 2k_c)/m) q₋ ω₋ = √((k + 2k_c)/m)
The symmetric mode q₊ moves both bobs together at the natural frequency ω₀ — the coupling spring is never stretched, so it does not enter the frequency. The antisymmetric mode q₋ moves them opposite, stretching the coupling spring by 2·q₋ and raising the effective stiffness.
Beats — energy ping-pongs between the bobs
If the left bob is released from amplitude A while the right is held at rest, the initial state decomposes as q₊(0) = q₋(0) = A/2. The subsequent motion is:
x₁(t) = (A/2)[cos(ω₊ t) + cos(ω₋ t)] = A cos((ω₋−ω₊)/2 · t) · cos((ω₋+ω₊)/2 · t)
x₂(t) = (A/2)[cos(ω₊ t) − cos(ω₋ t)] = A sin((ω₋−ω₊)/2 · t) · sin((ω₋+ω₊)/2 · t)
The fast oscillation is at the average frequency (ω₋+ω₊)/2 ≈ ω₀; the slow envelope is at the half-difference (ω₋−ω₊)/2. Energy thus transfers entirely from bob 1 to bob 2 in time T_beat / 2 = π / (ω₋ − ω₊).
Worked example — Δm = 5 g pendulums, k_c sliding the coupling thread
Two 5 g pendulums of length 0.30 m give ω₀ = √(g/L) = 5.72 rad/s, period T₀ = 1.099 s. Connect them with a horizontal thread giving coupling stiffness k_c = 0.05 · k. Then:
| Coupling fraction k_c/k | ω₋/ω₊ − 1 | T_beat | Beats per minute |
|---|---|---|---|
| 0.01 (very weak) | 1.005 % (0.01) | 1.83 min | 0.55 |
| 0.05 (weak) | 2.47 % | 22.2 s | 2.7 |
| 0.20 (medium) | 9.54 % | 5.76 s | 10.4 |
| 1.00 (strong) | 41.4 % | 1.33 s | 45.1 |
Lab demonstrations use the medium range — a beat every few seconds is fast enough to see and slow enough to count.
Variants
- Three or more pendulums. Add masses and you add modes. Three identical pendulums coupled identically have modes (+, +, +), (+, 0, −), and (+, −2, +) — wavelike shapes. N pendulums give N modes at frequencies ω_n = √(ω₀² + 4ω_c² sin²(nπ/(2(N+1)))).
- Continuous limit — a string. N → ∞ with finite total length gives the wave equation; normal modes become sinusoidal standing waves with wavelengths 2L/n. The discrete-to-continuum transition is a tidy textbook proof that strings are just lots of coupled pendulums.
- Wilberforce pendulum. A mass on a vertical spring that also twists. The translational mode and the torsional mode have slightly different frequencies; the spring's helical geometry couples them. Energy moves between bouncing and spinning in a few seconds — a classroom favorite.
- LC ladder filter. Repeated LC sections couple electrically just like coupled pendulums couple mechanically — same eigenvalue problem, same dispersion ω(k). The cutoff frequency above which no mode exists is the basis of analog lowpass filters and acoustic waveguides.
- Diatomic molecules. Two atoms joined by a chemical bond modeled as a spring. The center-of-mass mode is uncoupled translation (a free particle); the internal stretch mode has ω = √(k/μ) with the reduced mass μ = m₁m₂/(m₁+m₂). Infrared absorption frequencies in CO and HCl come straight from this formula.
- Huygens synchronization. Two pendulum clocks on the same wall couple through the wall's microvibrations. Huygens observed in 1665 that they slowly phase-lock to antisymmetric motion. Nonlinear damping plus weak coupling generally selects one mode preferentially — a precursor to Kuramoto's synchronization model for laser arrays, fireflies, and neurons.
JavaScript — coupled simulation
// Analytic solution for two identical coupled masses
function coupledAnalytic(A, k, kc, m, t) {
const w_plus = Math.sqrt(k / m);
const w_minus = Math.sqrt((k + 2 * kc) / m);
const w_fast = (w_minus + w_plus) / 2;
const w_beat = (w_minus - w_plus) / 2;
return {
x1: A * Math.cos(w_beat * t) * Math.cos(w_fast * t),
x2: A * Math.sin(w_beat * t) * Math.sin(w_fast * t),
w_plus, w_minus,
T_beat: 2 * Math.PI / (w_minus - w_plus),
};
}
// Beat period for a textbook demo
const demo = coupledAnalytic(0.05, 10, 0.5, 0.005, 0);
console.log(`T_beat = ${demo.T_beat.toFixed(2)} s`); // ~13.2 s
console.log(`Modes: ${demo.w_plus.toFixed(2)} and ${demo.w_minus.toFixed(2)} rad/s`);
// Velocity Verlet integrator for arbitrary coupled chains
function stepChain(x, v, k, kc, m, dt) {
const N = x.length;
const a = new Array(N);
for (let i = 0; i < N; i++) {
a[i] = -k * x[i] / m;
if (i > 0) a[i] -= kc * (x[i] - x[i-1]) / m;
if (i < N - 1) a[i] -= kc * (x[i] - x[i+1]) / m;
}
for (let i = 0; i < N; i++) {
v[i] += a[i] * dt;
x[i] += v[i] * dt;
}
}
// Eigenmodes of an N-mass chain — analytic formula
function chainModes(N, k, kc, m) {
const modes = [];
for (let n = 1; n <= N; n++) {
const w_n = Math.sqrt((k + 2 * kc * (1 - Math.cos(n * Math.PI / (N + 1)))) / m);
modes.push({ n, omega: w_n, shape: Array.from({length: N}, (_, i) =>
Math.sin((i + 1) * n * Math.PI / (N + 1))) });
}
return modes;
}
Where coupled oscillators show up
- Molecular vibrations. IR spectroscopy frequencies are normal-mode frequencies of polyatomic molecules — CO₂ at 667 and 2349 cm⁻¹, water at 1595 / 3657 / 3756 cm⁻¹.
- Lattice phonons. Atoms in a crystal are a 3D coupled-oscillator network. Their normal modes (phonons) carry sound, conduct heat, and dominate low-temperature heat capacity (Debye model).
- Coupled pendulum clocks. Huygens 1665, and a 350-year tradition since: synchronization phenomena now span neurons, fireflies, lasers, and power grids.
- Tuned mass dampers. Taipei 101's 660-tonne ball is a deliberate coupled oscillator with the building itself, tuned to drain energy from the tower's lowest sway mode.
- Coupled-cavity lasers. Two optical cavities sharing a mirror form coupled modes; tuning the coupling stabilizes mode-locked operation in modern frequency combs.
- Power-grid synchronization. Hundreds of generators across a continent behave as coupled oscillators on a network. Stable operation requires all phases to track within a narrow range — failures cascade as modes go unstable.
- Quantum bits. Two superconducting qubits coupled through a resonator are described by exactly this Hamiltonian. Gate fidelity depends on tuning the coupling and timing the swap of a single energy quantum.
Common mistakes
- Calling the individual-bob motion a "mode." Single-bob oscillation is a superposition of two modes. Modes are the orthogonal motions that diagonalize the equations.
- Assuming weak coupling means no effect. Weak coupling does not change frequencies much, but it sets the beat period — full energy still transfers, just slowly.
- Forgetting the factor of 2 in the antisymmetric frequency. ω₋² = (k + 2k_c)/m, not (k + k_c)/m. The coupling spring stretches by 2·q₋ in the antisymmetric motion.
- Mixing up beat frequency and beat period. Beat angular frequency is Δω = ω₋ − ω₊. The envelope half-cycle is π/Δω; one full envelope cycle (left → right → left) is 2π/Δω.
- Using unequal masses with the same mode equations. For different masses, you diagonalize K − ω²M with a non-identity M — eigenvectors are no longer pure (+, +) and (+, −).
- Confusing parametric resonance with coupling. The Wilberforce demo is true coupling; a child pumping a swing is parametric driving — different physics with similar visual effect.
Performance notes — modal vs direct integration
For N coupled oscillators, modal analysis is O(N³) to find eigenmodes once, then O(N) per timestep per mode — so O(N²) per timestep total once decomposed. Direct integration of the coupled system is also O(N²) per timestep if the coupling matrix is dense, but O(N) for nearest-neighbor coupling. Engineers typically use modal analysis when (a) only the lowest few modes are excited (truncate at, e.g., 20 modes for a thousand-DOF building), or (b) repeated solves with different forcings are needed. For impulsive or nonlinear problems, direct integration wins because high modes matter and superposition fails.
Frequently asked questions
What is a normal mode?
A normal mode is a collective oscillation in which every part of the system moves with the same frequency and a fixed phase relationship. Coupled systems have as many independent modes as degrees of freedom. For two identical masses on springs joined by a coupling spring, the two modes are symmetric (both masses moving in phase, the coupling spring never stretched — frequency ω₀ = √(k/m)) and antisymmetric (masses moving in opposite directions, coupling spring stretched twice as hard — frequency ω₋ = √((k + 2k_c)/m)). Any motion is a linear combination of these two modes, each evolving independently.
Where do beats come from?
Start with only the left pendulum displaced — that initial condition is half symmetric mode plus half antisymmetric mode. The two modes oscillate at slightly different frequencies (ω₊ and ω₋), so their sum constructively reinforces in the left bob and cancels in the right at one instant, then over half a beat period the situation reverses: amplitude transfers fully to the right bob. The envelope oscillation frequency is Δω = ω₋ − ω₊, and the beat period T_beat = 2π/Δω scales as 1 / coupling strength.
Why are there exactly two modes for two masses?
The number of normal modes equals the number of degrees of freedom. Two masses constrained to move along one axis give exactly two coordinates, and the equations of motion diagonalize into two decoupled oscillators (the normal modes). N coupled identical masses give N modes; the modes look like sinusoidal standing waves with wavelengths 2L/n for n = 1 to N. In the continuum limit (N → ∞) these become the modes of a string.
How does the beat period depend on coupling?
For weak coupling (k_c ≪ k), ω₋ − ω₊ ≈ ω₀ · k_c/k, so the beat period is T_beat ≈ T₀ · k/k_c. Stiffer coupling means faster energy exchange. In the textbook setup of two pendulums hung from a common shaft with a thread between them, you tune the beat period by sliding the thread up or down: thread near the bobs gives strong coupling and fast transfers; thread near the pivots gives weak coupling and many cycles between exchanges.
How are coupled oscillators related to molecular vibrations?
A diatomic molecule is the canonical coupled oscillator — two atoms joined by a bond modeled as a spring. The symmetric breathing mode is suppressed by momentum conservation (the molecule does not bounce against empty space), leaving a single internal stretch mode at ω = √(k/μ) where μ is the reduced mass. Polyatomic molecules have 3N − 6 vibrational modes (3N − 5 for linear molecules); CO₂ has 4, water has 3, benzene has 30. Infrared spectroscopy probes these modes directly.
What happens with damping or different masses?
Damping smears each mode's frequency into a peak with width γ. The modes still decouple if the dissipation matrix shares eigenvectors with the stiffness matrix (proportional damping), otherwise the modes mix and become complex. Unequal masses or stiffnesses still give two modes, but they are no longer purely symmetric/antisymmetric — the heavier mass moves less in each mode, and the mode amplitudes inherit a mass-weighted asymmetry. Diagonalizing the matrix [k_ij] − ω² [m_ij] still gives the spectrum.
Why are normal modes useful in engineering?
Any linear vibration problem reduces to summing independent normal modes — each with its own frequency, damping, and excitability. Civil engineers do modal analysis on buildings and bridges to find the lowest few mode frequencies and shapes, then design dampers or stiffeners so wind and earthquake spectra do not overlap them. Aerospace runs the same analysis on aircraft wings to avoid flutter. The Tacoma Narrows bridge was killed by an aeroelastic mode whose frequency landed inside the wind spectrum.