RDCode: RDNumeric::EigenSolvers Namespace Reference

# 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

static bool RDNumeric::EigenSolvers::powerEigenSolver | ( | unsigned int | numEig,
|  | DoubleSymmMatrix & | mat,
|  | DoubleVector & | eigenValues,
|  | DoubleMatrix & | eigenVectors,
|  | int | seed = `-1` |
| ) |  |  | `[static]`

Definition at line 54 of file PowerEigenSolver.h.

References powerEigenSolver().

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