org.apache.commons.math3.linear

## Class CholeskyDecomposition

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

-     public class CholeskyDecomposition
      extends java.lang.Object

  Calculates the Cholesky decomposition of a matrix.

  The Cholesky decomposition of a real symmetric positive-definite matrix A consists of a lower triangular matrix L with same size such that: A = LLT. In a sense, this is the square root of A.

  This class is based on the class with similar name from the JAMA library, with the following changes:

  - a `getLT` method has been added,
  - the `isspd` method has been removed, since the constructor of this class throws a `NonPositiveDefiniteMatrixException` when a matrix cannot be decomposed,
  - a `getDeterminant` method has been added,
  - the `solve` method has been replaced by a `getSolver` method and the equivalent method provided by the returned `DecompositionSolver`.
  Since:
    2.0 (changed to concrete class in 3.0)
  Version:
    $Id: CholeskyDecomposition.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` | `CholeskyDecomposition.Solver` Specialized solver.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private RealMatrix` | `cachedL` Cached value of L.
    `private RealMatrix` | `cachedLT` Cached value of LT.
    `static double` | `DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD` Default threshold below which diagonal elements are considered null and matrix not positive definite.
    `static double` | `DEFAULT_RELATIVE_SYMMETRY_THRESHOLD` Default threshold above which off-diagonal elements are considered too different and matrix not symmetric.
    `private double[][]` | `lTData` Row-oriented storage for LT matrix data.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CholeskyDecomposition(RealMatrix matrix)` Calculates the Cholesky decomposition of the given matrix.
    `CholeskyDecomposition(RealMatrix matrix, double relativeSymmetryThreshold, double absolutePositivityThreshold)` Calculates the Cholesky 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` | `getLT()` Returns the transpose of the matrix L of the decomposition.
    `DecompositionSolver` | `getSolver()` Get a solver for finding the A × X = B solution in least square sense.

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

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

- - ### Field Detail

    - #### DEFAULT_RELATIVE_SYMMETRY_THRESHOLD

          public static final double DEFAULT_RELATIVE_SYMMETRY_THRESHOLD

      Default threshold above which off-diagonal elements are considered too different and matrix not symmetric.
      See Also:
        Constant Field Values

    - #### DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD

          public static final double DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD

      Default threshold below which diagonal elements are considered null and matrix not positive definite.
      See Also:
        Constant Field Values

    - #### lTData

          private double[][] lTData

      Row-oriented storage for LT matrix data.

    - #### cachedL

          private RealMatrix cachedL

      Cached value of L.

    - #### cachedLT

          private RealMatrix cachedLT

      Cached value of LT.

  - ### Constructor Detail

    - #### CholeskyDecomposition

          public CholeskyDecomposition(RealMatrix matrix)

      Calculates the Cholesky decomposition of the given matrix.

      Calling this constructor is equivalent to call `CholeskyDecomposition(RealMatrix, double, double)` with the thresholds set to the default values `DEFAULT_RELATIVE_SYMMETRY_THRESHOLD` and `DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD`

      Parameters:
        `matrix` - the matrix to decompose
      Throws:
        `NonSquareMatrixException` - if the matrix is not square.
        `NonSymmetricMatrixException` - if the matrix is not symmetric.
        `NonPositiveDefiniteMatrixException` - if the matrix is not strictly positive definite.
      See Also:
        `CholeskyDecomposition(RealMatrix, double, double)`, `DEFAULT_RELATIVE_SYMMETRY_THRESHOLD`, `DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD`

    - #### CholeskyDecomposition

          public CholeskyDecomposition(RealMatrix matrix,
                               double relativeSymmetryThreshold,
                               double absolutePositivityThreshold)

      Calculates the Cholesky decomposition of the given matrix.
      Parameters:
        `matrix` - the matrix to decompose
        `relativeSymmetryThreshold` - threshold above which off-diagonal elements are considered too different and matrix not symmetric
        `absolutePositivityThreshold` - threshold below which diagonal elements are considered null and matrix not positive definite
      Throws:
        `NonSquareMatrixException` - if the matrix is not square.
        `NonSymmetricMatrixException` - if the matrix is not symmetric.
        `NonPositiveDefiniteMatrixException` - if the matrix is not strictly positive definite.
      See Also:
        `CholeskyDecomposition(RealMatrix)`, `DEFAULT_RELATIVE_SYMMETRY_THRESHOLD`, `DEFAULT_ABSOLUTE_POSITIVITY_THRESHOLD`

  - ### Method Detail

    - #### getL

          public RealMatrix getL()

      Returns the matrix L of the decomposition.

      L is an lower-triangular matrix

      Returns:
        the L matrix

    - #### getLT

          public RealMatrix getLT()

      Returns the transpose of the matrix L of the decomposition.

      LT is an upper-triangular matrix

      Returns:
        the transpose of the matrix L of the decomposition

    - #### 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 least square sense.
      Returns:
        a solver

Copyright (c) 2003-2013 Apache Software Foundation