SuanShu, a Java numerical and statistical library

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

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

public class GeneralizedConjugateResidualSolver
extends java.lang.Object
implements IterativeSolver

The Generalized Conjugate Residual method (GCR) is useful for solving non-symmetric n-by-n linear systems, like GMRES. GCR computes the next Krylov basis vector as a linear combination of the current residual and all previous basis vectors.

This solver implements a restarted version of GCR.

Only left preconditioning is supported in this implementation.

See Also:
"Yousef Saad, “GCR, ORTHOMIN, and ORTHODIR,” in Iterative Methods for Sparse Linear Systems, 2nd ed. 2000, ch. 6, sec. 6.9, p. 182-184."

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.IterativeSolver
IterativeSolver.ConvergenceFailure, IterativeSolver.Problem
 
Constructor Summary
GeneralizedConjugateResidualSolver()
          Create a full GCR solver.
GeneralizedConjugateResidualSolver(int m)
          Create a restart version of GCR solver with the restart parameter m.
 
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
 

Constructor Detail

GeneralizedConjugateResidualSolver

public GeneralizedConjugateResidualSolver()
Create a full GCR solver.


GeneralizedConjugateResidualSolver

public GeneralizedConjugateResidualSolver(int m)
Create a restart version of GCR solver with the restart parameter m.

Parameters:
m - the solver restarts for every m iterations
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.