Matrix factorizations
The Schur Decomposition: Every Matrix Is Unitarily Triangular
Take any square matrix with complex entries — no matter how tangled, defective, or non-diagonalizable — and there is a rotation of ℂⁿ (a unitary change of orthonormal basis) that turns it into a clean upper-triangular matrix, with its eigenvalues sitting on the diagonal in whatever order you please. That is the Schur decomposition: A = U T U*, where U is unitary and T is upper triangular. It is the single most useful factorization in numerical linear algebra, and unlike diagonalization it never fails.
Precisely: for every A ∈ ℂⁿˣⁿ there exist a unitary matrix U ∈ ℂⁿˣⁿ (U*U = I) and an upper-triangular matrix T ∈ ℂⁿˣⁿ such that A = U T U*, and the diagonal entries T₁₁, …, Tₙₙ are exactly the eigenvalues of A, counted with algebraic multiplicity, appearing in any prescribed order.
- FieldLinear algebra / matrix analysis
- First provedIssai Schur, 1909
- StatementEvery A ∈ ℂⁿˣⁿ equals U T U* with U unitary, T upper triangular
- Key hypothesisWork over ℂ (algebraically closed field)
- Proof techniqueInduction on n via one eigenvector + Gram–Schmidt (deflation)
- GeneralizesSpectral theorem (T diagonal when A is normal)
Interactive visualization
Press play, or step through manually. The visualization is yours to drive — try it before reading on.
Watch the 60-second explainer
A condensed visual walkthrough — narrated, captioned, under a minute.
The precise statement
Schur's theorem (1909). Let A ∈ ℂⁿˣⁿ. Then there exist a unitary matrix U ∈ ℂⁿˣⁿ (meaning U*U = UU* = I, where U* is the conjugate transpose) and an upper-triangular matrix T ∈ ℂⁿˣⁿ such that
A = U T U*.
The pair (U, T) is a Schur decomposition of A, and T is a Schur form. Two facts pin down what T contains:
- Because U is unitary, A and T are unitarily similar, so they share the same characteristic polynomial. Hence the diagonal entries T₁₁, …, Tₙₙ are precisely the eigenvalues λ₁, …, λₙ of A, listed with algebraic multiplicity.
- The order of those eigenvalues along the diagonal is free: for any prescribed ordering of the spectrum there is a Schur decomposition realizing it. This orderability is what makes the theorem so useful in practice.
The decomposition is not unique — replacing U by U·diag(e^{iθ_k}) leaves a valid Schur form — but the diagonal spectrum is invariant.
The picture: rotate until it's triangular
Diagonalizing A means finding a basis of eigenvectors. The trouble is that a defective matrix simply doesn't have enough eigenvectors, and even when it does, an eigenbasis need not be orthogonal — so P⁻¹ can be wildly ill-conditioned. Schur's theorem asks for less and gets a guarantee in return: instead of demanding a full eigenbasis, we only build an orthonormal basis whose first k vectors span an A-invariant subspace for each k.
Geometrically, T being upper triangular says exactly this: the flag of subspaces V₁ ⊂ V₂ ⊂ ⋯ ⊂ Vₙ = ℂⁿ spanned by the columns of U consecutively is a complete flag of A-invariant subspaces. A(Vₖ) ⊆ Vₖ for every k. Working in an orthonormal basis adapted to this flag, A can only 'point forward or sideways,' never backward — the strictly-lower entries vanish. You are rotating your coordinate frame (never stretching it) until A becomes triangular.
The mechanism: one eigenvector, then deflate
The proof is a clean induction on n, and its engine is the existence of a single eigenvector — which is where ℂ being algebraically closed is used.
- Base case. n = 1: every 1×1 matrix is already triangular.
- One eigenvector. Over ℂ the characteristic polynomial det(λI − A) has a root λ₁, so there is a unit vector u₁ with A u₁ = λ₁ u₁.
- Extend to an orthonormal basis. By Gram–Schmidt, complete u₁ to an orthonormal basis; let U₁ = [u₁ | ⋯] be the unitary matrix with these columns. Then, because the first column is an eigenvector,
U₁* A U₁ = [ λ₁ w* ; 0 A′ ],
a block with a zero first column below λ₁ and an (n−1)×(n−1) block A′ (this is deflation).
- Induct. Apply the theorem to A′: A′ = U′ T′ U′*. Assemble Û = diag(1, U′). Then U = U₁ Û is unitary and U* A U is upper triangular.
Every step uses only Gram–Schmidt and one root — no assumption that A is diagonalizable.
A worked example: a defective 2×2
Take the defective matrix
A = [ 2 1 ; −1 0 ].
Its characteristic polynomial is λ² − 2λ + 1 = (λ − 1)², a repeated eigenvalue λ = 1. Solving (A − I)v = 0 gives (up to scale) only v = (1, −1)ᵀ — a single eigenvector, so A is not diagonalizable. Diagonalization is impossible; Schur still works.
Normalize the eigenvector: u₁ = (1/√2)(1, −1)ᵀ. Complete to an orthonormal basis with u₂ = (1/√2)(1, 1)ᵀ, and set U = (1/√2) [ 1 1 ; −1 1 ]. Then
T = U* A U = [ 1 2 ; 0 1 ].
This is upper triangular with the eigenvalue 1 twice on the diagonal, and the superdiagonal entry 2 records the 'defect' — the amount by which A fails to be diagonal. You can verify U T U* = A directly. Note T here is exactly a scaled Jordan block, but obtained by a unitary change of basis.
Why the hypotheses matter, and the link to the spectral theorem
Algebraic closure is essential. The proof needs one eigenvector, which needs a root of the characteristic polynomial. Over ℝ this can fail: the rotation R = [ 0 −1 ; 1 0 ] has eigenvalues ±i and no real eigenvector, so there is no real orthogonal Q with QᵀRQ upper triangular. The fix is the real Schur form: A = Q S Qᵀ with Q orthogonal and S block-upper-triangular, using 2×2 blocks for conjugate complex eigenvalue pairs.
The spectral theorem is a corollary. Suppose A is normal (A A* = A* A). Its Schur form T is also normal, and a normal upper-triangular matrix must be diagonal (compare diagonal entries of T T* and T* T row by row: the off-diagonal entries are forced to zero). So A = U D U* with D diagonal — A is unitarily diagonalizable. Thus the spectral theorem for Hermitian, unitary, and normal matrices falls straight out of Schur triangularization. Schur also cleanly proves that eigenvalues depend continuously on entries and yields the trace = ∑λᵢ, det = ∏λᵢ identities at a glance.
Why it matters: the workhorse of numerical linear algebra
Schur form is what your computer actually computes when you ask for eigenvalues. The industry-standard QR algorithm (Francis, Kublanovskaya, ~1961) iteratively drives a matrix toward its Schur form using only orthogonal (unitary) transformations — a numerically stable process precisely because unitary maps preserve the 2-norm and don't amplify rounding error, unlike the potentially ill-conditioned P in a diagonalization. LAPACK's core eigensolvers return exactly a Schur decomposition.
- Matrix functions. The Schur–Parlett algorithm evaluates f(A) = U f(T) U* for analytic f (matrix exponential, logarithm, square root) by working on the triangular T, where recurrences run along diagonals.
- Control theory. Solving Sylvester and algebraic Riccati equations, and the ordered Schur form (invariant-subspace deflation), underpin stabilization and the Kalman filter.
- Structured problems. The QZ / generalized Schur form handles the pencil A − λB for generalized eigenvalue problems.
Whenever eigenvalues appear in scientific computing, Schur — not Jordan, not diagonalization — is doing the real work.
| Factorization | Form | Always exists over ℂ? | Basis is orthonormal (unitary)? |
|---|---|---|---|
| Schur | A = U T U*, T upper triangular | Yes, for every square A | Yes |
| Diagonalization | A = P D P⁻¹, D diagonal | No — fails for defective A (e.g. Jordan block) | Only if A is normal |
| Spectral theorem | A = U D U*, D diagonal | Only if A is normal (A A* = A* A) | Yes |
| Jordan form | A = P J P⁻¹, J Jordan blocks | Yes over ℂ | No — P generally ill-conditioned |
| Real Schur | A = Q S Qᵀ, S block-upper-triangular | Yes for real A, staying real | Yes (Q orthogonal) |
Frequently asked questions
Does the Schur decomposition always exist?
Yes — for every square matrix A over ℂ, a Schur decomposition A = UTU* exists. This is exactly what makes it more powerful than diagonalization, which fails for defective matrices. The only requirement is that you work over an algebraically closed field so the characteristic polynomial has a root; over ℝ you use the real (block-triangular) Schur form instead.
Why does the proof need the complex numbers?
The induction rests on producing one eigenvector at each step, and an eigenvector exists only if the characteristic polynomial has a root. ℂ is algebraically closed, so a root always exists. Over ℝ a matrix like the 90° rotation [[0,−1],[1,0]] has eigenvalues ±i and no real eigenvector, so no real orthogonal similarity can triangularize it — hence the need for the real Schur form with 2×2 blocks.
How is the Schur form related to the spectral theorem?
The spectral theorem is a one-line corollary. If A is normal (AA* = A*A), then its Schur form T is normal too, and a normal upper-triangular matrix is necessarily diagonal. So A = UDU* with D diagonal — unitary diagonalizability for all normal (in particular Hermitian and unitary) matrices follows immediately from Schur triangularization.
Is the Schur decomposition unique?
No. You can reorder the eigenvalues along the diagonal (any ordering is achievable), and you can multiply U on the right by any diagonal unitary matrix diag(e^{iθ_k}), which changes T's off-diagonal entries. What is invariant is the multiset of diagonal entries — they are always the eigenvalues counted with algebraic multiplicity.
How does Schur differ from the Jordan canonical form?
Both exist for every complex matrix, but Jordan form uses a general (possibly very ill-conditioned) similarity P and exposes the fine invariant-subspace structure via Jordan blocks. Schur uses a unitary similarity — numerically stable, norm-preserving — but only achieves triangular, not block-diagonal, form. In computation you almost always want Schur; Jordan is a theoretical tool, notoriously unstable to compute.
Can I control the order of eigenvalues on the diagonal?
Yes. For any prescribed ordering of the spectrum there is a Schur decomposition placing the eigenvalues in that order along T's diagonal. This is central in applications: 'ordered Schur' deflation lets you isolate the invariant subspace of, say, the stable eigenvalues, which is exactly what solving algebraic Riccati equations and computing certain matrix functions requires.