SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.nonstationary
Class BiconjugateGradientStabilizedSolver

java.lang.Object
  extended by com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.nonstationary.BiconjugateGradientStabilizedSolver
All Implemented Interfaces:
IterativeSolver

public class BiconjugateGradientStabilizedSolver
extends java.lang.Object
implements IterativeSolver

The Biconjugate Gradient Stabilized (BiCGSTAB) method is useful for solving non-symmetric n-by-n linear systems. This algorithm is a transpose-free variant of BiCG, like CGS, but using different updates for the AT-sequence in order to obtain smoother tolerance than CGS.

Only left preconditioning is supported in this implementation.

See Also:
"Yousef Saad, “BICGSTAB,” in Iterative Methods for Sparse Linear Systems, 2nd ed. 2000, ch. 7, sec. 7.4.2, p. 216-219."

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.IterativeSolver
IterativeSolver.ConvergenceFailure, IterativeSolver.Problem
 
Field Summary
static int DEFAULT_RESIDUAL_REFRESH_RATE
          The algorithm recomputes the residual as b - Axi once per this number of iterations
 
Constructor Summary
BiconjugateGradientStabilizedSolver()
           
BiconjugateGradientStabilizedSolver(int residualRefreshRate)
          The solver recomputes the residual as b - Axi once per this number of iterations
 
Method Summary
 Vector solve(IterativeSolver.Problem problem)
          Solve iteratively Ax = b until the solution is close enough, i.e., the norm of residual (b - Ax) is less than or equal to the specified iteration.
 Vector solve(IterativeSolver.Problem problem, IterationMonitor monitor)
          Solve iteratively Ax = b until the solution is close enough, i.e., the norm of residual (b - Ax) is less than or equal to the specified iteration.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

BiconjugateGradientStabilizedSolver

public BiconjugateGradientStabilizedSolver()

BiconjugateGradientStabilizedSolver

public BiconjugateGradientStabilizedSolver(int residualRefreshRate)
The solver recomputes the residual as b - Axi once per this number of iterations

Parameters:
residualRefreshRate - the number of iterations before the next refresh
Method Detail

solve

public Vector solve(IterativeSolver.Problem problem)
             throws IterativeSolver.ConvergenceFailure
Description copied from interface: IterativeSolver
Solve iteratively
Ax = b
until the solution is close enough, i.e., the norm of residual (b - Ax) is less than or equal to the specified iteration.

Specified by:
solve in interface IterativeSolver
Parameters:
problem - the problem of solving Ax = b
Returns:
the computed solution for the problem
Throws:
IterativeSolver.ConvergenceFailure - if the algorithm fails to converge

solve

public Vector solve(IterativeSolver.Problem problem,
                    IterationMonitor monitor)
             throws IterativeSolver.ConvergenceFailure
Description copied from interface: IterativeSolver
Solve iteratively
Ax = b
until the solution is close enough, i.e., the norm of residual (b - Ax) is less than or equal to the specified iteration.

In each iteration, the newly computed iterate is added to the IterationMonitor for statistics or diagnostic purpose.

Specified by:
solve in interface IterativeSolver
Parameters:
problem - the problem of solving Ax = b
monitor - an IterationMonitor instance
Returns:
the computed solution for the problem
Throws:
IterativeSolver.ConvergenceFailure - if the algorithm fails to converge

SuanShu, a Java numerical and statistical library

Copyright © 2011 Numerical Method Inc. Ltd. All Rights Reserved.