Package cern.colt.matrix.linalg
Class LUDecomposition
- java.lang.Object
-
- cern.colt.matrix.linalg.LUDecomposition
-
- All Implemented Interfaces:
java.io.Serializable
public class LUDecomposition extends java.lang.Object implements java.io.Serializable
For an m x n matrix A with m >= n, the LU decomposition is an m x n unit lower triangular matrix L, an n x n upper triangular matrix U, and a permutation vector piv of length m so that A(piv,:) = L*U; If m < n, then L is m x m and U is m x n.The LU decomposition with pivoting always exists, even if the matrix is singular, so the constructor will never fail. The primary use of the LU decomposition is in the solution of square systems of simultaneous linear equations. This will fail if isNonsingular() returns false.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected LUDecompositionQuick
quick
(package private) static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description LUDecomposition(DoubleMatrix2D A)
Constructs and returns a new LU Decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
det()
Returns the determinant, det(A).private double[]
getDoublePivot()
Returns pivot permutation vector as a one-dimensional double arrayDoubleMatrix2D
getL()
Returns the lower triangular factor, L.int[]
getPivot()
Returns a copy of the pivot permutation vector.DoubleMatrix2D
getU()
Returns the upper triangular factor, U.boolean
isNonsingular()
Returns whether the matrix is nonsingular (has an inverse).DoubleMatrix2D
solve(DoubleMatrix2D B)
Solves A*X = B.java.lang.String
toString()
Returns a String with (propertyName, propertyValue) pairs.
-
-
-
Field Detail
-
serialVersionUID
static final long serialVersionUID
- See Also:
- Constant Field Values
-
quick
protected LUDecompositionQuick quick
-
-
Constructor Detail
-
LUDecomposition
public LUDecomposition(DoubleMatrix2D A)
Constructs and returns a new LU Decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.- Parameters:
A
- Rectangular matrix
-
-
Method Detail
-
det
public double det()
Returns the determinant, det(A).- Throws:
java.lang.IllegalArgumentException
- Matrix must be square
-
getDoublePivot
private double[] getDoublePivot()
Returns pivot permutation vector as a one-dimensional double array- Returns:
- (double) piv
-
getL
public DoubleMatrix2D getL()
Returns the lower triangular factor, L.- Returns:
- L
-
getPivot
public int[] getPivot()
Returns a copy of the pivot permutation vector.- Returns:
- piv
-
getU
public DoubleMatrix2D getU()
Returns the upper triangular factor, U.- Returns:
- U
-
isNonsingular
public boolean isNonsingular()
Returns whether the matrix is nonsingular (has an inverse).- Returns:
- true if U, and hence A, is nonsingular; false otherwise.
-
solve
public DoubleMatrix2D solve(DoubleMatrix2D B)
Solves A*X = B.- Parameters:
B
- A matrix with as many rows as A and any number of columns.- Returns:
- X so that L*U*X = B(piv,:).
- Throws:
java.lang.IllegalArgumentException
- if B.rows() != A.rows().java.lang.IllegalArgumentException
- if A is singular, that is, if !this.isNonsingular().java.lang.IllegalArgumentException
- if A.rows() < A.columns().
-
toString
public java.lang.String toString()
Returns a String with (propertyName, propertyValue) pairs. Useful for debugging or to quickly get the rough picture. For example,rank : 3 trace : 0
- Overrides:
toString
in classjava.lang.Object
-
-