function EigSymGen(const B: TSparseMtx; const D: TVec; const R: TVec; const V: TMtx; var EigCount: Integer; var EpsOut: Double; Minimum: Double; Maximum: Double; var fpm: TIntegerArray): Integer;
Computes eigenvalues and eigenvectors for generalized symmetric (hermitian) sparse problem.
| # | Name | Description |
|---|---|---|
| 1 | B | The symmetric positive definite matrix. |
| 2 | D | Returns the eigenvalues. |
| 3 | R | Returns the relative residual vector |
| 4 | EpsOut | Returns the contains the relative error on the trace: |trac[i] - trace[i-1]|/Max(|Maximum|, |sMinimum|) |
| 5 | V | Returns the eigenvectors in rows. Pass nil for this paramter, if you dont require eigen-vectors, |
| 6 | Minimum | Start of the search interval. |
| 7 | Maximum | Stop of the search interval. |
| 8 | EigCount | Contains estimated eigenvalue on input and actual count on return. |
| 9 | fpm | Processing parameter list. Leave nil, to use default values. |
Returns: Int32 - The function will return: * 0 on success. * 1 no eigenvalues found in search interval. Try to scale up/down the matrix: (A/t) x=(Lambda/t) x * 2 in case of no convergence (maximum iteration loops specified in fpm(4) exceeded) * 3 There are more eigenvalues present than have been estimated with EigCount
To compute all eigenvalues and eigenvectors would require storage equal to the size of the dense matrix. For this reason, the routine allows computation of eigenvectors and eigenvalues only within a specified range. The expected number of eigenvalues within the Interval [Minimum, Maximum] is specified with EigCount. If the function returns with a different EigCount, the initial estimate needs to be adjusted, because there was not enough storage to store the result.
Matrix A is expected to be symmetric and B must be symmetric and positive definite (Hermitian). Both matrices are expected to store only lower triangular part. Size of A and B is expected to be equal and both matrices are to be quadratic.