jvx.numeric
Class PnConjugateGradientMatrix
- java.lang.Object
-
- jvx.numeric.PnConjugateGradientMatrix
-
- Direct Known Subclasses:
- PnBiconjugateGradient
public class PnConjugateGradientMatrix extends java.lang.ObjectSolve symmetric sparse linear equation systems using preconditioned conjugate gradient method.- Author:
- Jonas Hurrelmann
- Version:
- 09.12.2010, 1.01 revised (fk) Removed unused field m_eps to avoid confusion with m_tol. 02.12.2005, 1.00 created (jh)
-
-
Constructor Summary
Constructors Constructor and Description PnConjugateGradientMatrix()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description booleanconverged()Returns whether the residual norm is within the tolerance.doublegetActualEstimatedError()Get estimated error of last solve call.intgetActualNumOfTakenIterations()Get number of iterations used in last solve call.doublegetConvergenceTest()There are four different methods measure the convergence of the solution of the linear equation used in solve.intgetDimension()Get dimension.intgetMaxNumIterations()Get maximum number of allowed iterations.PnPreconditionergetPreconditioner()Set the preconditioner to use for the conjugate gradient.doublegetTolerance()Get desired convergence tolerance of solve.voidsetConvergenceTest(int aTest)There are four different methods used to measure the convergence of the solution of the linear equation in solve, the default is 1.voidsetDimension(int dim)Set dimension of surface matrix is based on.voidsetMaxNumIterations(int itmax)Set maximum number of allowed iterations.voidsetPreconditioner(PnPreconditioner prec)Set the preconditioner to use for the conjugate gradient.voidsetTolerance(double tol)Set desired convergence tolerance of solve.doublesolve(PnSparseMatrix smat, PdVector x, PdVector b)Performs a conjugate gradient on a sparse matrix to solve the linear system Ax = b.voidupdatePreconditioner(PnSparseMatrix smat)When the sparse matrix to solve has changed update the preconditioner with this method.
-
-
-
Method Detail
-
converged
public boolean converged()
Returns whether the residual norm is within the tolerance.- Returns:
trueif convergence happened within tolerance.
-
setPreconditioner
public void setPreconditioner(PnPreconditioner prec)
Set the preconditioner to use for the conjugate gradient.- Parameters:
prec-
-
getPreconditioner
public PnPreconditioner getPreconditioner()
Set the preconditioner to use for the conjugate gradient.
-
getActualEstimatedError
public double getActualEstimatedError()
Get estimated error of last solve call.
-
getActualNumOfTakenIterations
public int getActualNumOfTakenIterations()
Get number of iterations used in last solve call.
-
setMaxNumIterations
public void setMaxNumIterations(int itmax)
Set maximum number of allowed iterations. Default value is 10000.
-
getMaxNumIterations
public int getMaxNumIterations()
Get maximum number of allowed iterations.
-
setTolerance
public void setTolerance(double tol)
Set desired convergence tolerance of solve.
-
getTolerance
public double getTolerance()
Get desired convergence tolerance of solve.
-
setDimension
public void setDimension(int dim)
Set dimension of surface matrix is based on. Coordinate vectors must have length equal dim*(dim of sparseMatrix).
-
getDimension
public int getDimension()
Get dimension.
-
setConvergenceTest
public void setConvergenceTest(int aTest)
There are four different methods used to measure the convergence of the solution of the linear equation in solve, the default is 1.1. |A*x-b|/|b|<tol<br> 2. |Diag(A)^-1*x-b|/|Diag(A)^-1*b|<tol<br> With Diag(A) denoting the diagonal part of A.<br> 3. This routine uses its own estimate of error in x, and requires its magnitude, divided by the magnitude of x, to be less than tol.<br> 4. Same as 3., except that the largest (in absolute value) component of the error and the largest component of x are used instead of the vector magnitude.
-
getConvergenceTest
public double getConvergenceTest()
There are four different methods measure the convergence of the solution of the linear equation used in solve. Get the index of the method actually used.- See Also:
setConvergenceTest(int)
-
updatePreconditioner
public void updatePreconditioner(PnSparseMatrix smat)
When the sparse matrix to solve has changed update the preconditioner with this method.
-
solve
public double solve(PnSparseMatrix smat, PdVector x, PdVector b)
Performs a conjugate gradient on a sparse matrix to solve the linear system Ax = b. The matrix has to be square.- Returns:
- size of residual
- Version:
- 02.05.2008, 1.10 revised (fk) speedup. 02.12.2005, 1.00 created (jh)
-
-
"