Lemma
math, backwards
the hook · stop, or grow

Why does a swing stop on its own — and why does pushing on the beat make it grow?

A pendulum left alone slows down and stops. The same pendulum, pushed at exactly the right rhythm, swings higher and higher until it loops the bar. Same hardware. Two opposite outcomes. The single equation that governs both — and every cousin of them, from car suspensions to laser cavities to bridges that fell down — has three terms: an inertia, a restoring force, and a velocity-dependent . When the drag wins, motion dies; when an external push lands at the natural beat, the drag can’t keep up, and amplitude climbs.

Damping decides how it stops. Resonance decides when a push wins.

Widget — Damped oscillator
γ (damping)0.10
ω₀ (natural)1.00
ω (driving)1.00
regimeunderdamped
position x(t)
-2+20102030time t
amplitude response A(ω) — steady-state
123450ω₀2
ω₀ = 1 (fixed)
Equation: ẍ + 2γ·ẋ + ω₀²·x = F·cos(ω·t). With forcing off, the system runs free from a displaced start: the trace decays exponentially while still oscillating (γ < ω₀), or returns straight to rest without oscillating (γ ≥ ω₀). With forcing on, the bottom panel shows the steady-state amplitude as a function of driving frequency. Drag ω across the natural frequency ω₀ = 1: the orange dot climbs the response curve. With weak damping the peak is sharp and tall; with strong damping the peak flattens. *Same equation, three behaviors* — and the engineering of any oscillator is choosing where on these curves to live.
the arc
1

The equation that runs every oscillator

A mass on a spring obeys Newton’s law: mx¨=Fnetm · \ddot{x} = F_net. The net force has three pieces. The spring pulls back proportional to displacement: kx−k · x. opposes velocity proportional to speed: cx˙−c · \dot{x}. An external push (a hand on the swing, a periodic forcing) adds F(t)F(t). Put them together and divide by mass:

x¨+2γx˙+ω02x=F(t)/m\ddot{x} + 2γ · \dot{x} + ω₀² · x = F(t)/m

where γ=c/(2m)γ = c / (2m) and ω0=k/mω₀ = \sqrt{k/m}. The same equation describes a small-angle pendulum (ω0=g/Lω₀ = \sqrt{g/L}), an LC electrical circuit (ω0=1/LCω₀ = 1/\sqrt{LC}), a building swaying in wind, a guitar string, an atom’s electron cloud responding to light. Different physics, identical mathematics — one of the most-reused equations in all of physics.

2

Free decay — three ways to stop

Set F(t)=0F(t) = 0 (no external push), displace the mass, and let go. The derivatives on the left side compete with the restoring term on the right, and the answer depends on how big γγ is compared to ω0ω₀:

  • Underdamped (γ &lt; ω₀): the mass oscillates while shrinking — exponential envelope e(γt)e^(−γt) times a sinusoid. The widget at weak damping shows this — the trace ripples downward to zero.
  • Critical damping (γ=ω0γ = ω₀): the fastest return to rest with no oscillation. Car shock absorbers and door closers are tuned exactly here — anything less swings, anything more crawls.
  • Overdamped (γ &gt; ω₀): the mass crawls back to rest more slowly than critical. Useful when you want no oscillation guaranteed, even at the cost of speed (precision instruments, certain control systems).

The widget’s free-decay traces (forcing toggle off) make these three regimes immediate: same equation, three different shapes of “stop.” Mathematically, they’re all governed by the characteristic equation r2+2γr+ω02=0r² + 2γr + ω₀² = 0 — the discriminant γ2ω02γ² − ω₀² is positive, zero, or negative, and that’s what you’re looking at.

import numpy as np

# Equation: ẍ + 2γ·ẋ + ω₀²·x = F·cos(ω·t)
# Three free-decay regimes (F = 0), determined by γ vs ω₀.
omega0 = 1.0

