|
Mundy: Multibody Nonlocal Dynamics Version of the Day
|
The Lanczos strategy: initialize/iterate/done/result over (Problem, State), preconditioned by Precond. More...
#include <eigenvalues.hpp>
Public Types | |
| using | value_type = typename Config::value_type |
| using | config_t = Config |
| using | preconditioner_t = Precond |
| using | result_t = LanczosResult<value_type> |
Public Member Functions | |
| LanczosStrategy (config_t cfg={}) | |
| LanczosStrategy (config_t cfg, Precond &&precond) | |
| const auto & | precond () const |
| template<class Problem, class State> | |
| void | initialize (const Problem &prob, State &state) const |
| template<class Problem, class State> | |
| bool | iterate (const Problem &prob, State &state) const |
| template<class State> | |
| bool | done (const State &state) const |
| template<class State> | |
| result_t | result (const State &state) const |
For symmetric A (and SPD P), each iteration appends a row to T, whose extreme eigenvalues theta approach those of A (of P A) monotonically from inside. Each theta has the Ritz residual rho = ||A y - theta y|| of its Ritz vector y, within which an eigenvalue lies; by monotonicity, the least rho at an end so far still bounds it. The solve converges once that bound is at most tol |theta| at both ends.
| using mundy::LanczosStrategy< Config, Precond >::value_type = typename Config::value_type |
| using mundy::LanczosStrategy< Config, Precond >::config_t = Config |
| using mundy::LanczosStrategy< Config, Precond >::preconditioner_t = Precond |
| using mundy::LanczosStrategy< Config, Precond >::result_t = LanczosResult<value_type> |
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |