#include <vnl_sparse_symmetric_eigensystem.h>
Solve the eigenproblem
, with
symmetric and sparse. The block Lanczos algorithm is used to allow the recovery of a number of eigenvalue/eigenvector pairs from either end of the spectrum, to a required accuracy.
Uses the dnlaso routine from the LASO package of netlib.
Definition at line 29 of file vnl_sparse_symmetric_eigensystem.h.
Public Member Functions | |
| vnl_sparse_symmetric_eigensystem () | |
| ~vnl_sparse_symmetric_eigensystem () | |
| int | CalculateNPairs (vnl_sparse_matrix< double > &M, int n, bool smallest=true, long nfigures=10) |
| Here is where the fortran converted code gets called. | |
| vnl_vector< double > | get_eigenvector (int i) const |
| Return a calculated eigenvector. | |
| double | get_eigenvalue (int i) const |
| int | CalculateProduct (int n, int m, const double *p, double *q) |
| Callback from solver to calculate the product A p. | |
| int | SaveVectors (int n, int m, const double *q, int base) |
| Callback to store vectors for dnlaso. | |
| int | RestoreVectors (int n, int m, double *q, int base) |
| Callback to restore vectors for dnlaso. | |
Protected Attributes | |
| int | nvalues |
| vnl_vector< double > * | vectors |
| double * | values |
| vnl_sparse_matrix< double > * | mat |
| vcl_vector< double * > | temp_store |
| vnl_sparse_symmetric_eigensystem::vnl_sparse_symmetric_eigensystem | ( | ) |
Definition at line 59 of file vnl_sparse_symmetric_eigensystem.cxx.
| vnl_sparse_symmetric_eigensystem::~vnl_sparse_symmetric_eigensystem | ( | ) |
Definition at line 64 of file vnl_sparse_symmetric_eigensystem.cxx.
| int vnl_sparse_symmetric_eigensystem::CalculateNPairs | ( | vnl_sparse_matrix< double > & | M, | |
| int | n, | |||
| bool | smallest = true, |
|||
| long | nfigures = 10 | |||
| ) |
Here is where the fortran converted code gets called.
The sparse matrix M is assumed to be symmetric. The n smallest eigenvalues and their corresponding eigenvectors are calculated if smallest is true (the default). Otherwise the n largest eigenpairs are found. The accuracy of the eigenvalues is to nfigures decimal digits. Returns 0 if successful, non-zero otherwise.
Definition at line 80 of file vnl_sparse_symmetric_eigensystem.cxx.
| vnl_vector< double > vnl_sparse_symmetric_eigensystem::get_eigenvector | ( | int | i | ) | const |
Return a calculated eigenvector.
Definition at line 265 of file vnl_sparse_symmetric_eigensystem.cxx.
| double vnl_sparse_symmetric_eigensystem::get_eigenvalue | ( | int | i | ) | const |
Definition at line 271 of file vnl_sparse_symmetric_eigensystem.cxx.
| int vnl_sparse_symmetric_eigensystem::CalculateProduct | ( | int | n, | |
| int | m, | |||
| const double * | p, | |||
| double * | q | |||
| ) |
Callback from solver to calculate the product A p.
Definition at line 206 of file vnl_sparse_symmetric_eigensystem.cxx.
| int vnl_sparse_symmetric_eigensystem::SaveVectors | ( | int | n, | |
| int | m, | |||
| const double * | q, | |||
| int | base | |||
| ) |
Callback to store vectors for dnlaso.
Definition at line 218 of file vnl_sparse_symmetric_eigensystem.cxx.
| int vnl_sparse_symmetric_eigensystem::RestoreVectors | ( | int | n, | |
| int | m, | |||
| double * | q, | |||
| int | base | |||
| ) |
Callback to restore vectors for dnlaso.
Definition at line 243 of file vnl_sparse_symmetric_eigensystem.cxx.
int vnl_sparse_symmetric_eigensystem::nvalues [protected] |
Definition at line 51 of file vnl_sparse_symmetric_eigensystem.h.
vnl_vector<double>* vnl_sparse_symmetric_eigensystem::vectors [protected] |
Definition at line 52 of file vnl_sparse_symmetric_eigensystem.h.
double* vnl_sparse_symmetric_eigensystem::values [protected] |
Definition at line 53 of file vnl_sparse_symmetric_eigensystem.h.
vnl_sparse_matrix<double>* vnl_sparse_symmetric_eigensystem::mat [protected] |
Definition at line 55 of file vnl_sparse_symmetric_eigensystem.h.
vcl_vector<double*> vnl_sparse_symmetric_eigensystem::temp_store [protected] |
Definition at line 57 of file vnl_sparse_symmetric_eigensystem.h.
1.5.1