LTI-Lib latest version v1.9 - last update 10 Apr 2010

lti::fastEigenSystem< T > Class Template Reference
[LAPack based functors]

A fast LAPACK-based method for computation of (some) eigenvector and eigenvalues. More...

#include <ltiFastEigenSystem.h>

Inheritance diagram for lti::fastEigenSystem< T >:
Inheritance graph
[legend]
Collaboration diagram for lti::fastEigenSystem< T >:
Collaboration graph
[legend]

List of all members.

Classes

class  parameters
 eigenSystem parameter class More...

Public Member Functions

 fastEigenSystem ()
 fastEigenSystem (const parameters &theParams)
 fastEigenSystem (const int dimensions)
virtual ~fastEigenSystem ()
const parametersgetParameters () const
virtual functorclone () const
virtual bool apply (const matrix< T > &theMatrix, vector< T > &eigenvalues, matrix< T > &eigenvectors) const
virtual const char * getTypeName () const

Detailed Description

template<class T>
class lti::fastEigenSystem< T >

A fast LAPACK-based method for computation of (some) eigenvector and eigenvalues.

Depending on the parameters useRRR (relatively robust representation), either xSYEVR (true) or xSYEVX (false) are used. The latter is default since RRR goes into infinite loops for some data. Note however that switching useRRR to true is usually much faster (a simple test yielded 25% speed-up).

Part of the man page of xSYEVR:

DSYEVR (SSYEVR) computes selected eigenvalues and, optionally, eigenvectors of a real symmetric tridiagonal matrix T. Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.

Whenever possible, DSYEVR calls DSTEGR to compute the eigenspectrum using Relatively Robust Representations. DSTEGR computes eigenvalues by the dqds algorithm, while orthogonal eigenvectors are com­ puted from various "good" L D L^T representations (also known as Relatively Robust Representations). Gram-Schmidt orthogonalization is avoided as far as possible. More specifically, the various steps of the algorithm are as fol­ lows. For the i-th unreduced block of T,

(a) Compute T - sigma_i = L_i D_i L_i^T, such that L_i D_i L_i^T is a relatively robust representation,

(b) Compute the eigenvalues, lambda_j, of L_i D_i L_i^T to high relative accuracy by the dqds algorithm,

(c) If there is a cluster of close eigenvalues, "choose" sigma_i close to the cluster, and go to step (a),

(d) Given the approximate eigenvalue lambda_j of L_i D_i L_i^T, compute the corresponding eigenvector by forming a rank-revealing twisted factorization.

The desired accuracy of the output can be specified by the input parameter ABSTOL.

For more details, see "A new O(n^2) algorithm for the symmetric tridiagonal eigenvalue/eigenvector problem", by Inderjit Dhillon, Computer Science Division Technical Report No. UCB//CSD-97-971, UC Berkeley, May 1997.

Part of the man page of xSYEVX:

SSYEVX computes selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.

See also:
LAPack based functors

Constructor & Destructor Documentation

template<class T >
lti::fastEigenSystem< T >::fastEigenSystem (  ) 

default constructor

template<class T >
lti::fastEigenSystem< T >::fastEigenSystem ( const parameters theParams  ) 

constructor, sets the parameters

template<class T >
lti::fastEigenSystem< T >::fastEigenSystem ( const int  dimensions  ) 

constructor, sets the parameters

template<class T >
virtual lti::fastEigenSystem< T >::~fastEigenSystem (  )  [virtual]

destructor


Member Function Documentation

template<class T >
virtual bool lti::fastEigenSystem< T >::apply ( const matrix< T > &  theMatrix,
vector< T > &  eigenvalues,
matrix< T > &  eigenvectors 
) const [virtual]

Computes eigenvalues and eigenvectors of the given matrix.

The functor can efficiently calculate only a few dimensions of the eigenspace, taking those with the largest eigenvalues. The number of dimensions is set with parameters::dimensions.

Parameters:
theMatrix matrix whose eigenvectors are to be computed
eigenvalues elements will contain the eigenvalues
eigenvectors columns will contain the eigenvectors corresponding to the eigenvalues

Implements lti::eigenSystem< T >.

template<class T >
virtual functor* lti::fastEigenSystem< T >::clone (  )  const [virtual]

clone this functor

Implements lti::functor.

template<class T >
const parameters& lti::fastEigenSystem< T >::getParameters (  )  const

returns the current parameters.

Reimplemented from lti::eigenSystem< T >.

template<class T >
virtual const char* lti::fastEigenSystem< T >::getTypeName ( void   )  const [inline, virtual]

returns the name of this type

Reimplemented from lti::eigenSystem< T >.


The documentation for this class was generated from the following file:

Generated on Sat Apr 10 15:29:13 2010 for LTI-Lib by Doxygen 1.6.1