Overload List
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.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | B | TMtx * | |
| 2 | DAlpha | TVec * | |
| 3 | DBeta | TVec * | |
| 4 | VL | TMtx * | |
| 5 | VR | TMtx * | |
| 6 | S | TMtx * | |
| 7 | T | TMtx * | |
| 8 | rconde | TVec * | |
| 9 | rcondv | TVec * | |
| 10 | dSelect = null | TSelectThreeFunction | |
| 11 | zSelect = null | TSelectTwoFunctionC | |
| 12 | sSelect = null | TSelectThreeFunctionSingle | |
| 13 | cSelect = null | TSelectTwoFunctionSingleC |
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.
Overload 2: void EigSchureGen(TMtx *B, TVec *DAlpha, TVec *DBeta, TSelectThreeFunction dSelect = null, TSelectTwoFunctionC zSelect = null, TSelectThreeFunctionSingle sSelect = null, TSelectTwoFunctionSingleC cSelect = null);
| # | Name | Type | Description |
|---|---|---|---|
| 1 | B | TMtx * | |
| 2 | DAlpha | TVec * | |
| 3 | DBeta | TVec * | |
| 4 | dSelect = null | TSelectThreeFunction | |
| 5 | zSelect = null | TSelectTwoFunctionC | |
| 6 | sSelect = null | TSelectThreeFunctionSingle | |
| 7 | cSelect = null | TSelectTwoFunctionSingleC |