|
Mundy: Multibody Nonlocal Dynamics Version of the Day
|
Extremal eigenvalues of a square operator via the power method or, for a symmetric one, the Lanczos method. More...
Classes | |
| struct | mundy::PowerResult< Scalar > |
| Result of a power-method solve: iteration count, final residual, eigenvalue, and whether it converged. More... | |
| struct | mundy::EigenBounds< Scalar > |
| The dominant (largest-magnitude) end of a spectrum and the end opposite it. More... | |
| struct | mundy::LanczosResult< Scalar > |
| Result of a Lanczos solve: iteration count, final residual, spectrum bounds, and whether it converged. More... | |
| struct | mundy::PowerConfig< Scalar > |
| struct | mundy::LanczosConfig< Scalar > |
| class | mundy::EigenProblem< Backend, LinearOp, Workspace > |
| The eigenvalue problem A q = lambda q for a square operator A, paired with a mutable workspace. More... | |
| class | mundy::PowerState< Scalar, QVector, ZVector, RVector > |
| The power-method state: the q/z/r vectors and the iteration scalars. More... | |
| class | mundy::LanczosState< Scalar, VVector, VPrevVector, ZVector, AzVector, AlphaArray, BetaArray > |
| The Lanczos state: the v/v_prev/z/Az vectors, the tridiagonal T as its diagonal alpha and off-diagonal beta, and the iteration scalars. More... | |
| class | mundy::PowerStrategy< ResidualPolicy, Config > |
| The power-method strategy: initialize/iterate/done/result over (Problem, State). More... | |
| class | mundy::LanczosStrategy< Config, Precond > |
| The Lanczos strategy: initialize/iterate/done/result over (Problem, State), preconditioned by Precond. More... | |
Namespaces | |
| namespace | mundy |
Functions | |
Solve result | |
| template<class Scalar> | |
| std::ostream & | mundy::operator<< (std::ostream &os, const PowerResult< Scalar > result) |
| Write a PowerResult to an ostream. | |
| template<class Scalar> | |
| std::ostream & | mundy::operator<< (std::ostream &os, const LanczosResult< Scalar > result) |
| Write a LanczosResult to an ostream. | |
Factory functions | |
| template<class Backend, class LinearOp> | |
| auto | mundy::make_eigen_problem (LinearOp &&A) |
| template<class ResidualPolicy, class Scalar> | |
| auto | mundy::make_power_strategy (ResidualPolicy &&residual_policy, const PowerConfig< Scalar > &cfg={}) |
| template<class Scalar> | |
| auto | mundy::make_power_strategy (const PowerConfig< Scalar > &cfg={}) |
| template<class QVector, class ZVector, class RVector> | |
| auto | mundy::make_power_state (QVector &&q, ZVector &&z, RVector &&r) |
| template<class Scalar> | |
| auto | mundy::make_lanczos_strategy (const LanczosConfig< Scalar > &cfg={}) |
| template<class Scalar, class Precond> | |
| auto | mundy::make_lanczos_strategy (const LanczosConfig< Scalar > &cfg, Precond &&precond) |
| template<class VVector, class VPrevVector, class ZVector, class AzVector, class AlphaArray, class BetaArray> | |
| auto | mundy::make_lanczos_state (VVector &&v, VPrevVector &&v_prev, ZVector &&z, AzVector &&Az, AlphaArray &&alpha, BetaArray &&beta) |
| template<class Problem, class Strategy, class State> | |
| auto | mundy::solve_eigen_problem (const Problem &prob, const Strategy &strat, State &state) |
| Solve the eigenvalue problem prob from state with strat. | |
| template<class Problem, class Strategy, class DominantState, class OppositeState> | |
| auto | mundy::solve_eigen_bounds (const Problem &prob, const Strategy &strat, DominantState &dominant_state, OppositeState &opposite_state) |
| Both ends of the spectrum of a symmetric A via the shifted power method. | |
The power method iterates q <- A q / ||A q|| from a caller-supplied start vector and reports the Rayleigh quotient lambda = q . A q of the unit iterate. It converges to the eigenvalue of largest magnitude at rate |lambda_2 / lambda_1| per iteration, provided the start vector has a component along its eigenvector.
The Lanczos method builds the tridiagonal T that A takes on the Krylov space of a caller-supplied start vector. T's extreme eigenvalues approach both ends of A's spectrum (of P A, preconditioned by an SPD P) from inside.