MatrixSchur
MatrixSchur [/Z] srcMatrix
The MatrixSchur operation computes for an NxN nonsymmetric srcMatrix, the eigenvalues, the real Schur form A and the matrix of Schur vectors V.
The Schur factorization has the form: srcMatrix = M_V x M_A x (M_V^T), where M_V^T is the transpose (use M_V^H if srcMatrix is complex) and x denotes matrix multiplication.
Flags
| /DSTA=aWave | Specify the output Schur matrix M_A. If you do not use this flag, the operation saves the matrix in the wave M_A in the current data folder. | |
| This flag was added in Igor Pro 10. | ||
| /DSTE=eWave | Specify the complex eigenvalues wave. The eigenvalues are not ordered. When this flag is used, /DSTI and /DSTR are disabled. | |
| This flag was added in Igor Pro 10. | ||
| /DSTI=iWave | Specify the output wave for the imaginary part of the eigenvalues. If you do not specify this flag (or /DSTE), the operation saves the data in the wave W_IEigenValues in the current data folder. | |
| This flag was added in Igor Pro 10. | ||
| /DSTR=rWave | Specify the output wave for the real part of the eigenvalues. If you do not specify this flag (or /DSTE) the operation saves the data in the wave W_REigenValues in the current data folder. | |
| This flag was added in Igor Pro 10. | ||
| /DSTV=vWave | Specify the output orthogonal matrix of Schur vectors M_V. If you do not specify this flag, the operation saves the data in the wave M_V in the current data folder. | |
| This flag was added in Igor Pro 10. | ||
| /FREE | Creates all destination waves as free waves. This flag does not affect any of the output waves that are created by default without a user-specified destination. | |
| /FREE is allowed only in functions, and only if the destination waves are simple names or wave reference structure fields. | ||
| See Free Waves for more discussion. | ||
| The /FREE flag was added in Igor Pro 10.00. | ||
| /Z | No error reporting. | |
Details
The operation creates:
| M_A | Upper triangular matrix containing the Schur form A. | |
| M_V | Unitary matrix containing the orthogonal matrix V of the Schur vectors. | |
| W_REigenValues | ||
| W_IEigenValues | Waves containing the real and imaginary parts of the eigenvalues when srcMatrix is a real wave. If srcMatrix is complex, the eigenvalues are stored in W_EigenValues. | |
| The eigenvalues in both cases are complex. Due to LAPACK, the result is packed in two waves (real and imaginary) when the input wave is real. When srcWave is complex, the eigenvalues are packed in a single wave. | ||
The variable V_flag is set to 0 when there is no error; otherwise it contains the LAPACK error code.
Examples
You can test this operation for an N-by-N source matrix:
Make/D/C/N=(5,5) M_S=cmplx(enoise(1),enoise(1))
MatrixSchur M_S
MatrixOp/O unitary=(M_V^h) x M_V // check unitary
MatrixOp/O diff=abs(M_S-M_V x M_A x (M_V^H)) // check decomposition
See Also
Matrix Math Operations for more about Igor's matrix routines and for background references with details about the LAPACK libraries.