Top Description Fields Constructors Methods
org.apache.commons.math3.linear

public Class ConjugateGradient

extends PreconditionedIterativeLinearSolver
Class Inheritance
Imports
org.apache.commons.math3.exception.DimensionMismatchException, .MaxCountExceededException, .NullArgumentException, org.apache.commons.math3.exception.util.ExceptionContext, org.apache.commons.math3.util.IterationManager

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.

Default stopping criterion

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).

Iteration count

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.

Exception context

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

References

Barret et al. (1994)
R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. M. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine and H. Van der Vorst, Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, SIAM
Strakos and Tichy (2002)
Z. Strakos and P. Tichy, On error estimation in the conjugate gradient method and why it works in finite precision computations, Electronic Transactions on Numerical Analysis 13: 56-80, 2002
Since
3.0

Field Summary

Modifier and TypeField and Description
private boolean
check

true if positive-definiteness of matrix and preconditioner should be checked.

private final double
delta

The value of δ, for the default stopping criterion.

public static final String
public static final String

Constructor Summary

AccessConstructor and Description
public
ConjugateGradient(final int
the maximum number of iterations
maxIterations
,
final double
the δ parameter for the default stopping criterion
delta
,
final boolean
true if positive definiteness of both matrix and preconditioner should be checked
check
)

Creates a new instance of this class, with default stopping criterion.

public
ConjugateGradient(final IterationManager
the custom iteration manager
manager
,
final double
the δ parameter for the default stopping criterion
delta
,
final boolean
true if positive definiteness of both matrix and preconditioner should be checked
check
)

Creates a new instance of this class, with default stopping criterion and custom iteration manager.

Method Summary

Modifier and TypeMethod and Description
public final boolean

Returns:

true if the tests are to be performed
getCheck
()

Returns true if positive-definiteness should be checked for both matrix and preconditioner.

public RealVector
solveInPlace(final RealLinearOperator
the linear operator A of the system
a
,
final RealLinearOperator
the preconditioner, M (can be null)
m
,
final RealVector
the right-hand side vector
b
,
final RealVector
the initial guess of the solution
x0
)

Implements abstract org.apache.commons.math3.linear.PreconditionedIterativeLinearSolver.solveInPlace.

Returns an estimate of the solution to the linear system A · x = b.

Inherited from org.apache.commons.math3.linear.PreconditionedIterativeLinearSolver:
checkParameterssolvesolvesolvesolvesolveInPlace

Field Detail

checkback to summary
private boolean check

true if positive-definiteness of matrix and preconditioner should be checked.

deltaback to summary
private final double delta

The value of δ, for the default stopping criterion.

OPERATORback to summary
public static final String OPERATOR

Key for the exception context.

VECTORback to summary
public static final String VECTOR

Key for the exception context.

Constructor Detail

ConjugateGradientback to summary
public ConjugateGradient(final int maxIterations, final double delta, final boolean check)

Creates a new instance of this class, with default stopping criterion.

Parameters
maxIterations:int

the maximum number of iterations

delta:double

the δ parameter for the default stopping criterion

check:boolean

true if positive definiteness of both matrix and preconditioner should be checked

ConjugateGradientback to summary
public ConjugateGradient(final IterationManager manager, final double delta, final boolean check) throws NullArgumentException

Creates a new instance of this class, with default stopping criterion and custom iteration manager.

Parameters
manager:IterationManager

the custom iteration manager

delta:double

the δ parameter for the default stopping criterion

check:boolean

true if positive definiteness of both matrix and preconditioner should be checked

Exceptions
NullArgumentException:
if manager is null

Method Detail

getCheckback to summary
public final boolean getCheck()

Returns true if positive-definiteness should be checked for both matrix and preconditioner.

Returns:boolean

true if the tests are to be performed

solveInPlaceback to summary
public RealVector solveInPlace(final RealLinearOperator a, final RealLinearOperator m, final RealVector b, final RealVector x0) throws NullArgumentException, NonPositiveDefiniteOperatorException, NonSquareOperatorException, DimensionMismatchException, MaxCountExceededException

Implements abstract org.apache.commons.math3.linear.PreconditionedIterativeLinearSolver.solveInPlace.

Doc from org.apache.commons.math3.linear.PreconditionedIterativeLinearSolver.solveInPlace.

Returns an estimate of the solution to the linear system A · x = b. The solution is computed in-place (initial guess is modified).

Parameters
a:RealLinearOperator

the linear operator A of the system

m:RealLinearOperator

the preconditioner, M (can be null)

b:RealVector

the right-hand side vector

x0:RealVector

the initial guess of the solution

Returns:RealVector

a reference to x0 (shallow copy) updated with the solution

Annotations
@Override
Exceptions
NullArgumentException:
if one of the parameters is null
NonPositiveDefiniteOperatorException:
if a or m is not positive definite
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 of the IterationManager