org.apache.commons.math3.linear
Class JacobiPreconditioner

java.lang.Object
  extended by org.apache.commons.math3.linear.RealLinearOperator
      extended by org.apache.commons.math3.linear.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
Version:
$Id: JacobiPreconditioner.java 7721 2013-02-14 14:07:13Z CardosoP $

Constructor Summary
JacobiPreconditioner(double[] diag, boolean deep)
          Creates a new instance of this class.
 
Method Summary
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 multiplying this by the vector x.
 RealLinearOperator sqrt()
          Returns the square root of this diagonal operator.
 
Methods inherited from class org.apache.commons.math3.linear.RealLinearOperator
isTransposable, operateTranspose
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

getColumnDimension

public int getColumnDimension()
Returns the dimension of the domain of this operator.

Specified by:
getColumnDimension in class 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 class 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 class 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
Since:
3.1


Copyright © 2016 CNES. All Rights Reserved.