![]() |
RDKit
Open-source cheminformatics and machine learning.
|
Functions | |
| bool RDKIT_EIGENSOLVERS_EXPORT | powerEigenSolver (unsigned int numEig, DoubleSymmMatrix &mat, DoubleVector &eigenValues, DoubleMatrix *eigenVectors=nullptr, int seed=-1) |
| static bool | powerEigenSolver (unsigned int numEig, DoubleSymmMatrix &mat, DoubleVector &eigenValues, DoubleMatrix &eigenVectors, int seed=-1) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
|
inlinestatic |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 60 of file PowerEigenSolver.h.
References powerEigenSolver().
| bool RDKIT_EIGENSOLVERS_EXPORT RDNumeric::EigenSolvers::powerEigenSolver | ( | unsigned int | numEig, |
| DoubleSymmMatrix & | mat, | ||
| DoubleVector & | eigenValues, | ||
| DoubleMatrix * | eigenVectors = nullptr, | ||
| int | seed = -1 ) |
Compute the numEig largest eigenvalues and, optionally, the corresponding eigenvectors.
| numEig | the number of eigenvalues we are interested in |
| mat | symmetric input matrix of dimension N*N |
| eigenValues | Vector used to return the eigenvalues (size = numEig) |
| eigenVectors | Optional matrix used to return the eigenvectors (size = N*numEig) |
| seed | Optional values to seed the random value generator used to initialize the eigen vectors |
Notes:
mat, is changed in this functionAlgorithm:
We use the iterative power method, which works like this:
u = arbitrary unit vector
tol = 0.001
currEigVal = 0.0;
prevEigVal = -1.0e100
while (abs(currEigVal - prevEigVal) > tol) :
v = Au
prevEigVal = currEigVal
currEigVal = v[i] // where i is the id of the largest absolute component
u = c*v
References RDKIT_EIGENSOLVERS_EXPORT.
Referenced by powerEigenSolver().