public class LUDecomposition
extends java.lang.Object
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.
getP
method has been added,det
method has been renamed as getDeterminant
,getDoublePivot
method has been removed (but the int based
getPivot
method has been kept),solve
and isNonSingular
methods have been replaced
by a getSolver
method and the equivalent methods
provided by the returned DecompositionSolver
.Modifier and Type | Class and Description |
---|---|
private static class |
LUDecomposition.Solver
Specialized solver.
|
Modifier and Type | Field and Description |
---|---|
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 and 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.
|
Modifier and Type | Method and 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.
|
private static final double DEFAULT_TOO_SMALL
private final double[][] lu
private final int[] pivot
private boolean even
private boolean singular
private RealMatrix cachedL
private RealMatrix cachedU
private RealMatrix cachedP
public LUDecomposition(RealMatrix matrix)
matrix
- Matrix to decompose.NonSquareMatrixException
- if matrix is not square.public LUDecomposition(RealMatrix matrix, double singularityThreshold)
matrix
- The matrix to decompose.singularityThreshold
- threshold (based on partial row norm)
under which a matrix is considered singularNonSquareMatrixException
- if matrix is not squarepublic RealMatrix getL()
L is a lower-triangular matrix
public RealMatrix getU()
U is an upper-triangular matrix
public RealMatrix getP()
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
.
getPivot()
public int[] getPivot()
getP()
public double getDeterminant()
public DecompositionSolver getSolver()
Copyright (c) 2003-2016 Apache Software Foundation