Class 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
    • 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 array
      DoubleMatrix2D 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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 class java.lang.Object