MINRES.h file
MINRES solver for symmetric (possibly indefinite) linear systems.
This header provides the MINRES (Minimum Residual) solver class, an iterative method for solving linear systems:
where is symmetric (and may be indefinite).
Algorithm
MINRES is a Lanczos-based Krylov method that minimizes the residual norm over the generated Krylov subspace, while preserving short recurrences for symmetric operators.
Applicability
- Symmetric positive definite (works, but CG is usually preferable)
- Symmetric indefinite systems (e.g., some mixed formulations, saddle-point after suitable transformations, Helmholtz-type operators, etc.)
Notes
- This implementation uses Eigen's unsupported MINRES.
Usage Example
Problem problem(u, v); problem = Integral(Grad(u), Grad(v)) - Integral(f, v); Solver::MINRES solver(problem); solver.setTolerance(1e-10).setMaxIterations(1000).solve(); if (solver.success()) std::cout << "Converged!\n";
Namespaces
- namespace Rodin
- The Rodin library for Shape and Topology Optimization.
- namespace Rodin::Solver
- Module for linear algebra systems.
Classes
-
template<class Scalar>class Rodin::Solver::MINRES<Math::LinearSystem<Math::SparseMatrix<Scalar>, Math::Vector<Scalar>>>
- MINRES solver for symmetric sparse systems.
-
template<class Scalar>class Rodin::Solver::MINRES<Math::LinearSystem<Math::Matrix<Scalar>, Math::Vector<Scalar>>>
- MINRES solver for symmetric dense systems.