# schur

## Purpose

Schur decomposition.

## Synopsis

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

## Description

`schur` computes the Schur form of a matrix. The complex Schur form of a matrix is upper triangular with the eigenvalues of the matrix on the diagonal. The real Schur form has the real eigenvalues on the diagonal and the complex eigenvalues in 2-by-2 blocks on the diagonal.

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

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

If the matrix `A` is real, `schur` returns the real Schur form. If `imag(A)` is nonzero, `schur` returns the complex Schur form. The function `rsf2csf` converts the real form to the complex form.

## Examples

The matrix `gallery(3)` is a 3-by-3 eigenvalue test matrix:

     gallery(3) =

        -149    -50   -154
         537    180    546
         -27     -9    -25

Its Schur form is

     schur(gallery(3)) =

        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.

## Algorithm

For real matrices, `schur` uses the EISPACK routines `ORTRAN`, `ORTHES`, and `HQR2`. `ORTHES` converts a real general matrix to Hessenberg form using orthogonal similarity transformations. `ORTRAN` accumulates the transformations used by `ORTHES`. `HQR2` finds the eigenvalues of a real upper Hessenberg matrix by the QR method.

The EISPACK subroutine `HQR2` has been modified to allow access to the Schur form, ordinarily just an intermediate result, and to make the computation of eigenvectors optional.

When `schur` is used with a complex argument, the solution is computed using the `QZ` algorithm by the EISPACK routines `QZHES`, `QZIT`, `QZVAL`, and `QZVEC`. They have been modified for complex problems and to handle the special case B = I.

For detailed descriptions of these algorithms, see the EISPACK Guide.

## See Also

     eig, hess, qz, rsf2csf

## References

[1] B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe, V. C. Klema, and C. B. Moler, Matrix Eigensystem Routines - EISPACK Guide, Lecture Notes in Computer Science, volume 6, second edition, Springer-Verlag, 1976.

[2] B. S. Garbow, J. M. Boyle, J. J. Dongarra, and C. B. Moler, Matrix Eigensystem Routines - EISPACK Guide Extension, Lecture Notes in Computer Science, volume 51, Springer-Verlag, 1977.

[3] C.B. Moler and G. W. Stewart, "An Algorithm for Generalized Matrix Eigenvalue Problems," SIAM J. Numer. Anal., Vol. 10, No. 2, April 1973.

(c) Copyright 1994 by The MathWorks, Inc.