Coupled Oscillators and Absorption

The spectrum of a coupled oscillator system

This note records another calculation in my quest to understand why water is blue. Last time we looked at absorption of light by a single oscillator; now we graduate to systems of coupled oscillators — systems closer to the stretching and bending vibrational modes in a molecule.

Again, we proceed in two stages: first the linear story which we can solve exactly, then the (simplest) nonlinear story, which we explore numerically.

Linear coupling

Linear coupling means a quadratic potential. Every quadratic form on Rn\mathbb R^n can be written

V(x)  =  12xTHxV(x) \;=\; \tfrac12\, x^T H x

for a unique real symmetric HH. We’re studying vibrational modes, so HH is positive definite — the origin is a nondegenerate minimum.

The conservative equation of motion is

x¨+Hx  =  0.\ddot x \,+\, H x \;=\; 0.

A live view of x¨+Hx=0\ddot x + Hx = 0 in the original xx coordinates. Edit any cell of the symmetric matrix HH above to reshape the system; the eigenvalues update on every keystroke. Click and drag any rail to set its initial position. Dotted gray lines connect rails ii and jj whenever Hij0H_{ij} \ne 0, with thickness scaling with Hij|H_{ij}| — energy sloshes between coupled rails as the modes beat against one another.

These systems can be solved exactly by decoupling. Orthogonally diagonalize as H=OΛOTH = O\Lambda O^T with Λ=diag(ω12,,ωn2)\Lambda = \mathrm{diag}(\omega_1^2, \ldots, \omega_n^2) (eigenvalues positive by positive-definiteness). In the eigenbasis y=OTxy = O^T x the equation decouples mode by mode:

y¨i+ωi2yi  =  0.\ddot y_i \,+\, \omega_i^2\, y_i \;=\; 0.

A coupled linear conservative system is nn independent simple harmonic oscillators in disguise.

The diagonalization made visible. Left: motion in xx coordinates, with dotted lines marking the nonzero couplings of HH. Right: the same trajectory in modal coordinates y=OTxy = O^T xnn independent simple harmonic oscillators each at ωi\omega_i, no couplings. Push a single xx-rail and watch energy distribute across multiple yy-rails; the “Mode ii” presets do the inverse, exciting one mode in yy and showing the corresponding pattern across multiple xx-rails.

Driving and damping

What we’re really after isn’t the free theory but a system of oscillators driven by a time-dependent external force and damped by their environment:

x¨+2γx˙+Hx  =  Acos(Ωt),\boxed{ \ddot x \,+\, 2\gamma\, \dot x \,+\, H x \;=\; A \cos(\Omega t), }

where γ>0\gamma > 0 is the (uniform) damping rate and ARnA \in \mathbb R^n the drive vector. The quantity we want is the absorbed power — the time-averaged dissipation rate 2γix˙i22\gamma \sum_i \dot x_i^2 over one drive period T=2π/ΩT = 2\pi/\Omega,

Pabs(Ω)  =  2γT0Ti=1nx˙i(t)2dt.P_{\text{abs}}(\Omega) \;=\; \frac{2\gamma}{T} \int_0^T \sum_{i=1}^n \dot x_i(t)^2 \, dt.

To compute this we first solve the system. The same diagonalization works: setting y=OTxy = O^T x and A~:=OTA\tilde A := O^T A,

y¨+2γy˙+Λy  =  A~cos(Ωt),\ddot y \,+\, 2\gamma\, \dot y \,+\, \Lambda y \;=\; \tilde A \cos(\Omega t),

which is just nn independent driven damped harmonic oscillators

y¨i+2γy˙i+ωi2yi  =  A~icos(Ωt),\ddot y_i \,+\, 2\gamma\, \dot y_i \,+\, \omega_i^2\, y_i \;=\; \tilde A_i \cos(\Omega t),

each solved in the last post and seen to be a transient decaying to a periodic steady state

yiss(t)  =  A~i(ωi2Ω2)2+4γ2Ω2cos(Ωtφi).y_i^{\text{ss}}(t) \;=\; \frac{\tilde A_i}{\sqrt{(\omega_i^2 - \Omega^2)^2 + 4\gamma^2\Omega^2}}\,\cos(\Omega t - \varphi_i).

