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 Details

    • 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 Details

    • create

      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