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

#include <inexactInv.hh>

Inheritance diagram for eigensolver::InexactInv< F >:
eigensolver::EigenSolver< F > concepts::OutputOperator

Public Member Functions

virtual uint converged () const
 Returns the number of converged eigen pairs. More...
 
virtual const concepts::Array< concepts::Vector< F > * > & getEF ()
 
virtual const concepts::Array< F > & getEV ()
 Returns an array with the eigen values. More...
 
 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. More...
 
virtual uint iterations () const
 Returns the number of iterations. More...
 
virtual ~InexactInv ()
 

Protected Member Functions

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

Private Member Functions

void compute_ ()
 Does the computations. More...
 

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 36 of file inexactInv.hh.

Constructor & Destructor Documentation

◆ InexactInv()

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

◆ ~InexactInv()

template<typename F >
virtual eigensolver::InexactInv< F >::~InexactInv ( )
virtual

Member Function Documentation

◆ compute_()

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

Does the computations.

◆ converged()

template<typename F >
virtual uint eigensolver::InexactInv< F >::converged ( ) const
inlinevirtual

Returns the number of converged eigen pairs.

Implements eigensolver::EigenSolver< F >.

Definition at line 67 of file inexactInv.hh.

◆ getEF()

template<typename F >
virtual const concepts::Array<concepts::Vector<F>*>& eigensolver::InexactInv< F >::getEF ( )
inlinevirtual

Implements eigensolver::EigenSolver< F >.

Definition at line 62 of file inexactInv.hh.

◆ getEV()

template<typename F >
virtual const concepts::Array<F>& eigensolver::InexactInv< F >::getEV ( )
inlinevirtual

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 59 of file inexactInv.hh.

◆ info()

template<typename F >
virtual std::ostream& eigensolver::InexactInv< F >::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from eigensolver::EigenSolver< F >.

◆ iterations()

template<typename F >
virtual uint eigensolver::InexactInv< F >::iterations ( ) const
inlinevirtual

Returns the number of iterations.

Implements eigensolver::EigenSolver< F >.

Definition at line 66 of file inexactInv.hh.

Member Data Documentation

◆ A_

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

Definition at line 73 of file inexactInv.hh.

◆ B_

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

Definition at line 73 of file inexactInv.hh.

◆ computed_

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

Definition at line 84 of file inexactInv.hh.

◆ eigenfunction_

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

Definition at line 76 of file inexactInv.hh.

◆ eigenvalue_

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

Definition at line 75 of file inexactInv.hh.

◆ epsilon_

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

Definition at line 82 of file inexactInv.hh.

◆ innerIter_

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

Definition at line 81 of file inexactInv.hh.

◆ innerMax_

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

Definition at line 79 of file inexactInv.hh.

◆ innerTol_

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

Definition at line 78 of file inexactInv.hh.

◆ iterations_

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

Definition at line 81 of file inexactInv.hh.

◆ outerMax_

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

Definition at line 79 of file inexactInv.hh.

◆ outerTol_

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

Definition at line 78 of file inexactInv.hh.

◆ returnValue1_

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

Definition at line 74 of file inexactInv.hh.

◆ returnValue2_

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

Definition at line 77 of file inexactInv.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich