EigenInverse< VECTOR > Class Template Reference
[Linear solver classes]

Inheritance diagram for EigenInverse< VECTOR >:

Inheritance graph
[legend]

List of all members.

Classes

struct  AdditionalData

Public Member Functions

 EigenInverse (SolverControl &cn, VectorMemory< VECTOR > &mem, const AdditionalData &data=AdditionalData())
virtual ~EigenInverse ()
template<class MATRIX >
void solve (double &value, const MATRIX &A, VECTOR &x)

Protected Attributes

AdditionalData additional_data


Detailed Description

template<class VECTOR = Vector<double>>
class EigenInverse< VECTOR >

Inverse iteration (Wieland) for eigenvalue computations.

This class implements an adaptive version of the inverse iteration by Wieland.

There are two choices for the stopping criterion: by default, the norm of the residual $A x - l x$ is computed. Since this might not converge to zero for non-symmetric matrices with non-trivial Jordan blocks, it can be replaced by checking the difference of successive eigenvalues. Use AdditionalData::use_residual for switching this option.

Usually, the initial guess entering this method is updated after each step, replacing it with the new approximation of the eigenvalue. Using a parameter AdditionalData::relaxation between 0 and 1, this update can be damped. With relaxation parameter 0, no update is performed. This damping allows for slower adaption of the shift value to make sure that the method converges to the eigenvalue closest to the initial guess. This can be aided by the parameter AdditionalData::start_adaption, which indicates the first iteration step in which the shift value should be adapted.

Author:
Guido Kanschat, 2000, 2003

Constructor & Destructor Documentation

template<class VECTOR >
EigenInverse< VECTOR >::EigenInverse ( SolverControl cn,
VectorMemory< VECTOR > &  mem,
const AdditionalData data = AdditionalData() 
) [inline]

Constructor.

template<class VECTOR >
EigenInverse< VECTOR >::~EigenInverse (  )  [inline, virtual]

Virtual destructor.


Member Function Documentation

template<class VECTOR >
template<class MATRIX >
void EigenInverse< VECTOR >::solve ( double value,
const MATRIX &  A,
VECTOR &  x 
) [inline]

Inverse method. value is the start guess for the eigenvalue and x is the (not necessarily normalized, but nonzero) start vector for the power method. After the iteration, value is the approximated eigenvalue and x is the corresponding eigenvector, normalized with respect to the l2-norm.

References EigenInverse< VECTOR >::additional_data, VectorMemory< VECTOR >::alloc(), Assert, SolverControl::check(), Solver< VECTOR >::control(), deallog, VectorMemory< VECTOR >::free(), SolverControl::iterate, Solver< VECTOR >::memory, LogStream::pop(), LogStream::push(), EigenInverse< VECTOR >::AdditionalData::relaxation, ShiftedMatrix< MATRIX >::shift(), SolverGMRES< VECTOR >::solve(), EigenInverse< VECTOR >::AdditionalData::start_adaption, SolverControl::success, and EigenInverse< VECTOR >::AdditionalData::use_residual.


Member Data Documentation

template<class VECTOR = Vector<double>>
AdditionalData EigenInverse< VECTOR >::additional_data [protected]

Flags for execution.

Referenced by EigenInverse< VECTOR >::solve().


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

deal.II documentation generated on Sat Aug 15 16:51:52 2009 by doxygen 1.5.9