org.apache.commons.math3.linear

## Class LUDecomposition

- java.lang.Object
- - org.apache.commons.math3.linear.LUDecomposition

-     public class LUDecomposition
      extends java.lang.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)
  Version:
    $Id: LUDecomposition.java 1416643 2012-12-03 19:37:14Z tn $
  See Also:
    MathWorld, Wikipedia

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private static class` | `LUDecomposition.Solver` Specialized solver.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private RealMatrix` | `cachedL` Cached value of L.
    `private RealMatrix` | `cachedP` Cached value of P.
    `private RealMatrix` | `cachedU` Cached value of U.
    `private static double` | `DEFAULT_TOO_SMALL` Default bound to determine effective singularity in LU decomposition.
    `private boolean` | `even` Parity of the permutation associated with the LU decomposition.
    `private double[][]` | `lu` Entries of LU decomposition.
    `private int[]` | `pivot` Pivot permutation associated with LU decomposition.
    `private boolean` | `singular` Singularity indicator.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LUDecomposition(RealMatrix matrix)` Calculates the LU-decomposition of the given matrix.
    `LUDecomposition(RealMatrix matrix, double singularityThreshold)` Calculates the LU-decomposition of the given matrix.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `getDeterminant()` Return the determinant of the matrix
    `RealMatrix` | `getL()` Returns the matrix L of the decomposition.
    `RealMatrix` | `getP()` Returns the P rows permutation matrix.
    `int[]` | `getPivot()` Returns the pivot permutation vector.
    `DecompositionSolver` | `getSolver()` Get a solver for finding the A × X = B solution in exact linear sense.
    `RealMatrix` | `getU()` Returns the matrix U of the decomposition.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_TOO_SMALL

          private static final double DEFAULT_TOO_SMALL

      Default bound to determine effective singularity in LU decomposition.
      See Also:
        Constant Field Values

    - #### lu

          private final double[][] lu

      Entries of LU decomposition.

    - #### pivot

          private final int[] pivot

      Pivot permutation associated with LU decomposition.

    - #### even

          private boolean even

      Parity of the permutation associated with the LU decomposition.

    - #### singular

          private boolean singular

      Singularity indicator.

    - #### cachedL

          private RealMatrix cachedL

      Cached value of L.

    - #### cachedU

          private RealMatrix cachedU

      Cached value of U.

    - #### cachedP

          private RealMatrix cachedP

      Cached value of P.

  - ### 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

Copyright (c) 2003-2013 Apache Software Foundation