Inexact inverse iteration to solve a generalized Eigen value problem. More...
#include <inexactInv.hh>


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_ |
Inexact inverse iteration to solve a generalized Eigen value problem.
The problem to be solved is
. 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.
Definition at line 34 of file inexactInv.hh.
| 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
for the innner iteration can be kept fairly high. In fact,
where
. Best results are achieved for
only slightly larger than
.
| A | A |
| B | B |
| EFguess | Initial value for the Eigen function |
| innerTol | Relative tolerance for the inner iteration (solution of the linear system) |
| innerMax | Maximal number of iterations for the inner iteration |
| outerTol | Tolerance for the outer iteration (residual of the Eigen function) |
| outerMax | Maximal number of outer iterations |
| virtual eigensolver::InexactInv< F >::~InexactInv | ( | ) | [virtual] |
| void eigensolver::InexactInv< F >::compute_ | ( | ) | [private] |
Does the computations.
| 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.
| 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.

| virtual const concepts::Array<F>& eigensolver::InexactInv< F >::getEV | ( | ) | [inline, virtual] |
Returns an array with the eigen values.
(use std::auto_pointer or similar)
Implements eigensolver::EigenSolver< F >.
Definition at line 57 of file inexactInv.hh.

| virtual std::ostream& eigensolver::InexactInv< F >::info | ( | std::ostream & | os | ) | const [protected, virtual] |
Returns information in an output stream.
Reimplemented from eigensolver::EigenSolver< 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.
concepts::Operator<F>& eigensolver::InexactInv< F >::A_ [private] |
Definition at line 71 of file inexactInv.hh.
concepts::Operator<F> & eigensolver::InexactInv< F >::B_ [private] |
Definition at line 71 of file inexactInv.hh.
bool eigensolver::InexactInv< F >::computed_ [private] |
Definition at line 82 of file inexactInv.hh.
concepts::Vector<F> eigensolver::InexactInv< F >::eigenfunction_ [private] |
Definition at line 74 of file inexactInv.hh.
F& eigensolver::InexactInv< F >::eigenvalue_ [private] |
Definition at line 73 of file inexactInv.hh.
Real eigensolver::InexactInv< F >::epsilon_ [private] |
Definition at line 80 of file inexactInv.hh.
uint eigensolver::InexactInv< F >::innerIter_ [private] |
Definition at line 79 of file inexactInv.hh.
uint eigensolver::InexactInv< F >::innerMax_ [private] |
Definition at line 77 of file inexactInv.hh.
Real eigensolver::InexactInv< F >::innerTol_ [private] |
Definition at line 76 of file inexactInv.hh.
uint eigensolver::InexactInv< F >::iterations_ [private] |
Definition at line 79 of file inexactInv.hh.
uint eigensolver::InexactInv< F >::outerMax_ [private] |
Definition at line 77 of file inexactInv.hh.
Real eigensolver::InexactInv< F >::outerTol_ [private] |
Definition at line 76 of file inexactInv.hh.
concepts::Array<F> eigensolver::InexactInv< F >::returnValue1_ [private] |
Definition at line 72 of file inexactInv.hh.
concepts::Array<concepts::Vector<F>*> eigensolver::InexactInv< F >::returnValue2_ [private] |
Definition at line 75 of file inexactInv.hh.