Matrix.EigSchureGen Method

procedure EigSchureGen(B: TMtx; DAlpha: TVec; DBeta: TVec; VL: TMtx; VR: TMtx; S: TMtx; T: TMtx; rconde: TVec; rcondv: TVec; Select: TSelectThreeFunction; cSelect: TSelectTwoFunctionC; SelectSingle: TSelectThreeFunctionSingle; cSelectSingle: TSelectTwoFunctionSingleC);

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

#NameTypeDescription
1BTMtxsource TMtx
2DAlphaTVecsource TVec
3DBetaTVecsource TVec
4VLTMtxsource TMtx
5VRTMtxsource TMtx
6STMtxsource TMtx
7TTMtxsource TMtx
8rcondeTVecsource TVec
9rcondvTVecsource TVec
10SelectTSelectThreeFunction
11cSelectTSelectTwoFunctionC
12SelectSingleTSelectThreeFunctionSingle
13cSelectSingleTSelectTwoFunctionSingleC

Result: stored in self (calling object)

Remarks:

It gives Schur factorization (A = Self) :

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

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

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

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.