MATLAB Function Reference
schur

Schur decomposition

Syntax

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

Description

The `schur` command 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`:

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

If `A` is complex, `schur` returns the complex Schur form in matrix `T`. 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))`.

Examples

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

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

Its Schur form is

• ```schur(`H`)

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.

Algorithm

`schur` uses LAPACK routines to compute the Schur form of a matrix:

 Matrix A Routine Real symmetric `DSYTRD`, `DSTEQR``DSYTRD`, `DORGTR`, `DSTEQR` (with output `U`) Real nonsymmetric `DGEHRD`, `DHSEQR``DGEHRD`, `DORGHR`, `DHSEQR` (with output `U`) Complex Hermitian `ZHETRD`, `ZSTEQR``ZHETRD`, `ZUNGTR`, `ZSTEQR` (with output `U`) Non-Hermitian `ZGEHRD`, `ZHSEQR``ZGEHRD`, `ZUNGHR`, `ZHSEQR` (with output `U`)

`eig`, `hess`, `qz`, `rsf2csf`