Class RectangularCholeskyDecomposition
- java.lang.Object
-
- org.hipparchus.linear.RectangularCholeskyDecomposition
-
public class RectangularCholeskyDecomposition extends Object
Calculates the rectangular Cholesky decomposition of a matrix.The rectangular Cholesky decomposition of a real symmetric positive semidefinite matrix A consists of a rectangular matrix B with the same number of rows such that: A is almost equal to BBT, depending on a user-defined tolerance. In a sense, this is the square root of A.
The difference with respect to the regular
CholeskyDecompositionis that rows/columns may be permuted (hence the rectangular shape instead of the traditional triangular shape) and there is a threshold to ignore small diagonal elements. This is used for example to generatecorrelated random n-dimensions vectorsin a p-dimension subspace (p < n). In other words, it allows generating random vectors from a covariance matrix that is only positive semidefinite, and not positive definite.Rectangular Cholesky decomposition is not suited for solving linear systems, so it does not provide any
decomposition solver.
-
-
Constructor Summary
Constructors Constructor Description RectangularCholeskyDecomposition(RealMatrix matrix)Decompose a symmetric positive semidefinite matrix.RectangularCholeskyDecomposition(RealMatrix matrix, double small)Decompose a symmetric positive semidefinite matrix.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetRank()Get the rank of the symmetric positive semidefinite matrix.RealMatrixgetRootMatrix()Get the root of the covariance matrix.
-
-
-
Constructor Detail
-
RectangularCholeskyDecomposition
public RectangularCholeskyDecomposition(RealMatrix matrix) throws MathIllegalArgumentException
Decompose a symmetric positive semidefinite matrix.Note: this constructor follows the linpack method to detect dependent columns by proceeding with the Cholesky algorithm until a nonpositive diagonal element is encountered.
- Parameters:
matrix- Symmetric positive semidefinite matrix.- Throws:
MathIllegalArgumentException- if the matrix is not positive semidefinite.- See Also:
- Analysis of the Cholesky Decomposition of a Semi-definite Matrix
-
RectangularCholeskyDecomposition
public RectangularCholeskyDecomposition(RealMatrix matrix, double small) throws MathIllegalArgumentException
Decompose a symmetric positive semidefinite matrix.- Parameters:
matrix- Symmetric positive semidefinite matrix.small- Diagonal elements threshold under which columns are considered to be dependent on previous ones and are discarded.- Throws:
MathIllegalArgumentException- if the matrix is not positive semidefinite.
-
-
Method Detail
-
getRootMatrix
public RealMatrix getRootMatrix()
Get the root of the covariance matrix. The root is the rectangular matrixBsuch that the covariance matrix is equal toB.BT- Returns:
- root of the square matrix
- See Also:
getRank()
-
getRank
public int getRank()
Get the rank of the symmetric positive semidefinite matrix. The r is the number of independent rows in the symmetric positive semidefinite matrix, it is also the number of columns of the rectangular matrix of the decomposition.- Returns:
- r of the square matrix.
- See Also:
getRootMatrix()
-
-