Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
eigensolver::InexactInv< F > Class Template Reference

Inexact inverse iteration to solve a generalized Eigen value problem. More...

#include <inexactInv.hh>

Inheritance diagram for eigensolver::InexactInv< F >:
Inheritance graph
[legend]
Collaboration diagram for eigensolver::InexactInv< F >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual uint converged () const
 Returns the number of converged eigen pairs.
virtual const concepts::Array
< concepts::Vector< F > * > & 
getEF ()
virtual const concepts::Array
< F > & 
getEV ()
 Returns an array with the eigen values.
 InexactInv (concepts::Operator< F > &A, concepts::Operator< F > &B, const concepts::Vector< F > &EFguess, const Real innerTol=0.5, const uint innerMax=100, const Real outerTol=1e-6, const uint outerMax=100)
 Constructor.
virtual uint iterations () const
 Returns the number of iterations.
virtual ~InexactInv ()

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream.

Private Member Functions

void compute_ ()
 Does the computations.

Private Attributes

concepts::Operator< F > & A_
concepts::Operator< F > & B_
bool computed_
concepts::Vector< F > eigenfunction_
F & eigenvalue_
Real epsilon_
uint innerIter_
uint innerMax_
Real innerTol_
uint iterations_
uint outerMax_
Real outerTol_
concepts::Array< F > returnValue1_
concepts::Array
< concepts::Vector< F > * > 
returnValue2_

Detailed Description

template<typename F>
class eigensolver::InexactInv< F >

Inexact inverse iteration to solve a generalized Eigen value problem.

The problem to be solved is $Ax = \lambda Bx$. This algorithm uses the inexact solution of a linear system to converge to the first Eigen pair of the Eigen problem.

The class is templated on the value type but only the real part works.

Author:
Philipp Frauenfelder, 2003
Test:

test::GolubExample

test::GolubExampleSum

test::MaxwellTransmissionEVP

See also:
Gene H. Golub and Qiang Ye, Inexact inverse iteration for generalized Eigenvalue problems, BIT Vol. 40, No. 4 (2000), 671-684.

Definition at line 34 of file inexactInv.hh.


Constructor & Destructor Documentation

template<typename F>
eigensolver::InexactInv< F >::InexactInv ( concepts::Operator< F > &  A,
concepts::Operator< F > &  B,
const concepts::Vector< F > &  EFguess,
const Real  innerTol = 0.5,
const uint  innerMax = 100,
const Real  outerTol = 1e-6,
const uint  outerMax = 100 
)

Constructor.

The relative tolerance $\epsilon$ for the innner iteration can be kept fairly high. In fact, $\rho < \epsilon \leq 1$ where $\rho = |\lambda_1 / \lambda_2| < 1$. Best results are achieved for $\epsilon$ only slightly larger than $\rho$.

Parameters:
AA
BB
EFguessInitial value for the Eigen function
innerTolRelative tolerance for the inner iteration (solution of the linear system)
innerMaxMaximal number of iterations for the inner iteration
outerTolTolerance for the outer iteration (residual of the Eigen function)
outerMaxMaximal number of outer iterations
template<typename F>
virtual eigensolver::InexactInv< F >::~InexactInv ( ) [virtual]

Member Function Documentation

template<typename F>
void eigensolver::InexactInv< F >::compute_ ( ) [private]

Does the computations.

template<typename F>
virtual uint eigensolver::InexactInv< F >::converged ( ) const [inline, virtual]

Returns the number of converged eigen pairs.

Implements eigensolver::EigenSolver< F >.

Definition at line 65 of file inexactInv.hh.

template<typename F>
virtual const concepts::Array<concepts::Vector<F>*>& eigensolver::InexactInv< F >::getEF ( ) [inline, virtual]

Implements eigensolver::EigenSolver< F >.

Definition at line 60 of file inexactInv.hh.

Here is the call graph for this function:

template<typename F>
virtual const concepts::Array<F>& eigensolver::InexactInv< F >::getEV ( ) [inline, virtual]

Returns an array with the eigen values.

Deprecated:
: this interface requires that the returned array must be hold as a member variable of the class.

(use std::auto_pointer or similar)

Implements eigensolver::EigenSolver< F >.

Definition at line 57 of file inexactInv.hh.

Here is the call graph for this function:

template<typename F>
virtual std::ostream& eigensolver::InexactInv< F >::info ( std::ostream &  os) const [protected, virtual]

Returns information in an output stream.

Reimplemented from eigensolver::EigenSolver< F >.

template<typename F>
virtual uint eigensolver::InexactInv< F >::iterations ( ) const [inline, virtual]

Returns the number of iterations.

Implements eigensolver::EigenSolver< F >.

Definition at line 64 of file inexactInv.hh.


Member Data Documentation

template<typename F>
concepts::Operator<F>& eigensolver::InexactInv< F >::A_ [private]

Definition at line 71 of file inexactInv.hh.

template<typename F>
concepts::Operator<F> & eigensolver::InexactInv< F >::B_ [private]

Definition at line 71 of file inexactInv.hh.

template<typename F>
bool eigensolver::InexactInv< F >::computed_ [private]

Definition at line 82 of file inexactInv.hh.

template<typename F>
concepts::Vector<F> eigensolver::InexactInv< F >::eigenfunction_ [private]

Definition at line 74 of file inexactInv.hh.

template<typename F>
F& eigensolver::InexactInv< F >::eigenvalue_ [private]

Definition at line 73 of file inexactInv.hh.

template<typename F>
Real eigensolver::InexactInv< F >::epsilon_ [private]

Definition at line 80 of file inexactInv.hh.

template<typename F>
uint eigensolver::InexactInv< F >::innerIter_ [private]

Definition at line 79 of file inexactInv.hh.

template<typename F>
uint eigensolver::InexactInv< F >::innerMax_ [private]

Definition at line 77 of file inexactInv.hh.

template<typename F>
Real eigensolver::InexactInv< F >::innerTol_ [private]

Definition at line 76 of file inexactInv.hh.

template<typename F>
uint eigensolver::InexactInv< F >::iterations_ [private]

Definition at line 79 of file inexactInv.hh.

template<typename F>
uint eigensolver::InexactInv< F >::outerMax_ [private]

Definition at line 77 of file inexactInv.hh.

template<typename F>
Real eigensolver::InexactInv< F >::outerTol_ [private]

Definition at line 76 of file inexactInv.hh.

template<typename F>
concepts::Array<F> eigensolver::InexactInv< F >::returnValue1_ [private]

Definition at line 72 of file inexactInv.hh.

template<typename F>
concepts::Array<concepts::Vector<F>*> eigensolver::InexactInv< F >::returnValue2_ [private]

Definition at line 75 of file inexactInv.hh.


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

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)