Class LUDecomposition<F extends Field<F>>
- java.lang.Object
-
- org.jscience.mathematics.vector.LUDecomposition<F>
-
public final class LUDecomposition<F extends Field<F>> extends java.lang.Object
This class represents the decomposition of a
matrixAinto a product of aloweranduppertriangular matrices,LandUrespectively, such asA = P·L·UwithPapermutationmatrix.This decomposition is typically used to resolve linear systems of equations (Gaussian elimination) or to calculate the determinant of a square
Matrix(O(m³)).Numerical stability is guaranteed through pivoting if the
Fieldelements arenumbersFor others elements types, numerical stability can be ensured by setting thecontext-localpivot comparator (seesetPivotComparator(java.util.Comparator<org.jscience.mathematics.structure.Field>)).Pivoting can be disabled by setting the
pivot comparatortonull(Pis then the matrix identity).- Version:
- 3.3, January 2, 2007
- Author:
- Jean-Marie Dautelle
- See Also:
- Wikipedia: LU decomposition
-
-
Field Summary
Fields Modifier and Type Field Description static java.util.Comparator<Field>NUMERIC_COMPARATORHolds the default comparator for pivoting.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Fdeterminant()Returns the determinant of theMatrixhaving this decomposition.DenseMatrix<F>getLower(F zero, F one)Returns the lower matrix decomposition (L) with diagonal elements equal to the multiplicative identity for F.DenseMatrix<F>getLU()Returns the lower/upper decomposition in one single matrix.SparseMatrix<F>getPermutation(F zero, F one)Returns the permutation matrix (P).static java.util.Comparator<Field>getPivotComparator()Returns thelocalcomparator used for pivoting ornullif pivoting is not performed (defaultNUMERIC_COMPARATOR).javolution.util.FastTable<javolution.util.Index>getPivots()Returns the pivots elements of this decomposition.DenseMatrix<F>getUpper(F zero)Returns the upper matrix decomposition (U).DenseMatrix<F>inverse()Returns the solution X of the equation: A * X = Identity withthis = A.lu()using back and forward substitutions.static voidsetPivotComparator(java.util.Comparator<Field> cmp)Sets thelocalcomparator used for pivoting ornullto disable pivoting.DenseMatrix<F>solve(Matrix<F> B)Returns the solution X of the equation: A * X = B withthis = A.lu()using back and forward substitutions.static <F extends Field<F>>
LUDecomposition<F>valueOf(Matrix<F> source)Returns the lower/upper decomposition of the specified matrix.
-
-
-
Field Detail
-
NUMERIC_COMPARATOR
public static final java.util.Comparator<Field> NUMERIC_COMPARATOR
Holds the default comparator for pivoting.
-
-
Method Detail
-
valueOf
public static <F extends Field<F>> LUDecomposition<F> valueOf(Matrix<F> source)
Returns the lower/upper decomposition of the specified matrix.- Parameters:
source- the matrix for which the decomposition is calculated.- Returns:
- the lower/upper decomposition of the specified matrix.
- Throws:
DimensionException- if the specified matrix is not square.
-
setPivotComparator
public static void setPivotComparator(java.util.Comparator<Field> cmp)
Sets thelocalcomparator used for pivoting ornullto disable pivoting.- Parameters:
cmp- the comparator for pivoting ornull.
-
getPivotComparator
public static java.util.Comparator<Field> getPivotComparator()
Returns thelocalcomparator used for pivoting ornullif pivoting is not performed (defaultNUMERIC_COMPARATOR).- Returns:
- the comparator for pivoting or
null.
-
solve
public DenseMatrix<F> solve(Matrix<F> B)
Returns the solution X of the equation: A * X = B withthis = A.lu()using back and forward substitutions.- Parameters:
B- the input matrix.- Returns:
- the solution X = (1 / A) * B.
- Throws:
DimensionException- if the dimensions do not match.
-
inverse
public DenseMatrix<F> inverse()
Returns the solution X of the equation: A * X = Identity withthis = A.lu()using back and forward substitutions.- Returns:
this.solve(Identity)
-
determinant
public F determinant()
Returns the determinant of theMatrixhaving this decomposition.- Returns:
- the determinant of the matrix source.
-
getLower
public DenseMatrix<F> getLower(F zero, F one)
Returns the lower matrix decomposition (L) with diagonal elements equal to the multiplicative identity for F.- Parameters:
zero- the additive identity for F.one- the multiplicative identity for F.- Returns:
- the lower matrix.
-
getUpper
public DenseMatrix<F> getUpper(F zero)
Returns the upper matrix decomposition (U).- Parameters:
zero- the additive identity for F.- Returns:
- the upper matrix.
-
getPermutation
public SparseMatrix<F> getPermutation(F zero, F one)
Returns the permutation matrix (P).- Parameters:
zero- the additive identity for F.one- the multiplicative identity for F.- Returns:
- the permutation matrix.
-
getLU
public DenseMatrix<F> getLU()
Returns the lower/upper decomposition in one single matrix.- Returns:
- the lower/upper matrix merged in a single matrix.
-
getPivots
public javolution.util.FastTable<javolution.util.Index> getPivots()
Returns the pivots elements of this decomposition.- Returns:
- the row indices after permutation.
-
-