def simulate(gamma, omega_drive=0.0, F=0.0, T=30, dt=0.05, x0=1, v0=0):
    """RK4 integration of the damped driven oscillator."""
    n = int(T / dt) + 1
    t = np.zeros(n); x = np.zeros(n); v = np.zeros(n)
    x[0], v[0] = x0, v0
    accel = lambda x_, v_, t_: (-2*gamma*v_ - omega0**2*x_
                                 + F*np.cos(omega_drive*t_))
    for i in range(1, n):
        t[i] = i * dt
        k1x, k1v = v[i-1], accel(x[i-1], v[i-1], t[i-1])
        k2x = v[i-1] + dt/2 * k1v
        k2v = accel(x[i-1] + dt/2 * k1x, v[i-1] + dt/2 * k1v, t[i-1] + dt/2)
        k3x = v[i-1] + dt/2 * k2v
        k3v = accel(x[i-1] + dt/2 * k2x, v[i-1] + dt/2 * k2v, t[i-1] + dt/2)
        k4x = v[i-1] + dt * k3v
        k4v = accel(x[i-1] + dt * k3x, v[i-1] + dt * k3v, t[i])
        x[i] = x[i-1] + dt/6 * (k1x + 2*k2x + 2*k3x + k4x)
        v[i] = v[i-1] + dt/6 * (k1v + 2*k2v + 2*k3v + k4v)
    return t, x

# Three free-decay regimes from displaced start (x=1, v=0):
[(name, simulate(gamma=g)[1][-1]) for name, g in
 (("undamped", 0.0), ("under-damped", 0.1),
  ("critical", 1.0), ("over-damped", 2.0))]
# undamped:    final x oscillates near ±1   (no decay)
# under:       final x near 0 after many cycles, but visibly oscillates
# critical:    final x essentially 0, no oscillation (fastest return)
# over:        final x slightly above 0, slow exponential return
3

Why the equation works at all — small-angle linearization

The small-angle pendulum lives on a lie — the linearization trick from the pendulum-clock page. The true equation has sinθ\sin θ, which is nonlinear; replacing sinθθ\sin θ ≈ θ for small swings turns it into the linear oscillator above. Real damped oscillators that work in everyday engineering live almost entirely in this regime: car suspensions deflect a few centimeters, building columns flex by parts per thousand, microphone diaphragms move microns. They obey the linear equation because they live where the lie holds.

When the lie breaks — wide-angle pendulums, soft non-Hookean springs, large electrical signals near a transistor’s saturation, a building swaying past its elastic limit — the linear formulas become wrong, sometimes spectacularly. The 1940 Tacoma Narrows bridge collapse is famous for exactly this: small oscillations stayed predictable, but as amplitude grew, aerodynamic forcing crossed nonlinear thresholds the linear analysis didn’t see. The equation in arc 1 is exact only inside the regime; outside, you’re solving a different problem.

4

Forced — amplitude as a function of driving frequency

Now turn the forcing on: F(t)=Fcos(ωt)F(t) = F · \cos(ω · t). After the transient (the free-decay piece) dies away, the mass settles into a steady state at the driving frequency: x(t)=A(ω)cos(ωtφ)x(t) = A(ω) · \cos(ωt − φ). The amplitude A(ω)A(ω) has a closed form — plug the steady-state ansatz into the equation and solve algebraically:

A(ω)=F/(ω02ω2)2+(2γω)2A(ω) = F / \sqrt{(ω₀² − ω²)² + (2γω)²}

Two limits read off directly. For very slow forcing (ω0ω → 0), AF/ω02A → F/ω₀² — the static deflection: the spring just balances the slowly-applied force. For very fast forcing (ωω → ∞), A0A → 0 — the mass can’t keep up at all, inertia wins. Between them, the curve has a peak — and that’s the resonance.

The widget’s lower panel shows A(ω)A(ω) for the current γγ. Drag damping down to 0.05 — the peak shoots up, narrow and tall. Drag damping up to 1.0 — the peak vanishes; the curve is now monotonic. Lighter damping → sharper, taller peak. The amplitude is set by how much energy the forcing pumps in versus how much damping bleeds away — the equilibrium is the steady-state amplitude.

# Steady-state amplitude as a function of driving frequency:
# A(ω) = F / sqrt((ω₀² − ω²)² + (2γω)²)
# — a closed-form 'frequency response' that emerges by plugging
# x(t) = A·cos(ωt − φ) into the forced equation and collecting cos / sin.
def amplitude(omega, gamma, omega0=1.0, F=1.0):
    a = omega0**2 - omega**2
    b = 2 * gamma * omega
    return F / np.sqrt(a*a + b*b)

# Peak location (where the response is largest):
# d/dω [A] = 0  →  ω_peak = sqrt(ω₀² − 2γ²)   (for γ < ω₀/√2)
# For very small γ, ω_peak ≈ ω₀ — the natural frequency.
def peak_omega(gamma, omega0=1.0):
    if gamma >= omega0 / np.sqrt(2):
        return 0.0  # no peak — overdamped frequency response
    return np.sqrt(omega0**2 - 2*gamma**2)

