## Class 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 Detail

• #### JacobiPreconditioner

public JacobiPreconditioner​(double[] diag,
boolean deep)
Creates a new instance of this class.
Parameters:
diag - the diagonal coefficients of the linear operator to be preconditioned
deep - true if a deep copy of the above array should be performed
• ### 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. If a does not extend AbstractRealMatrix, 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 - if a is not square
• #### getColumnDimension

public int getColumnDimension()
Returns the dimension of the domain of this operator.
Specified by:
getColumnDimension in interface RealLinearOperator
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 interface RealLinearOperator
Returns:
the number of rows of the underlying matrix
• #### operate

public RealVector operate​(RealVector x)
Returns the result of multiplying this by the vector x.
Specified by:
operate in interface RealLinearOperator
Parameters:
x - the vector to operate on
Returns:
the product of this instance with x
• #### sqrt

public RealLinearOperator sqrt()
Returns the square root of this diagonal operator. More precisely, this method returns P = diag(1 / √A11, 1 / √A22, …).
Returns:
the square root of this preconditioner