Package org.hipparchus.linear
Class JacobiPreconditioner
- java.lang.Object
-
- org.hipparchus.linear.JacobiPreconditioner
-
- All Implemented Interfaces:
RealLinearOperator
public class JacobiPreconditioner extends Object implements RealLinearOperator
This class implements the standard Jacobi (diagonal) preconditioner. For a matrix Aij, this preconditioner is M = diag(1 / A11, 1 / A22, …).
-
-
Constructor Summary
Constructors Constructor Description JacobiPreconditioner(double[] diag, boolean deep)
Creates a new instance of this class.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static JacobiPreconditioner
create(RealLinearOperator a)
Creates a new instance of this class.int
getColumnDimension()
Returns the dimension of the domain of this operator.int
getRowDimension()
Returns the dimension of the codomain of this operator.RealVector
operate(RealVector x)
Returns the result of multiplyingthis
by the vectorx
.RealLinearOperator
sqrt()
Returns the square root ofthis
diagonal operator.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hipparchus.linear.RealLinearOperator
isTransposable, operateTranspose
-
-
-
-
Method Detail
-
create
public static JacobiPreconditioner create(RealLinearOperator a) throws MathIllegalArgumentException
Creates a new instance of this class. This method extracts the diagonal coefficients of the specified linear operator. Ifa
does not extendAbstractRealMatrix
, then the coefficients of the underlying matrix are not accessible, coefficient extraction is made by matrix-vector products with the basis vectors (and might therefore take some time). With matrices, direct entry access is carried out.- Parameters:
a
- the linear operator for which the preconditioner should be built- Returns:
- the diagonal preconditioner made of the inverse of the diagonal coefficients of the specified linear operator
- Throws:
MathIllegalArgumentException
- ifa
is not square
-
getColumnDimension
public int getColumnDimension()
Returns the dimension of the domain of this operator.- Specified by:
getColumnDimension
in interfaceRealLinearOperator
- Returns:
- the number of columns of the underlying matrix
-
getRowDimension
public int getRowDimension()
Returns the dimension of the codomain of this operator.- Specified by:
getRowDimension
in interfaceRealLinearOperator
- Returns:
- the number of rows of the underlying matrix
-
operate
public RealVector operate(RealVector x)
Returns the result of multiplyingthis
by the vectorx
.- Specified by:
operate
in interfaceRealLinearOperator
- Parameters:
x
- the vector to operate on- Returns:
- the product of
this
instance withx
-
sqrt
public RealLinearOperator sqrt()
Returns the square root ofthis
diagonal operator. More precisely, this method returns P = diag(1 / √A11, 1 / √A22, …).- Returns:
- the square root of
this
preconditioner
-
-