SCHUR

Purpose:

Computes the Schur decomposition of a square matrix.

Syntax:

SCHUR(a)

(u, s) = SCHUR(a)

a

-

A square matrix.

Returns:

A matrix.

 

(u, s) = schur(matrix) returns the separate unit Schur and Schur components such that u *^ s *^ u' == a and u' *^ u == a.

Example:

A = {{1, 3,  4},

     {5, 6,  7}, 

     {8, 9, 12}} 

 

schur(A) == {{19.964, 4.353,   2.2431},

             { 0.0,  -1.4739, -0.1399}, 

             { 0.0,   0.0,     0.50976}} 

 

uschur(A) == {{-0.25387, -0.96612, -0.046551},

              {-0.50456,  0.17334, -0.84579}, 

              {-0.82521,  0.19124,  0.53147}} 

Example:

A = {{1, 3,  4},

     {5, 6,  7}, 

     {8, 9, 12}} 

 

(u, s) = schur(A)

 

u == {{-0.25387, -0.96612, -0.046551},

      {-0.50456,  0.17334, -0.84579}, 

      {-0.82521,  0.19124,  0.53147}} 

 

s == {{19.964, 4.353,   2.2431},

      { 0.0,  -1.4739, -0.1399}, 

      { 0.0,   0.0,     0.50976}} 

 

u *^ s *^ u' == {{1, 3,  4},

                 {5, 6,  7}, 

                 {8, 9, 12}} 

Remarks:

For matrix A, SCHUR and USCHUR produce matrixes such that:

 

A == (uschur(A) *^ schur(A)) *^ transpose(uschur(A))

 

If the matrix is real, SCHUR returns the real Schur form which has the real eigenvalues on the diagonal and the complex eigenvalues in 2-by-2 blocks on the diagonal.

 

If the matrix is complex, SCHUR returns the complex Schur form which is upper triangular with the eigenvalues of the matrix on the diagonal.

 

See DADiSP/MatrixXL to significantly optimize SCHUR.

See Also:

*^ (Matrix Multiply)

DADiSP/MatrixXL

EIG

HESS

MMULT

TRANSPOSE

USCHUR