SchurDecomposition
yields the Schur decomposition for a numerical matrix m, given as a list {q,t} where q is an orthonormal matrix and t is a block upper‐triangular matrix.
SchurDecomposition[{m,a}]
gives the generalized Schur decomposition of m with respect to a.
Details and Options

- The original matrix m is equal to q.t.ConjugateTranspose[q]. »
- The matrix m must be square.
- SchurDecomposition[m,Pivoting->True] yields a list {q,t,d} where d is a permuted diagonal matrix such that m.d is equal to d.q.t.ConjugateTranspose[q]. »
- SchurDecomposition[{m,a}] yields a list of matrices {q,s,p,t} where q and p are orthonormal matrices, and s and t are upper‐triangular matrices, such that m is given by q.s.ConjugateTranspose[p], and a is given by q.t.ConjugateTranspose[p] . »
- For real-valued matrices m, setting the option RealBlockDiagonalForm->False allows complex values on the diagonal of the t matrix.
Examples
open allclose allScope (7)
Find the Schur decomposition of a machine-precision matrix:
Schur decomposition of a complex matrix:
Consider a real-valued matrix with complex eigenvalues:
Compute its Schur decomposition:
All entries in the decomposition are real:
The matrix is block-upper triangular, with entries along the first subdiagonal, but not upper triangular:
RealBlockDiagonalFormFalse makes upper triangular at the cost of complex entries:
Schur decomposition of an arbitrary-precision matrix:
Schur decomposition of sparse matrices:
Schur decomposition a structured matrix of type SymmetrizedArray:
Generalized Schur decomposition for a pair of matrices m and a:
Options (2)
Pivoting (1)
With Pivoting->True, an extra matrix that represents the scaling and permutation is returned:
Verify that m.d is equal to d.q.t.ConjugateTranspose[q]:
RealBlockDiagonalForm (1)
m is a matrix with two real and two complex eigenvalues:
With RealBlockDiagonalForm->False, the result is complex upper triangular:
With RealBlockDiagonalForm->True, there are real 2×2 blocks along the diagonal:
Applications (1)
Properties & Relations (3)
m is a matrix with two real and two complex eigenvalues:
Find the Schur decomposition of m:
The real eigenvalues appear on the diagonal of t, the complex as a 2×2 block:
Verify that m is equal to q.t.ConjugateTranspose[q]:
m and a are random 3×3 matrices:
Find the generalized Schur decomposition of m with respect to a:
Verify that m is given by q.s.ConjugateTranspose[p]:
Verify that a is given by q.t.ConjugateTranspose[p]:
m is a symmetric random matrix:
Find the Schur decomposition of m:
t is a diagonal matrix with the eigenvalues of m along the diagonal:
Possible Issues (1)
m is a matrix with exact integer valued entries:
SchurDecomposition only works with approximate numerical matrices:

For exact matrices, use JordanDecomposition:
Text
Wolfram Research (1991), SchurDecomposition, Wolfram Language function, https://reference.wolfram.com/language/ref/SchurDecomposition.html (updated 2008).
BibTeX
BibLaTeX
CMS
Wolfram Language. 1991. "SchurDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2008. https://reference.wolfram.com/language/ref/SchurDecomposition.html.
APA
Wolfram Language. (1991). SchurDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SchurDecomposition.html