(Decoupling depends on γ\gamma being scalar. If different oscillators damp at different rates — say because they have different masses — the change of basis no longer decouples the system, and we are stuck with legitimately coupled modes. A different story.)

The absorption spectrum

Coming back to what we want: Pabs(Ω)=2γx˙2P_{\text{abs}}(\Omega) = 2\gamma \langle |\dot x|^2 \rangle, with =1T0Tdt\langle \cdot \rangle = \tfrac1T \int_0^T \cdot \, dt the time average. Since OO is an isometry,

x˙2  =  Oy˙2  =  y˙2,|\dot x|^2 \;=\; |O\dot y|^2 \;=\; |\dot y|^2,

so by linearity of \langle \cdot \rangle,

Pabs(Ω)  =  2γy˙2  =  2γi=1ny˙i2  =  2γi=1ny˙i2  =  i=1nPωi(Ω),\begin{aligned} P_{\text{abs}}(\Omega) &\;=\; 2\gamma \langle |\dot y|^2 \rangle \\ &\;=\; 2\gamma \left\langle \sum_{i=1}^n \dot y_i^2 \right\rangle \\ &\;=\; 2\gamma \sum_{i=1}^n \langle \dot y_i^2 \rangle \\ &\;=\; \sum_{i=1}^n P_{\omega_i}(\Omega), \end{aligned}

where Pωi(Ω):=2γy˙i2P_{\omega_i}(\Omega) := 2\gamma \langle \dot y_i^2 \rangle is the per-mode absorption from the previous post. Plugging in the steady-state response yissy_i^{\text{ss}} gives the explicit form,

Pabs(Ω)  =  i=1nγA~i2Ω2(ωi2Ω2)2+4γ2Ω2.\boxed{ P_{\text{abs}}(\Omega) \;=\; \sum_{i=1}^n \frac{\gamma\, \tilde A_i^{\,2}\, \Omega^2}{(\omega_i^2 - \Omega^2)^2 + 4\gamma^2 \Omega^2}. }

The absorption spectrum as a sum of single-mode contributions. The bold curve is the total Pabs(Ω)P_{\text{abs}}(\Omega); the faint curves underneath are the individual PωiP_{\omega_i}. Drag γ\gamma to broaden or narrow every peak together; edit HH to slide their positions and adjust their relative weights A~i2=(OTA)i2\tilde A_i^{\,2} = (O^T A)_i^{\,2}. The drive A=(1,1,,1)TA = (1, 1, \ldots, 1)^T is uniform across all oscillators in this demo.

The linear story is the previous post, nn times over: a sum of single-oscillator spectra, weighted by the drive’s projection onto each mode.

Nonlinear coupling

Our next goal is to understand nonlinear coupled systems, where we can’t solve things exactly and must resort to numerics. As in the previous post, we’ll do this by studying the simplest possible nonlinear system.

We work with two oscillators x1,x2x_1, x_2 at natural frequencies ω1,ω2\omega_1, \omega_2 and look for the simplest cross-coupling to add to the harmonic potential 12ω12x12+12ω22x22\tfrac12 \omega_1^2 x_1^2 + \tfrac12 \omega_2^2 x_2^2. Quadratic cross-terms are absorbed by the linear theory, so we need cubic. Of the four cubic monomials x13,x23,x12x2,x1x22x_1^3, x_2^3, x_1^2 x_2, x_1 x_2^2, the pure cubes don’t couple, and the two genuine cross-terms are equivalent under x1x2x_1 \leftrightarrow x_2. Without loss of generality

V(x1,x2)  =  12ω12x12+12ω22x22+ϵx12x2.V(x_1, x_2) \;=\; \tfrac12\, \omega_1^2 x_1^2 \,+\, \tfrac12\, \omega_2^2 x_2^2 \,+\, \epsilon\, x_1^2 x_2.

This VV is unbounded below — same caveat as the cubic case last post — with a saddle at finite distance opening an escape route in x1x_1 once x2<ω12/(2ϵ)x_2 < -\omega_1^2/(2\epsilon).

With uniform damping γ\gamma and a common drive Acos(Ωt)A\cos(\Omega t) on each oscillator, the equations of motion are

