Main Content


Schur decomposition


T = schur(A)
T = schur(A,flag)
[U,T] = schur(A,...)


The schur function computes the Schur form of a matrix.

T = schur(A) returns the Schur matrix T.

T = schur(A,flag) for real matrix A, returns a Schur matrix T in one of two forms depending on the value of flag:


T is triangular and is complex if A is real and has complex eigenvalues.


T has the real eigenvalues on the diagonal and the complex eigenvalues in 2-by-2 blocks on the diagonal. 'real' is the default when A is real.

If A is complex, schur returns the complex Schur form in matrix T and flag is ignored. The complex Schur form is upper triangular with the eigenvalues of A on the diagonal.

The function rsf2csf converts the real Schur form to the complex Schur form.

[U,T] = schur(A,...) also returns a unitary matrix U so that A = U*T*U' and U'*U = eye(size(A)).


H is a 3-by-3 eigenvalue test matrix:

H = [ -149    -50   -154
       537    180    546
       -27     -9    -25 ]

Its Schur form is


ans =
     1.0000   -7.1119 -815.8706
          0    2.0000  -55.0236
          0         0    3.0000

The eigenvalues, which in this case are 1, 2, and 3, are on the diagonal. The fact that the off-diagonal elements are so large indicates that this matrix has poorly conditioned eigenvalues; small changes in the matrix elements produce relatively large changes in its eigenvalues.

Extended Capabilities

Version History

Introduced before R2006a

See Also

| | |