Case Study 27.2 — Principal Stresses in a Loaded Beam: The Stress Tensor Is Symmetric
Field: mechanical & civil engineering (solid mechanics). Anchor tie-in: this is the §27.1 "pure stretch along perpendicular axes" picture doing real structural work; the principal directions come from the orthogonal eigenvectors of §27.5, and the technique is the principal axis theorem of §27.11.
The problem
A structural engineer is analyzing a steel bracket under load. At a point inside the metal, the internal forces are described not by a single number but by a stress tensor — a $2\times 2$ matrix (in plane stress) that records how much the material is being pushed or pulled across surfaces of every orientation. In the engineer's chosen $x$–$y$ coordinate frame, suppose the stress state at the critical point is
$$\sigma = \begin{bmatrix} \sigma_{xx} & \tau_{xy} \\ \tau_{xy} & \sigma_{yy} \end{bmatrix} = \begin{bmatrix} 50 & 30 \\ 30 & -10 \end{bmatrix} \;\text{MPa},$$
where $\sigma_{xx} = 50$ MPa is the normal (pull) stress on a vertical face, $\sigma_{yy} = -10$ MPa is the normal (push) stress on a horizontal face, and $\tau_{xy} = 30$ MPa is the shear stress that acts tangentially. The off-diagonal shear is what makes this awkward: the material is simultaneously being pulled, pushed, and sheared, and in this coordinate frame it is not obvious whether the bracket will fail, or in which direction a crack would run.
The decisive structural fact — and the reason this chapter governs the whole analysis — is that the stress tensor is symmetric: $\tau_{xy} = \tau_{yx}$. This is not a modeling choice; it is a theorem of mechanics (the conservation of angular momentum of a material element, sometimes called the symmetry of the Cauchy stress tensor). If the shear stresses across perpendicular faces were unequal, the tiny material element would experience a net torque and spin up infinitely fast — physically impossible. So $\sigma = \sigma^{\mathsf{T}}$ always, and the Spectral Theorem applies. The engineer's central question — what is the largest stress the material feels, and in what direction? — is exactly an eigenvalue problem.
Principal stresses are eigenvalues; principal directions are eigenvectors
The Spectral Theorem says the symmetric $\sigma$ can be orthogonally diagonalized, $\sigma = Q\Lambda Q^{\mathsf{T}}$. The eigenvalues are called the principal stresses and the eigenvectors the principal directions, and they have a vivid physical meaning that the geometry of §27.1 makes inevitable. Recall that a symmetric matrix is a pure stretch along perpendicular axes, with no shear. So in the coordinate frame aligned with the eigenvectors, the stress tensor becomes purely diagonal — the shear stress vanishes entirely. There exists a special orientation of a little square cut from the metal at which the material is being only pulled or pushed straight on, with no tangential dragging at all. Those orientations are the principal directions, and the pure pull/push values are the principal stresses.
Let us compute them. The characteristic polynomial of $\sigma$ is
$$\det(\sigma - \lambda I) = (50 - \lambda)(-10 - \lambda) - 30^2 = \lambda^2 - 40\lambda - 1400 = 0,$$
so by the quadratic formula $\lambda = 20 \pm \sqrt{20^2 + 1400} = 20 \pm \sqrt{1800} = 20 \pm 30\sqrt 2$. Numerically the principal stresses are
$$\sigma_1 = 20 + 30\sqrt2 \approx 62.43\;\text{MPa}, \qquad \sigma_2 = 20 - 30\sqrt2 \approx -22.43\;\text{MPa}.$$
The largest tension the material feels anywhere, in any orientation, is about $62.4$ MPa — and notice it is larger than either diagonal entry of the original tensor ($50$ or $-10$). The shear stress, hidden in the off-diagonal, was "boosting" the effective pull beyond what the straight-on numbers suggested. This is precisely why an engineer cannot just read failure off the diagonal entries: the principal stress, the eigenvalue, is the true worst case.
# Principal stresses are eigenvalues of the (symmetric) stress tensor; eigh finds them.
import numpy as np
sigma = np.array([[50.0, 30.0],
[30.0, -10.0]]) # symmetric stress tensor (MPa)
print("symmetric (τ_xy = τ_yx)?", np.allclose(sigma, sigma.T))
w, Q = np.linalg.eigh(sigma)
print("principal stresses (eigenvalues):", np.round(w, 4)) # [-22.43, 62.43]
print("principal directions (columns of Q):\n", np.round(Q, 4))
print("directions perpendicular? q1·q2 =", round(Q[:, 0] @ Q[:, 1], 12))
# In the principal frame the shear vanishes — the tensor is diagonal:
print("Q^T σ Q (principal frame) =\n", np.round(Q.T @ sigma @ Q, 6))
symmetric (τ_xy = τ_yx)? True
principal stresses (eigenvalues): [-22.4264 62.4264]
principal directions (columns of Q):
[[ 0.3827 -0.9239]
[-0.9239 -0.3827]]
directions perpendicular? q1·q2 = 0.0
Q^T σ Q (principal frame) =
[[-22.4264 0. ]
[ 0. 62.4264]]
The output confirms the whole physical story. The two principal directions are perpendicular (dot product exactly $0$, the §27.5 guarantee). And changing into the principal frame, $Q^{\mathsf{T}}\sigma Q$, produces a purely diagonal tensor — the off-diagonal shear is exactly zero. There really is an orientation — the principal axis of maximum tension lies about $22.5°$ from the $x$-axis (its perpendicular partner at $112.5°$) — at which a square element of the steel feels no shear, only a $62.4$ MPa pull along one principal axis and a $22.4$ MPa compression along the perpendicular one. The Spectral Theorem did not just compute numbers; it found the natural coordinate system of the stress state.
Why the engineer cares: failure and maximum shear
Principal stresses are the foundation of every failure criterion in structural design, and the reason is the orthogonal-stretch geometry. Brittle materials (cast iron, concrete, glass) crack perpendicular to the direction of maximum tensile principal stress — so the larger eigenvalue $\sigma_1 \approx 62.4$ MPa, compared against the material's tensile strength, predicts whether the bracket cracks, and the corresponding principal direction predicts which way the crack runs. The eigenvector is the crack's normal. An engineer who only looked at the $50$ MPa in the original frame would underestimate the peak stress by $25\%$ and might certify a bracket that will fail.
The principal stresses also deliver the maximum shear stress, which governs the failure of ductile materials like structural steel (they yield by sliding, driven by shear). A short computation shows the largest shear over all orientations is exactly half the difference of the principal stresses:
$$\tau_{\max} = \frac{\sigma_1 - \sigma_2}{2} = \frac{62.43 - (-22.43)}{2} \approx 42.43\;\text{MPa}.$$
This is the spread of the eigenvalues, halved — a fact that falls straight out of the diagonalized form, since once the tensor is $\operatorname{diag}(\sigma_1, \sigma_2)$, the shear on a $45°$ plane is $(\sigma_1 - \sigma_2)/2$. Engineers visualize all of this with Mohr's circle, a classic graphical construction that is, in modern language, nothing but a picture of the eigenvalues and eigenvectors of a symmetric $2\times 2$ matrix: the circle's center is the average stress $(\sigma_1 + \sigma_2)/2$ (the trace over two, §27.7.3), its radius is the maximum shear $\tau_{\max}$, and its intercepts on the horizontal axis are the principal stresses. Generations of engineers learned Mohr's circle as a standalone trick; it is the Spectral Theorem in disguise.
The same theorem, the same picture, a different field
It is worth pausing on how identical the mathematics here is to Case Study 27.1's covariance matrix, despite the utterly different domains. There, a symmetric covariance matrix had eigenvectors that were the principal components of data variance; here, a symmetric stress tensor has eigenvectors that are the principal directions of mechanical stress. In both cases the symmetric matrix is a pure stretch along perpendicular axes (§27.1); in both the eigenvectors are orthogonal (§27.5); in both the diagonalized form strips away the confusing off-diagonal coupling (covariance in one, shear in the other); and in both the eigenvalues are the physically meaningful extremes (maximum variance, maximum stress). This is the book's recurring theme made concrete: the same linear algebra solves problems across every field. The engineer computing whether a bracket cracks and the data scientist compressing a dataset are running the identical algorithm — orthogonal diagonalization of a symmetric matrix — and both rely on the Spectral Theorem's guarantee that the eigen-axes are real and perpendicular.
The generalization to 3D is immediate and is what real structural analysis uses: a 3D stress state is a symmetric $3\times 3$ tensor, with three real principal stresses and three mutually perpendicular principal directions, found by np.linalg.eigh exactly as above. The same is true of the moment-of-inertia tensor that governs how a rigid body spins (its eigenvectors are the body's principal axes of rotation) and the strain tensor that records deformation. Every one of these is symmetric for a physical reason, and every one is therefore handed its complete structure — real eigenvalues, orthogonal eigen-axes, a shear-free principal frame — by the theorem of this chapter.
Takeaways
- A stress tensor is symmetric for a physical reason (conservation of angular momentum: $\tau_{xy} = \tau_{yx}$), so the Spectral Theorem applies and guarantees real principal stresses and perpendicular principal directions.
- The principal stresses are the eigenvalues and the principal directions are the eigenvectors; in the principal frame ($Q^{\mathsf{T}}\sigma Q$) the shear vanishes — this is the "pure stretch along perpendicular axes" geometry of §27.1.
- The maximum principal stress can exceed every diagonal entry of the original tensor (here $62.4 > 50$ MPa), which is why failure must be judged by eigenvalues, not by the raw coordinate-frame numbers.
- The maximum shear stress is half the eigenvalue spread, $(\sigma_1 - \sigma_2)/2$, and the classic Mohr's circle is just a visualization of a symmetric matrix's spectral data.
- The mathematics is identical to PCA (Case Study 27.1) and to the inertia and strain tensors — one theorem, the orthogonal diagonalization of a symmetric matrix, serving data science, mechanics, and physics alike.