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 |
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 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.
EigenInverse< VECTOR >::EigenInverse | ( | SolverControl & | cn, | |
VectorMemory< VECTOR > & | mem, | |||
const AdditionalData & | data = AdditionalData() | |||
) | [inline] |
Constructor.
EigenInverse< VECTOR >::~EigenInverse | ( | ) | [inline, virtual] |
Virtual destructor.
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.
AdditionalData EigenInverse< VECTOR >::additional_data [protected] |
Flags for execution.
Referenced by EigenInverse< VECTOR >::solve().