Functions | |
| bool | powerEigenSolver (unsigned int numEig, DoubleSymmMatrix &mat, DoubleVector &eigenValues, DoubleMatrix *eigenVectors=0, int seed=-1) |
| static bool | powerEigenSolver (unsigned int numEig, DoubleSymmMatrix &mat, DoubleVector &eigenValues, DoubleMatrix &eigenVectors, int seed=-1) |
| bool RDNumeric::EigenSolvers::powerEigenSolver | ( | unsigned int | numEig, | |
| DoubleSymmMatrix & | mat, | |||
| DoubleVector & | eigenValues, | |||
| DoubleMatrix * | eigenVectors = 0, |
|||
| 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 os the largest absolute component
u = c*v
Referenced by powerEigenSolver().
| static bool RDNumeric::EigenSolvers::powerEigenSolver | ( | unsigned int | numEig, | |
| DoubleSymmMatrix & | mat, | |||
| DoubleVector & | eigenValues, | |||
| DoubleMatrix & | eigenVectors, | |||
| int | seed = -1 | |||
| ) | [static] |
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 58 of file PowerEigenSolver.h.
References powerEigenSolver().
1.7.1