Schur

Advanced Analysis Library Only

AnalysisLibErrType Schur (void *inputMatrix, int matrixSize, int order, void *orthogonalMatrix, void *schurMatrix, NIComplexNumber eigenvalues[]);

Purpose

Computes the Schur decomposition of a real matrix A. Schur decomposition decomposes a real matrix as follows:

A = QSQH

whereQ is a real orthogonal matrix composed of Schur vectors.
S is a real Schur form matrix, which is upper quasi-triangular with 1*1 and 2*2 blocks on its diagonal. The 2*2 matrix has complex conjugate eigenvalues of A.
QH is the transpose of Q.

Parameters

Input
Name Type Description
inputMatrix numeric array The input matrix.
matrixSize integer The order of inputMatrix.
order integer Specifies how to reorder the computed eigenvalues and corresponding Schur vectors. order must be one of the following values:
  • None: The computed eigenvalues are not reordered.
  • REAL_ASCENDING: Reorders the eigenvalues and corresponding Schur vectors in real part ascending order.
  • REAL_DESCENDING: Reorders the eigenvalues and corresponding Schur vectors in real part descending order.
  • MAG_ASCENDING: Reorders the eigenvalues and corresponding Schur vectors in magnitude ascending order.
  • MAG_DESCENDING: Reorders the eigenvalues and corresponding Schur vectors in magnitude descending order.
Output
Name Type Description
orthogonalMatrix numeric array The orthogonal matrix Q. On input, if orthogonalMatrix = NULL, Q is not computed.
schurMatrix numeric array The Schur form matrix S. schurMatrix is a quasi-triangular matrix.
eigenvalues complex number array The eigenvalues of inputMatrix, in the same order that they appear on the diagonal of the output real Schur form schurMatrix.

Return Value

Name Type Description
status AnalysisLibErrType A value that specifies the type of error that occurred. Refer to analysis.h for definitions of these constants.