Package org.apache.commons.math3.linear

# Class LUDecomposition

java.lang.Object
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.

- a `getP` method has been added,
- the `det` method has been renamed as `getDeterminant`,
- the `getDoublePivot` method has been removed (but the int based `getPivot` method has been kept),
- the `solve` and `isNonSingular` methods have been replaced by a `getSolver` method and the equivalent methods provided by the returned `DecompositionSolver`.

Since:
  2.0 (changed to concrete class in 3.0)
See Also:
  - MathWorld
  - Wikipedia

## Constructor Summary

Constructors
Constructor
Description
`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

Modifier and Type
Method
Description
`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`

## Constructor Details

### 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 Details

### 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