- java.lang.Object
-
- org.ojalgo.matrix.task.iterative.IterativeSolverTask
-
- org.ojalgo.matrix.task.iterative.MINRESSolver
-
- All Implemented Interfaces:
MatrixTask<java.lang.Double>,SolverTask<java.lang.Double>
public final class MINRESSolver extends IterativeSolverTask
Minimal Residual (MINRES) solver for symmetric (possibly indefinite) square systems.This class mirrors the public API and internal scratch structure of
QMRSolver, but implements the classic MINRES iteration specialised for symmetric matrices. Right-preconditioning is supported using thePreconditionerAPI provided byIterativeSolverTask. A shift parameter is present but fixed to zero in this implementation; it is retained to enable straightforward future extensions.Characteristics
- Operates on matrix–vector products with A only (symmetry assumed).
- Right-preconditioning is applied via the
Preconditionerinterface. - Stops when the residual norm is small relative to the RHS norm (or absolutely small when RHS is zero), or when the iteration limit is reached.
- For symmetric problems, including indefinite ones, where CG is not applicable.
- When a robust Krylov method without A^T products is desired.
- When right-preconditioning is convenient and a symmetric preconditioner is available.
- Paige, C. C., and M. A. Saunders (1975), Solutions of sparse indefinite systems of linear equations.
- Numerical Analysis. 12 (4): 617–629. doi:10.1137/0712047.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.ojalgo.matrix.task.iterative.IterativeSolverTask
IterativeSolverTask.Configurator
-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.task.SolverTask
SolverTask.Factory<N extends java.lang.Comparable<N>>
-
-
Constructor Summary
Constructors Constructor Description MINRESSolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidaxpy(double alpha, R064Store x, Mutate1D.Modifiable<?> y)private static doublenorm2(R064Store a)doubleresolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> x)private static voidscaleCopy(R064Store src, double alpha, R064Store dst)private static voidscaleInPlace(R064Store x, double alpha)-
Methods inherited from class org.ojalgo.matrix.task.iterative.IterativeSolverTask
configurator, debug, getAccuracyContext, getIterationsLimit, getPreconditioner, getRelaxationFactor, isDebugPrinterSet, preallocate, resolve, setAccuracyContext, setDebugPrinter, setIterationsLimit, setPreconditioner, setRelaxationFactor, solve, solve, toListOfRows, worker
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.ojalgo.matrix.task.SolverTask
preallocate, solve, toSolutionProvider
-
-
-
-
Method Detail
-
axpy
private static void axpy(double alpha, R064Store x, Mutate1D.Modifiable<?> y)
-
norm2
private static double norm2(R064Store a)
-
scaleInPlace
private static void scaleInPlace(R064Store x, double alpha)
-
resolve
public double resolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> x)
- Specified by:
resolvein classIterativeSolverTask
-
-