Where Volume I left diagonalization
Volume I gave you diagonalization: an operator A is diagonalizable when it has an eigenbasis, so A = P D P^-1. But two things were left unsettled. First, not every operator diagonalizes at all — defective ones don't. Second, even when P exists, its columns are usually just *some* basis: not orthogonal, so P^-1 is an awkward inverse rather than a clean transpose.
The spectral theorem fixes both defects at once for a special class of operators. For these operators an orthonormal basis of eigenvectors *always* exists, so the change-of-basis matrix is an orthogonal matrix Q with Q^-1 = Q^T. Diagonalization becomes A = Q D Q^T — geometry-preserving, numerically stable, and unconditionally guaranteed.
Symmetric means self-adjoint
The special class is the symmetric (real) operators: A = A^T. The reason this matters is that symmetry is the matrix shadow of an inner-product condition. A real operator is *self-adjoint* when <Ax, y> = <x, Ay> for all x, y, and over R^n with the standard dot product that is exactly A = A^T. The spectral theorem for self-adjoint operators is best stated in this inner-product language because it is the symmetry, not the bookkeeping, that does the work.
Why eigenvalues are real (the one-line argument):
let A v = lambda v, v != 0. Take the inner product with v:
lambda <v, v> = <A v, v> = <v, A v> = conj(lambda) <v, v>
since <v, v> > 0, lambda = conj(lambda) => lambda is REAL.
Why eigenvectors are orthogonal across distinct eigenvalues:
A u = a u, A w = b w, a != b:
a <u, w> = <A u, w> = <u, A w> = b <u, w>
(a - b) <u, w> = 0 and a != b => <u, w> = 0.The real spectral theorem, stated and used
Putting it together: a real operator is orthogonally diagonalizable if and only if it is symmetric. That is the real spectral theorem, and the matrix form is the orthogonal eigendecomposition A = Q D Q^T with Q orthogonal and D real diagonal. There is no multiplicity test to pass and no field to worry about — symmetry alone delivers a full orthonormal eigenbasis, even when eigenvalues repeat.
A = [2, 1; 1, 2] # symmetric: A = A^T characteristic poly: det(A - x I) = (2 - x)^2 - 1 = x^2 - 4x + 3 eigenvalues: lambda_1 = 3, lambda_2 = 1 (both real, as promised) eigenvectors: lambda = 3: (A - 3I) v = 0 -> v_1 = (1, 1) lambda = 1: (A - 1I) v = 0 -> v_2 = (1, -1) check <v_1, v_2> = 1 - 1 = 0 -> already orthogonal! normalize and stack into Q: q_1 = (1, 1)/sqrt(2), q_2 = (1, -1)/sqrt(2) Q = [ 1/sqrt2, 1/sqrt2 ; 1/sqrt2, -1/sqrt2 ] (Q^T Q = I) then A = Q D Q^T with D = diag(3, 1).
Notice the eigenvectors came out orthogonal for free. When an eigenvalue repeats, its eigenspace is multi-dimensional and you choose any Gram-Schmidt-orthonormalized basis inside it; eigenspaces for different eigenvalues are already orthogonal, so the pieces fit together into one orthonormal eigenbasis. The subtleties of the real theorem all concern this repeated-eigenvalue freedom — we will see the complex story in Guide 2.