Functions

RDNumeric::EigenSolvers Namespace Reference

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)

Function Documentation

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.

Parameters:
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
Returns:
a boolean indicating whether or not the calculation converged.

Notes:

  • The matrix, mat, is changed in this function

Algorithm:

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().