[(g, peak_omega(g), amplitude(peak_omega(g) or 0.001, g))
 for g in (0.05, 0.1, 0.3, 0.7, 1.0)]
# γ=0.05  → peak at 0.997, A ≈ 10        sharp resonance
# γ=0.1   → peak at 0.990, A ≈ 5.0
# γ=0.3   → peak at 0.906, A ≈ 1.7
# γ=0.7   → peak at ~0,    A ≈ 1.4       no real resonance peak
# Lighter damping → sharper peak. The Q-factor 1/(2γ/ω₀) measures this
# 'sharpness' directly; a high-Q oscillator (laser cavity, atomic clock)
# is the same equation with γ pushed near zero.
5

Resonance — pushing on the beat

Why does the peak sit at ωω0ω ≈ ω₀? is what happens when each push lands while the oscillator is already moving in the same direction — energy goes in coherently, every cycle. Off-resonance, pushes alternate between adding and subtracting energy, and the net input averages out. The math underneath: average power input is Fx˙⟨F · \dot{x}⟩ — an integral over a cycle — and that average is largest exactly when the forcing and the velocity stay in phase, which happens when ωω hits ω0ω₀.

The same identity governs an opera singer breaking glass (vocal cord drives the glass at its ), the Tacoma Narrows bridge collapse (wind-driven aeroelastic flutter at one of the deck’s natural frequencies), MRI nuclei flipping (RF pulse at the Larmor frequency), and the radio dial picking out one station from a sky full (LC circuit tuned to one ω₀). Resonance is not a special force — it is energy injected on the beat the system already keeps.

The Q-factor Q=ω0/(2γ)Q = ω₀ / (2γ) measures how narrow the resonance peak is. High Q (atomic clocks: Q ≈ 10¹⁰; pendulum: Q ≈ 100) means the system rings cleanly at exactly one frequency. Low Q means a broad, easily-driven response. Choosing Q is one of the first decisions any oscillator designer makes — the rest is consequence.

# Resonance with energy bookkeeping: average the power F·v over a few
# cycles and watch energy build up coherently when ω = ω₀.
def energy_input(gamma, omega_drive, F=1.0, T=50, dt=0.01):
    omega0 = 1.0
    t = np.arange(0, T, dt)
    A = amplitude(omega_drive, gamma)
    a = omega0**2 - omega_drive**2
    b = 2 * gamma * omega_drive
    phi = np.arctan2(b, a)
    v = -A * omega_drive * np.sin(omega_drive * t - phi)
    forcing = F * np.cos(omega_drive * t)
    return float(np.mean(forcing * v))

[(omega_drive, energy_input(0.1, omega_drive))
 for omega_drive in (0.5, 0.9, 1.0, 1.1, 1.5)]
# ω=0.5 → avg power ≈ 0.05
# ω=0.9 → avg power ≈ 0.45
# ω=1.0 → avg power ≈ 2.5     ← resonance: 50× more energy in / cycle
# ω=1.1 → avg power ≈ 0.45
# ω=1.5 → avg power ≈ 0.05
# 'Pushing on the beat' is literally an integral identity — F·v averages
# to a positive number only when forcing is in phase with velocity.
now break it

Resonance is not always disaster. The phrase “soldiers must break step on a bridge” is a half-truth at best — synchronized footfall can drive a low-Q bridge near its natural frequency, but most bridges are designed with damping high enough to make this irrelevant. Resonance is also what makes radios work, how MRI images you, why your microwave heats water (electromagnetic waves at one of water’s rotational resonances), and the entire principle of laser cavities. Dangerous resonance and useful resonance are the same equation; the engineering question is which side of the equation you live on. A high-Q oscillator is a tool when you want it and a bomb when you don’t.

Damping decides how it stops. Resonance decides when a push wins. One equation — x¨+2γx˙+ω02x=F(t)\ddot{x} + 2γ·\dot{x} + ω₀²·x = F(t) — runs every oscillator that bleeds energy and listens to the right beat. Three free-decay regimes (under / critical / over) and one steady- state amplitude curve A(ω)=F/(ω02ω2)2+(2γω)2A(ω) = F / \sqrt{(ω₀² − ω²)² + (2γω)²}. Everything else is engineering: which γ, which ω₀, which Q.

exercises · 손으로 풀기
1undamped period by inspection

