Class JacobiPreconditioner


  • public class JacobiPreconditioner
    extends RealLinearOperator
    This class implements the standard Jacobi (diagonal) preconditioner. For a matrix Aij, this preconditioner is M = diag(1 / A11, 1 / A22, …).
    Since:
    3.0
    • 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 NonSquareOperatorException
        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:
        NonSquareOperatorException - if a is not square
      • 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
        Since:
        3.1