Class BiconjugateGradientSolver

  • All Implemented Interfaces:
    IterativeLinearSystemSolver

    public class BiconjugateGradientSolver
    extends Object
    implements IterativeLinearSystemSolver
    The Biconjugate Gradient method (BiCG) is useful for solving non-symmetric n-by-n linear systems. It generates two CG-like sequences of vectors, one based on a system with the original coefficient matrix A, and one on At. They are made mutually orthogonal, or "bi-orthogonal". This method is useful when the matrix is non-symmetric and nonsingular. However, convergence may be irregular, and there is a possibility that the method will break down. BiCG , like CG, uses limited storage. It requires a multiplication with the coefficient matrix and with its transpose at each iteration.

    Only left preconditioning is supported in this implementation.

    • 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

      • BiconjugateGradientSolver

        public BiconjugateGradientSolver​(PreconditionerFactory leftPreconditionerFactory,
                                         int residualRefreshRate,
                                         int maxIteration,
                                         Tolerance tolerance)
        Construct a Biconjugate Gradient (BiCG) solver.
        Parameters:
        leftPreconditionerFactory - constructs a new left preconditioner
        residualRefreshRate - the number of iterations before the next refresh
        maxIteration - the maximum number of iterations
        tolerance - the convergence threshold
      • BiconjugateGradientSolver

        public BiconjugateGradientSolver​(int maxIteration,
                                         Tolerance tolerance)
        Construct a Biconjugate Gradient (BiCG) solver.
        Parameters:
        maxIteration - the maximum number of iterations
        tolerance - the convergence threshold