TSparseMtx::EigSymGen Method

int EigSymGen(TSparseMtx *B, TVec *D, TVec *R, TMtx *V, int &EigCount, double &EpsOut, double Minimum, double Maximum, DewArray<int> &fpm);

Computes eigenvalues and eigenvectors for generalized symmetric (hermitian) sparse problem.

#NameTypeDescription
1BTSparseMtx *The symmetric positive definite matrix.
2DTVec *Returns the eigenvalues.
3RTVec *Returns the relative residual vector
4VTMtx *Returns the eigenvectors in rows. Pass nil for this paramter, if you dont require eigen-vectors,
5EigCountint &Contains estimated eigenvalue on input and actual count on return.
6EpsOutdouble &Returns the contains the relative error on the trace: |trac[i] - trace[i-1]|/Max(|Maximum|, |sMinimum|)
7MinimumdoubleStart of the search interval.
8MaximumdoubleStop of the search interval.
9fpmDewArray<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

Remarks:

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.

Declared in Dew::Math::TSparseMtx · Dew.Math/sparse.h · Cross-compiler