Class MINRESSolver
java.lang.Object
org.ojalgo.matrix.task.iterative.IterativeSolverTask
org.ojalgo.matrix.task.iterative.MINRESSolver
- All Implemented Interfaces:
MatrixTask<Double>, SolverTask<Double>
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 the Preconditioner API provided by
IterativeSolverTask. 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 IterativeSolverTask
IterativeSolverTask.ConfiguratorNested classes/interfaces inherited from interface SolverTask
SolverTask.Factory<N> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate R064Storeprivate R064Storeprivate R064Storeprivate R064Storeprivate R064Storeprivate R064Storeprivate R064StoreFields inherited from class IterativeSolverTask
DEFAULT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static voidaxpy(double alpha, R064Store x, Mutate1D.Modifiable<?> y) private static doubledoubleresolve(List<Equation> equations, PhysicalStore<Double> x) private static voidprivate static voidscaleInPlace(R064Store x, double alpha) Methods inherited from class IterativeSolverTask
configurator, debug, getAccuracyContext, getIterationsLimit, getPreconditioner, getRelaxationFactor, isDebugPrinterSet, preallocate, resolve, setAccuracyContext, setDebugPrinter, setIterationsLimit, setPreconditioner, setRelaxationFactor, solve, solve, toListOfRows, workerMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SolverTask
preallocate, solve, toSolutionProvider
-
Field Details
-
r1
-
r2
-
v
-
y
-
w
-
w1
-
w2
-
-
Constructor Details
-
MINRESSolver
public MINRESSolver()
-
-
Method Details
-
axpy
-
norm2
-
scaleCopy
-
scaleInPlace
-
resolve
- Specified by:
resolvein classIterativeSolverTask
-