int EigSym(TVec *D, TVec *R, TMtx *V, int &EigCount, double &EpsOut, double Minimum, double Maximum, DewArray<int> &fpm);
Computes eigenvalues and eigenvectors for symmetric (hermitian) sparse matrix.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | D | TVec * | Returns the eigenvalues. |
| 2 | R | TVec * | Returns the relative residual vector |
| 3 | V | TMtx * | Returns the eigenvectors in rows. On Input, the matrix can contain estimate of eigenvectors, otherwise V.Length must be zero. |
| 4 | EigCount | int & | Contains estimated eigenvalue on input and actual count on return. |
| 5 | EpsOut | double & | Contains the relative error on the trace: |trac[i] - trace[i-1]|/Max(|Maximum|, |sMinimum|) |
| 6 | Minimum | double | Start of the search interval. |
| 7 | Maximum | double | Stop of the search interval. |
| 8 | fpm | DewArray<int> & | Processing parameter list. Leave nil, to use default values. |
Returns: 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.
The quadratic sparse matrix is expected to store only lower triangular part including the main diagonal.