SCHUR
Purpose:
Computes the Schur decomposition of a square matrix.
Syntax:
SCHUR(a)
(u, s) = SCHUR(a)
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