org.apache.commons.math3.linear
Class LUDecomposition

java.lang.Object
  extended by org.apache.commons.math3.linear.LUDecomposition

public class LUDecomposition
extends Object

Calculates the LUP-decomposition of a square matrix.

The LUP-decomposition of a matrix A consists of three matrices L, U and P that satisfy: P×A = L×U. L is lower triangular (with unit diagonal terms), U is upper triangular and P is a permutation matrix. All matrices are m×m.

As shown by the presence of the P matrix, this decomposition is implemented using partial pivoting.

This class is based on the class with similar name from the JAMA library.

Since:
2.0 (changed to concrete class in 3.0)
Version:
$Id: LUDecomposition.java 1416643 2012-12-03 19:37:14Z tn $
See Also:
MathWorld, Wikipedia

Nested Class Summary
private static class LUDecomposition.Solver
          Specialized solver.
 
Field Summary
private  RealMatrix cachedL
          Cached value of L.
private  RealMatrix cachedP
          Cached value of P.
private  RealMatrix cachedU
          Cached value of U.
private static double DEFAULT_TOO_SMALL
          Default bound to determine effective singularity in LU decomposition.
private  boolean even
          Parity of the permutation associated with the LU decomposition.
private  double[][] lu
          Entries of LU decomposition.
private  int[] pivot
          Pivot permutation associated with LU decomposition.
private  boolean singular
          Singularity indicator.
 
Constructor Summary
LUDecomposition(RealMatrix matrix)
          Calculates the LU-decomposition of the given matrix.
LUDecomposition(RealMatrix matrix, double singularityThreshold)
          Calculates the LU-decomposition of the given matrix.
 
Method Summary
 double getDeterminant()
          Return the determinant of the matrix
 RealMatrix getL()
          Returns the matrix L of the decomposition.
 RealMatrix getP()
          Returns the P rows permutation matrix.
 int[] getPivot()
          Returns the pivot permutation vector.
 DecompositionSolver getSolver()
          Get a solver for finding the A × X = B solution in exact linear sense.
 RealMatrix getU()
          Returns the matrix U of the decomposition.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_TOO_SMALL

private static final double DEFAULT_TOO_SMALL
Default bound to determine effective singularity in LU decomposition.

See Also:
Constant Field Values

lu

private final double[][] lu
Entries of LU decomposition.


pivot

private final int[] pivot
Pivot permutation associated with LU decomposition.


even

private boolean even
Parity of the permutation associated with the LU decomposition.


singular

private boolean singular
Singularity indicator.


cachedL

private RealMatrix cachedL
Cached value of L.


cachedU

private RealMatrix cachedU
Cached value of U.


cachedP

private RealMatrix cachedP
Cached value of P.

Constructor Detail

LUDecomposition

public LUDecomposition(RealMatrix matrix)
Calculates the LU-decomposition of the given matrix. This constructor uses 1e-11 as default value for the singularity threshold.

Parameters:
matrix - Matrix to decompose.
Throws:
NonSquareMatrixException - if matrix is not square.

LUDecomposition

public LUDecomposition(RealMatrix matrix,
                       double singularityThreshold)
Calculates the LU-decomposition of the given matrix.

Parameters:
matrix - The matrix to decompose.
singularityThreshold - threshold (based on partial row norm) under which a matrix is considered singular
Throws:
NonSquareMatrixException - if matrix is not square
Method Detail

getL

public RealMatrix getL()
Returns the matrix L of the decomposition.

L is a lower-triangular matrix

Returns:
the L matrix (or null if decomposed matrix is singular)

getU

public RealMatrix getU()
Returns the matrix U of the decomposition.

U is an upper-triangular matrix

Returns:
the U matrix (or null if decomposed matrix is singular)

getP

public RealMatrix getP()
Returns the P rows permutation matrix.

P is a sparse matrix with exactly one element set to 1.0 in each row and each column, all other elements being set to 0.0.

The positions of the 1 elements are given by the pivot permutation vector.

Returns:
the P rows permutation matrix (or null if decomposed matrix is singular)
See Also:
getPivot()

getPivot

public int[] getPivot()
Returns the pivot permutation vector.

Returns:
the pivot permutation vector
See Also:
getP()

getDeterminant

public double getDeterminant()
Return the determinant of the matrix

Returns:
determinant of the matrix

getSolver

public DecompositionSolver getSolver()
Get a solver for finding the A × X = B solution in exact linear sense.

Returns:
a solver


Copyright (c) 2003-2013 Apache Software Foundation