Classes | |
struct | AdditionalData |
Public Member Functions | |
EigenPower (SolverControl &cn, VectorMemory< VECTOR > &mem, const AdditionalData &data=AdditionalData()) | |
virtual | ~EigenPower () |
template<class MATRIX > | |
void | solve (double &value, const MATRIX &A, VECTOR &x) |
Protected Attributes | |
AdditionalData | additional_data |
Power method (von Mises) for eigenvalue computations.
This method determines the largest eigenvalue of a matrix by applying increasing powers of this matrix to a vector. If there is an eigenvalue with dominant absolute value, the iteration vectors will become aligned to its eigenspace and
.
A shift parameter allows to shift the spectrum, so it is possible to compute the smallest eigenvalue, too.
Convergence of this method is known to be slow.
EigenPower< VECTOR >::EigenPower | ( | SolverControl & | cn, | |
VectorMemory< VECTOR > & | mem, | |||
const AdditionalData & | data = AdditionalData() | |||
) | [inline] |
Constructor.
EigenPower< VECTOR >::~EigenPower | ( | ) | [inline, virtual] |
Virtual destructor.
void EigenPower< VECTOR >::solve | ( | double & | value, | |
const MATRIX & | A, | |||
VECTOR & | x | |||
) | [inline] |
Power method. 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 EigenPower< VECTOR >::additional_data, Assert, SolverControl::check(), Solver< VECTOR >::control(), deallog, SolverControl::iterate, Solver< VECTOR >::memory, LogStream::pop(), LogStream::push(), EigenPower< VECTOR >::AdditionalData::shift, and SolverControl::success.
AdditionalData EigenPower< VECTOR >::additional_data [protected] |
Shift parameter.
Referenced by EigenPower< VECTOR >::solve().