Class LUDecomposition

java.lang.Object
cern.colt.matrix.linalg.LUDecomposition
All Implemented Interfaces:
Serializable

public class LUDecomposition extends Object implements 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 invalid input: '<' 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:
  • Field Details

  • Constructor Details

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

    • det

      public double det()
      Returns the determinant, det(A).
      Throws:
      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:
      IllegalArgumentException - if B.rows() != A.rows().
      IllegalArgumentException - if A is singular, that is, if !this.isNonsingular().
      IllegalArgumentException - if A.rows() invalid input: '<' A.columns().
    • toString

      public 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 class Object