In the widget, set damping γ=0γ = 0 (the undamped preset). The trace becomes a perfect cosine. Read its period off the time axis. Confirm with the formula T=2π/ω0T = 2π / ω₀ using ω0=1ω₀ = 1.

2critical damping fastest, never oscillatesno calculator

The widget’s three damping presets are weak (γ = 0.1), critical (γ = 1.0), overdamped (γ = 2.0). For each, predict whether the trace oscillates and roughly how long it takes to settle near zero. Confirm in the widget.

3resonance — sharper at lower γ

Compute A(ω0)A(ω₀) for γ=0.1γ = 0.1 and γ=0.3γ = 0.3 using the formula A(ω0)=F/(2γω0)A(ω₀) = F / (2γω₀) (with F=1,ω0=1F = 1, ω₀ = 1). Why does halving damping more than double the peak amplitude?

4the evil one · is resonance always dangerous?

A friend says: “Resonance is dangerous — that’s why bridges collapse and singers break glass.” Refute in one sentence by listing three places where resonance is useful.

why this isn't taught this way

Introductory physics teaches the undamped harmonic oscillator (Hooke’s law + Newton II) as a decorative example, and then skips to wave equations, optics, or quantum. The damped driven case — with three regimes, a closed-form amplitude response, and an honest definition of resonance — is left for a sophomore-year mechanics or electrical-engineering course, where it drowns in Laplace transforms. Lemma collapses it: one equation with three terms, three regimes by sign of a discriminant, one amplitude formula, and a widget that shows all of it directly. The Q-factor and resonance frequency follow as one calculation; bridges, radios, lasers, and car suspensions show up as different choices on the same axes. The equation is older than electrical engineering and used everywhere in it; teaching it as ‘special and advanced’ is a curriculum artifact.

glossary · used on this page · 4
drag·공기 저항
The force a fluid (air, water) exerts on an object moving through it, _opposing motion_. Two regimes matter for everyday physics: at low speed (or for small objects) drag is roughly proportional to velocity — `F_drag = k v`, called _linear_ or _Stokes_ drag. At high speed (or for large objects) it's roughly proportional to velocity squared — `F_drag = ½ ρ C_d A v²`, called _quadratic_ or _form_ drag. The proportionality constant absorbs cross-section, fluid density, and shape. Lemma's terminal-velocity page uses the linear case for clean closed-form math; raindrops and parachutists in real life sit in the quadratic regime, but the _shape_ of the answer (an asymptotic approach to a force-balance speed) is the same.
damping·감쇠
Any mechanism that drains energy from an oscillator and brings it eventually to rest. The simplest model is _velocity-proportional_ — a force `−c · ẋ` opposing motion — which makes the equation `m ẍ + c ẋ + k x = 0` linear and easy to solve. Three regimes by how `c` compares to `√(4mk)`: _underdamped_ (oscillates while shrinking), _critically damped_ (returns to rest fastest with no oscillation), _overdamped_ (returns slowly without oscillation). Damping is more general than _drag_ — drag is one specific source (fluid resistance), while damping covers friction, viscous flow, electrical resistance, structural hysteresis, anything that takes the oscillator's energy and never gives it back.
resonance·공명
What happens when an external driving force pushes an oscillator at (or near) its _natural frequency_. Each push lands when the oscillator is already moving in the same direction — energy goes in coherently, amplitude grows. Off-resonance, pushes alternately add and subtract energy, and the response stays small. The steady-state amplitude as a function of driving frequency `ω` is `A(ω) = F / √((ω₀² − ω²)² + (2γω)²)`, which peaks near `ω = ω₀` for light damping. _Lighter damping → sharper, taller peak._ The same identity governs an opera singer breaking glass, the Tacoma Narrows bridge collapse, MRI nuclei flipping, and the radio dial picking out one station from a sky full. Resonance is _not_ a special force; it is energy injected on the beat the system already keeps.
natural frequency·자연 진동수
The frequency at which a system oscillates _on its own_, with no external driving and no damping. For a mass-spring system: `ω₀ = √(k/m)`. For a small-angle pendulum: `ω₀ = √(g/L)`. For an electrical LC circuit: `ω₀ = 1/√(LC)`. Different physics, same shape — `ω₀² = stiffness / inertia`. Damping shifts the apparent frequency slightly downward; driving forces _don't_ change `ω₀` but cause large response when their frequency comes close to it (_resonance_). Every system has at least one natural frequency; complex systems (a bridge, a guitar string, a building) have many.