|
SuanShu, a Java numerical and statistical library | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Objectcom.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.nonstationary.ConjugateGradientSolver
public class ConjugateGradientSolver
The Conjugate Gradient method (CG) is useful for solving symmetric n-by-n linear systems. The method derives its name from the fact that it generates a sequence of conjugate (or orthogonal) vectors. These vectors are the residuals of the iterates. They are also the gradients of a quadratic functional, the minimization of which is equivalent to solving the linear system. CG is an extremely effective method when the coefficient matrix is symmetric positive definite, since storage for only a limited number of vectors is required.
If A is symmetric, positive-definite and square, the algorithm solves
Ax = bNote that if the coefficient matrix A passed into the algorithm is not symmetric positive-definite, the algorithm behaves unexpectedly.
This algorithm can still be used to solve systems where A is not symmetric, not positive-definite, and even not square. For over-determined systems, use CGNR. For under-determined systems, use CGNE.
Only left preconditioning is supported in this implementation. It requires in addition that the preconditioner is symmetric and positive definite.
| 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 | |
|---|---|
ConjugateGradientSolver()
|
|
ConjugateGradientSolver(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 |
|---|
public static final int DEFAULT_RESIDUAL_REFRESH_RATE
| Constructor Detail |
|---|
public ConjugateGradientSolver()
public ConjugateGradientSolver(int residualRefreshRate)
residualRefreshRate - the number of iterations before the next refresh| Method Detail |
|---|
public Vector solve(IterativeSolver.Problem problem)
throws IterativeSolver.ConvergenceFailure
IterativeSolverAx = buntil the solution is close enough, i.e., the norm of residual (b - Ax) is less than or equal to the specified iteration.
solve in interface IterativeSolverproblem - the problem of solving Ax = b
IterativeSolver.ConvergenceFailure - if the algorithm fails to converge
public Vector solve(IterativeSolver.Problem problem,
IterationMonitor monitor)
throws IterativeSolver.ConvergenceFailure
IterativeSolverAx = buntil 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.
solve in interface IterativeSolverproblem - the problem of solving Ax = bmonitor - an IterationMonitor instance
IterativeSolver.ConvergenceFailure - if the algorithm fails to converge
|
SuanShu, a Java numerical and statistical library | |||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||