Class QuasiMinimalResidualSolver

  • All Implemented Interfaces:
    IterativeLinearSystemSolver

    public class QuasiMinimalResidualSolver
    extends Object
    implements IterativeLinearSystemSolver
    The Quasi-Minimal Residual method (QMR) is useful for solving a non-symmetric n-by-n linear system. It applies a least-squares solve and update to the BiCG residuals, thereby smoothing out the irregular convergence behavior of BiCG. Also, QMR largely avoids the breakdown that can occur in BiCG. On the other hand, it does not effect a true minimization of either the error or the residual. While it converges smoothly, it does not essentially improve on the BiCG in terms of the number of iteration steps.

    This implementation does not have a look ahead mechanism. This implementation uses the split preconditioning (M = M1M2).

    • Field Detail

      • DEFAULT_RESIDUAL_REFRESH_RATE

        public static final int DEFAULT_RESIDUAL_REFRESH_RATE
        The algorithm recomputes the residual as b - Axi once per this number of iterations
        See Also:
        Constant Field Values
    • Constructor Detail

      • QuasiMinimalResidualSolver

        public QuasiMinimalResidualSolver​(PreconditionerFactory leftPreconditionerFactory,
                                          PreconditionerFactory rightPreconditionerFactory,
                                          int residualRefreshRate,
                                          int maxIteration,
                                          Tolerance tolerance)
        Construct a Quasi-Minimal Residual (QMR) solver.
        Parameters:
        leftPreconditionerFactory - constructs a new left preconditioner
        rightPreconditionerFactory - constructs a new right preconditioner
        residualRefreshRate - the number of iterations before the next refresh
        maxIteration - the maximum number of iterations
        tolerance - the convergence threshold
      • QuasiMinimalResidualSolver

        public QuasiMinimalResidualSolver​(int maxIteration,
                                          Tolerance tolerance)
        Construct a Quasi-Minimal Residual (QMR) solver.
        Parameters:
        maxIteration - the maximum number of iterations
        tolerance - the convergence threshold