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(A11, A22, …). create(RealLinearOperator) returns the inverse of this preconditioner, M-1 = diag(1 / A11, 1 / A22, …)

Since:
3.0
Version:
$Id: JacobiPreconditioner.java 1244107 2012-02-14 16:17:55Z erans $

Field Summary
private  ArrayRealVector diag
          The diagonal coefficients of the preconditioner.
 
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.
 
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
 

Field Detail

diag

private final ArrayRealVector diag
The diagonal coefficients of the preconditioner.

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 inverse of the 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


Copyright (c) 2003-2013 Apache Software Foundation