|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.math.linear.IterativeLinearSolver
org.apache.commons.math.linear.PreconditionedIterativeLinearSolver
org.apache.commons.math.linear.ConjugateGradient
public class ConjugateGradient
This is an implementation of the conjugate gradient method for
RealLinearOperator. It follows closely the template by Barrett et al. (1994) (figure 2.5). The linear system at
hand is A · x = b, and the residual is r = b - A · x.
A default stopping criterion is implemented. The iterations stop when || r || ≤ δ || b ||, where b is the right-hand side vector, r the current estimate of the residual, and δ a user-specified tolerance. It should be noted that r is the so-called updated residual, which might differ from the true residual due to rounding-off errors (see e.g. Strakos and Tichy, 2002).
In the present context, an iteration should be understood as one evaluation of the matrix-vector product A · x. The initialization phase therefore counts as one iteration.
Besides standard DimensionMismatchException, this class might throw
NonPositiveDefiniteOperatorException if the linear operator or
the preconditioner are not positive definite. In this case, the
ExceptionContext provides some more information
"operator" points to the offending linear operator, say L,"vector" points to the offending vector, say x, such that
xT · L · x < 0.
| Nested Class Summary | |
|---|---|
static class |
ConjugateGradient.ConjugateGradientEvent
The type of all events fired by this implementation of the Conjugate Gradient method. |
| Field Summary | |
|---|---|
static java.lang.String |
OPERATOR
Key for the exception context. |
static java.lang.String |
VECTOR
Key for the exception context. |
| Constructor Summary | |
|---|---|
ConjugateGradient(int maxIterations,
double delta,
boolean check)
Creates a new instance of this class, with default stopping criterion. |
|
ConjugateGradient(IterationManager manager,
double delta,
boolean check)
Creates a new instance of this class, with default stopping criterion and custom iteration manager. |
|
| Method Summary | |
|---|---|
boolean |
getCheck()
Returns true if positive-definiteness should be checked for both
matrix and preconditioner. |
RealVector |
solveInPlace(RealLinearOperator a,
InvertibleRealLinearOperator m,
RealVector b,
RealVector x0)
Returns an estimate of the solution to the linear system A · x = b. |
| Methods inherited from class org.apache.commons.math.linear.PreconditionedIterativeLinearSolver |
|---|
checkParameters, solve, solve, solve, solve, solveInPlace |
| Methods inherited from class org.apache.commons.math.linear.IterativeLinearSolver |
|---|
checkParameters, getIterationManager |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String OPERATOR
public static final java.lang.String VECTOR
| Constructor Detail |
|---|
public ConjugateGradient(int maxIterations,
double delta,
boolean check)
maxIterations - Maximum number of iterations.delta - δ parameter for the default stopping criterion.check - true if positive definiteness of both matrix and
preconditioner should be checked.
public ConjugateGradient(IterationManager manager,
double delta,
boolean check)
manager - Custom iteration manager.delta - δ parameter for the default stopping criterion.check - true if positive definiteness of both matrix and
preconditioner should be checked.| Method Detail |
|---|
public final boolean getCheck()
true if positive-definiteness should be checked for both
matrix and preconditioner.
true if the tests are to be performed.
public RealVector solveInPlace(RealLinearOperator a,
InvertibleRealLinearOperator m,
RealVector b,
RealVector x0)
throws NullArgumentException,
NonSquareOperatorException,
DimensionMismatchException,
MaxCountExceededException
solveInPlace in class PreconditionedIterativeLinearSolvera - Linear operator A of the system.m - Preconditioner (can be null).b - Right-hand side vector.x0 - Initial guess of the solution.
x0 (shallow copy) updated with the
solution.
NullArgumentException - if one of the parameters is null.
NonSquareOperatorException - if a or m is not
square.
DimensionMismatchException - if m, b or x0
have dimensions inconsistent with a.
MaxCountExceededException - at exhaustion of the iteration count,
unless a custom callback has been set at
construction.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||