Case Study 1 — The Natural Frequencies of a Vibrating Structure

Field: Mechanical / structural engineering. Idea in one line: the frequencies at which a structure wants to vibrate are the eigenvalues of its stiffness-and-mass system, and the shapes it vibrates in are the eigenvectors.

Why engineers fear the wrong frequency

On a windy day in 1940, the Tacoma Narrows Bridge twisted itself apart. The wind did not hit it especially hard; it hit it at exactly the wrong rhythm, feeding energy into one of the bridge's natural modes of oscillation until the amplitude grew without bound. Every physical structure — a bridge, a turbine blade, a skyscraper, a guitar string, a circuit — has a set of preferred vibration frequencies baked into its geometry and material. Drive it at one of those natural frequencies and even a gentle push accumulates into a large, sometimes catastrophic, response. Engineers must know these frequencies before they build, and the tool that delivers them is the eigenvalue problem of this chapter.

The beautiful part is that the abstract machinery — form $A - \lambda I$, find where its determinant vanishes — turns out to be the physics. The values of $\lambda$ that make the system matrix singular are the squared natural frequencies; the null-space vectors are the shapes the structure moves in. We will work the smallest honest example by hand, then say how it scales to a real finite-element model with millions of unknowns.

The model: two masses and three springs

Picture two equal carts of mass $m = 1$ on a frictionless track, connected to each other and to two fixed walls by three identical springs of stiffness $k = 1$. Let $x_1$ and $x_2$ be the displacements of the two carts from rest. Newton's second law for each cart, accounting for the springs pulling on both sides, gives a pair of coupled differential equations:

$$ \ddot{x}_1 = -2x_1 + x_2, \qquad \ddot{x}_2 = x_1 - 2x_2. $$

In matrix form $\ddot{\mathbf{x}} = -K\mathbf{x}$, where the stiffness matrix is

$$ K = \begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}. $$

(The diagonal $2$'s come from each cart feeling two springs; the off-diagonal $-1$'s are the spring coupling the carts together. $K$ is symmetric, as stiffness matrices always are — a physical reflection of Newton's third law, and a fact that Chapter 27's Spectral Theorem will reward.)

Now we look for normal modes: solutions in which both carts oscillate at the same frequency $\omega$ and stay in fixed proportion, $\mathbf{x}(t) = \mathbf{v}\cos(\omega t)$ for some constant shape vector $\mathbf{v}$. Substituting this guess, each time derivative brings down a factor $-\omega^2$, so $\ddot{\mathbf{x}} = -\omega^2 \mathbf{v}\cos(\omega t)$, and the equation $\ddot{\mathbf{x}} = -K\mathbf{x}$ becomes

$$ -\omega^2 \mathbf{v}\cos(\omega t) = -K\mathbf{v}\cos(\omega t) \quad\Longrightarrow\quad K\mathbf{v} = \omega^2 \mathbf{v}. $$

There it is — the eigen-equation $A\mathbf{v} = \lambda\mathbf{v}$ of Chapter 23, with $A = K$ and $\lambda = \omega^2$. The squared natural frequencies are the eigenvalues of the stiffness matrix, and the mode shapes are its eigenvectors. A normal mode exists only for those special $\omega$; at any other frequency the carts cannot move in lockstep.

Finding the frequencies by hand

We follow the chapter's recipe. The characteristic polynomial is

$$ p_K(\lambda) = \det(K - \lambda I) = (2 - \lambda)^2 - (-1)(-1) = \lambda^2 - 4\lambda + 3 = (\lambda - 1)(\lambda - 3). $$

So the eigenvalues are $\lambda_1 = 1$ and $\lambda_2 = 3$, giving natural frequencies

$$ \omega_1 = \sqrt{1} = 1, \qquad \omega_2 = \sqrt{3} \approx 1.732. $$

A two-degree-of-freedom system has exactly two natural frequencies, as the degree-2 polynomial promised. Notice the instant check from §24.8: $\lambda_1 + \lambda_2 = 4 = \operatorname{tr}(K)$ and $\lambda_1\lambda_2 = 3 = \det(K)$. Both hold, so we have not slipped.

Finding the mode shapes

The mode shapes are the eigenvectors — the null spaces of $K - \lambda I$.