x¨1+2γx˙1+ω12x1+2ϵx1x2  =  Acos(Ωt),x¨2+2γx˙2+ω22x2+ϵx12  =  Acos(Ωt).\boxed{ \begin{aligned} \ddot x_1 \,+\, 2\gamma\, \dot x_1 \,+\, \omega_1^2\, x_1 \,+\, 2\epsilon\, x_1 x_2 &\;=\; A\cos(\Omega t), \\ \ddot x_2 \,+\, 2\gamma\, \dot x_2 \,+\, \omega_2^2\, x_2 \,+\, \epsilon\, x_1^2 &\;=\; A\cos(\Omega t). \end{aligned} }

The coupling is asymmetric: x¨1\ddot x_1 has its stiffness modulated by x2x_2, while x¨2\ddot x_2 feels a force quadratic in x1x_1.

The system in motion. Each xix_i rides its own rail, connected by a line marking the coupling ϵx12x2\epsilon x_1^2 x_2. Slate-blue driver balls visualize the common drive Acos(Ωt)A\cos(\Omega t) on each rail. Click and drag to set initial conditions; sliders control γ,A,Ω,ω1,ω2,ϵ\gamma, A, \Omega, \omega_1, \omega_2, \epsilon. After a transient, trajectories typically settle to periodic motion locked to the drive — though at large AA or ϵ\epsilon they can escape over the saddle.

The same dynamics in phase space show clearly the existence of limiting periodic behavior, after a transient initial component dies away. The demo below shows both, in the (x1,x2)(x_1, x_2) plane:

Light gray traces the integrated trajectory from the user-chosen IC; maroon overlays the eventual periodic limit cycle, detected automatically. Click anywhere to set the IC; sliders update live.

Finding the maroon curve is a Poincaré check. Linear transients decay as eγte^{-\gamma t}, so integrating from rest for t1/γt \gg 1/\gamma puts us comfortably on the steady state. We then test whether the state has returned at successive integer multiples of the drive period T=2π/ΩT = 2\pi/\Omega; the smallest such integer kk is the period of the limit cycle, and integrating kTkT forward traces the closed curve.

The absorption spectrum

The same integral defines absorption,

Pabs(Ω)  =  2γT0T(x˙12+x˙22)dt,P_{\text{abs}}(\Omega) \;=\; \frac{2\gamma}{T} \int_0^T \bigl(\dot x_1^2 + \dot x_2^2\bigr) \, dt,

now evaluated on the numerically-computed steady state. For each Ω\Omega we integrate from rest for MM drive periods chosen so γMT40\gamma M T \geq 40 — the residual transient eγMT\sim e^{-\gamma M T} is then well below numerical noise — and time-average 2γ(x˙12+x˙22)2\gamma(\dot x_1^2 + \dot x_2^2) over a few drive periods to get Pabs(Ω)P_{\text{abs}}(\Omega).

The absorption spectrum on a log-yy scale. The dashed curve is the analytic ϵ=0\epsilon = 0 baseline; the solid curve is the full nonlinear PabsP_{\text{abs}}, built up point by point as the sweep progresses. Vertical guides mark ω1\omega_1 and ω2\omega_2; gray bands flag drive frequencies where the system escapes and no steady state exists. Sliders control γ,ϵ,ω1,ω2\gamma, \epsilon, \omega_1, \omega_2.

A few features stand out. The two main peaks at ω1\omega_1 and ω2\omega_2 — the linear answer — survive, slightly distorted by the nonlinearity. Below them, smaller peaks appear as ϵ\epsilon grows, sitting roughly at ωi/n\omega_i/n for small integers nn — the same kind of subharmonic structure we saw in the previous post’s cubic case. The gray bands flag where the unbounded well kicks in: at large ϵ\epsilon or AA some trajectories escape and there is no steady state.

Real spectra are richer still: water’s, for instance, has prominent overtones at integer multiples nωin\omega_i above the fundamentals, and combination bands at sum frequencies like ω1+ω2\omega_1 + \omega_2. Neither appears in the picture above, which shows only the fundamentals and a subharmonic ladder below them. I would guess this means we need to think harder about what is really going on, before we are ready to model water.

← All posts