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