TMtx::EigSchureGen Method

Overload List

#SignatureDescription
1void EigSchureGen(TMtx *B, TVec *DAlpha, TVec *DBeta, TMtx *VL, TMtx *VR, TMtx *S, TMtx *T, TVec *rconde, TVec *rcondv, TSelectThreeFunction dSelect = null, TSelectTwoFunctionC zSelect = null, TSelectThreeFunctionSingle sSelect = null, TSelectTwoFunctionSingleC cSelect = null);Computes generalized eigenvalues and Schur vectors of a non-symmetric matrix.
2void EigSchureGen(TMtx *B, TVec *DAlpha, TVec *DBeta, TSelectThreeFunction dSelect = null, TSelectTwoFunctionC zSelect = null, TSelectThreeFunctionSingle sSelect = null, TSelectTwoFunctionSingleC cSelect = null);

Overload 1: void EigSchureGen(TMtx *B, TVec *DAlpha, TVec *DBeta, TMtx *VL, TMtx *VR, TMtx *S, TMtx *T, TVec *rconde, TVec *rcondv, TSelectThreeFunction dSelect = null, TSelectTwoFunctionC zSelect = null, TSelectThreeFunctionSingle sSelect = null, TSelectTwoFunctionSingleC cSelect = null);

Computes generalized eigenvalues and Schur vectors of a non-symmetric matrix.

#NameTypeDescription
1BTMtx *
2DAlphaTVec *
3DBetaTVec *
4VLTMtx *
5VRTMtx *
6STMtx *
7TTMtx *
8rcondeTVec *
9rcondvTVec *
10dSelect = nullTSelectThreeFunction
11zSelect = nullTSelectTwoFunctionC
12sSelect = nullTSelectThreeFunctionSingle
13cSelect = nullTSelectTwoFunctionSingleC
Remarks:

It gives Schur factorization (A = Self) :

(A,B) = ( VL S VR^T, VL T VR^T )

If only the generalized eigenvalues are needded then EigGen is faster. The individual eigevalues can be computed as:

lambda(j) = dAlpha(j) / dBeta(j) ;

If any of the VL, VR, S, T, rconde, rcondv are not required, pass nil value for the pointer.

Optionally the routine also orders the eigenvalues on the diagonal of the Schur form so that selected eigenvalues are at the top left. The Select function parameters accepts a function with four parameters. In case of real data, the first is the real and the second is the imaginary part of the eigenvalue (alpha), the third is the real beta. In case of complex data, first two are complex dAlpha and the second two complex dBeta. The function is to return true, if the specified eigenvalue is to be included in to sorting at the top left of the Schur form. If sorting is not required pass nil (NULL) for this parameter.

Optionally computes a reciprocal condition number for the average of the selected eigenvalues (rconde[0], rconde[1]) and computes a reciprocal condition number for the selected deflating subspaces (rcondv[0], rcondv[1]). If condition numbers are not required, pass nil (NULL) for this parameter.

Declared in Dew::Math::TMtx · Dew.Math/MtxVec.h · Cross-compiler

Overload 2: void EigSchureGen(TMtx *B, TVec *DAlpha, TVec *DBeta, TSelectThreeFunction dSelect = null, TSelectTwoFunctionC zSelect = null, TSelectThreeFunctionSingle sSelect = null, TSelectTwoFunctionSingleC cSelect = null);

#NameTypeDescription
1BTMtx *
2DAlphaTVec *
3DBetaTVec *
4dSelect = nullTSelectThreeFunction
5zSelect = nullTSelectTwoFunctionC
6sSelect = nullTSelectThreeFunctionSingle
7cSelect = nullTSelectTwoFunctionSingleC
Declared in Dew::Math::TMtx · Dew.Math/MtxVec.h · Cross-compiler