Mode 1 ($\lambda_1 = 1$, $\omega_1 = 1$). Form $K - I = \begin{bmatrix} 1 & -1 \\ -1 & 1\end{bmatrix}$. The rows are dependent; the equation $v_1 - v_2 = 0$ gives $v_2 = v_1$, so

$$ \mathbf{v}_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}. $$

Both carts move together, the same distance in the same direction. The middle spring never stretches, so it contributes no restoring force — which is why this mode is the softer, lower-frequency one. This is the in-phase (symmetric) mode.

Mode 2 ($\lambda_2 = 3$, $\omega_2 = \sqrt 3$). Form $K - 3I = \begin{bmatrix} -1 & -1 \\ -1 & -1\end{bmatrix}$. The equation $-v_1 - v_2 = 0$ gives $v_2 = -v_1$, so

$$ \mathbf{v}_2 = \begin{bmatrix} 1 \\ -1 \end{bmatrix}. $$

The carts move in opposite directions, squeezing and stretching the middle spring hard. That extra stiffness raises the restoring force, so this out-of-phase (antisymmetric) mode vibrates faster, at $\sqrt 3$. Intuition and algebra agree: the mode that works the coupling spring more is the stiffer, higher-frequency one.

A lovely structural fact: $\mathbf{v}_1 \cdot \mathbf{v}_2 = (1)(1) + (1)(-1) = 0$. The two mode shapes are orthogonal. This is not luck — it is the Spectral Theorem (Chapter 27) at work, guaranteed because $K$ is symmetric. Orthogonal modes are what let engineers treat each mode independently, decomposing any complicated vibration into a sum of clean modal motions.

Confirming with numpy

Because $K$ is symmetric, the right tool is np.linalg.eigh, which returns real eigenvalues in ascending order (the Computational Note in §24.3).

# Natural frequencies and mode shapes of the two-mass spring system.
import numpy as np
K = np.array([[2, -1], [-1, 2]], dtype=float)
eigvals, modes = np.linalg.eigh(K)          # symmetric -> use eigh
print("omega^2     :", eigvals)              # -> [1. 3.]
print("frequencies :", np.sqrt(eigvals))     # -> [1.        1.73205081]
print("mode shapes (columns):\n", np.round(modes, 4))
print("check: det K =", round(np.linalg.det(K)), " = product of eigenvalues")

Output:

omega^2     : [1. 3.]
frequencies : [1.         1.73205081]
mode shapes (columns):
 [[-0.7071 -0.7071]
 [-0.7071  0.7071]]

The frequencies $1$ and $\sqrt 3 \approx 1.732$ match exactly. The mode-shape columns $(-0.7071, -0.7071)$ and $(-0.7071, 0.7071)$ are our $(1,1)$ and $(1,-1)$ normalized to unit length (and the first negated — direction only, as always). Mode 1 has equal components (in phase); mode 2 has opposite components (out of phase). $\det K = 3$ equals the product of the eigenvalues.

Why this matters at scale

Our matrix was $2 \times 2$, but the method is exactly what commercial engineering software runs. A finite-element model of a turbine blade or an aircraft wing discretizes the structure into thousands or millions of small elements, producing a stiffness matrix $K$ and a mass matrix $M$ of enormous size. The natural frequencies solve the generalized eigenvalue problem $K\mathbf{v} = \omega^2 M\mathbf{v}$ (when the masses are not all equal, $M$ is not the identity and rides along on the right). The lowest few eigenvalues — the fundamental modes — are the ones that matter, because they are the easiest for wind, traffic, or an engine to excite.

And here the chapter's closing warning becomes a daily engineering reality. Nobody forms the characteristic polynomial of a million-by-million matrix; it would be both impossible to write and numerically hopeless (§24.10). Instead, solvers use iterative eigenvalue methods — Lanczos and Arnoldi iterations, close relatives of the power iteration of Chapter 23 and the QR algorithm of Chapter 38 — that extract just the lowest handful of modes without ever touching a polynomial. The understanding comes from the characteristic equation; the computation comes from iteration. An engineer who grasps the $2 \times 2$ by hand and trusts the solver for the million-by-million has exactly the right division of labor, and a bridge that does not shake itself apart.