Class LUDecomposition


  • public class LUDecomposition
    extends Object
    Calculates the LUP-decomposition of a square matrix.

    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.

    • a getP method has been added,
    • the det method has been renamed as getDeterminant,
    • the getDoublePivot method has been removed (but the int based getPivot method has been kept),
    • the solve and isNonSingular methods have been replaced by a getSolver method and the equivalent methods provided by the returned DecompositionSolver.
    Since:
    2.0 (changed to concrete class in 3.0)
    See Also:
    MathWorld, Wikipedia
    • Constructor Detail

      • LUDecomposition

        public LUDecomposition​(RealMatrix matrix)
        Calculates the LU-decomposition of the given matrix. This constructor uses 1e-11 as default value for the singularity threshold.
        Parameters:
        matrix - Matrix to decompose.
        Throws:
        NonSquareMatrixException - if matrix is not square.
      • LUDecomposition

        public LUDecomposition​(RealMatrix matrix,
                               double singularityThreshold)
        Calculates the LU-decomposition of the given matrix.
        Parameters:
        matrix - The matrix to decompose.
        singularityThreshold - threshold (based on partial row norm) under which a matrix is considered singular
        Throws:
        NonSquareMatrixException - if matrix is not square
    • Method Detail

      • getL

        public RealMatrix getL()
        Returns the matrix L of the decomposition.

        L is a lower-triangular matrix

        Returns:
        the L matrix (or null if decomposed matrix is singular)
      • getU

        public RealMatrix getU()
        Returns the matrix U of the decomposition.

        U is an upper-triangular matrix

        Returns:
        the U matrix (or null if decomposed matrix is singular)
      • getP

        public RealMatrix getP()
        Returns the P rows permutation matrix.

        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.

        Returns:
        the P rows permutation matrix (or null if decomposed matrix is singular)
        See Also:
        getPivot()
      • getPivot

        public int[] getPivot()
        Returns the pivot permutation vector.
        Returns:
        the pivot permutation vector
        See Also:
        getP()
      • getDeterminant

        public double getDeterminant()
        Return the determinant of the matrix.
        Returns:
        determinant of the matrix
      • getSolver

        public DecompositionSolver getSolver()
        Get a solver for finding the A × X = B solution in exact linear sense.
        Returns:
        a solver