public class CholeskyDecomposition
extends java.lang.Object
Providing a separate class for the Cholesky decomposition allows an application to perform such decompositions repeatedly without having to reallocate temporary storage space.
| Constructor and Description | 
|---|
| CholeskyDecomposition()Creates an uninitialized CholeskyDecomposition. | 
| CholeskyDecomposition(int n)Creates an uninitialized CholeskyDecomposition with enough capacity to
 handle matrices of size  n. | 
| CholeskyDecomposition(Matrix M)Creates a CholeskyDecomposition for the Matrix specified by M. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addRowAndColumn(VectorNd col) | 
| boolean | addRowAndColumn(VectorNd col,
               double tol) | 
| void | clear() | 
| double | conditionEstimate(Matrix M)Estimates the condition number of the original matrix M associated with
 this decomposition. | 
| void | deleteRowAndColumn(int idx) | 
| double | determinant()Compute the determinant of the original matrix M associated with this
 decomposition. | 
| void | factor(Matrix M)Peforms a Cholesky decomposition on the Matrix M. | 
| void | get(MatrixNd L)Gets the lower-triangular matrix L associated with the Cholesky
 decomposition. | 
| double[] | getBuffer() | 
| int | getBufferWidth() | 
| boolean | inverse(DenseMatrix R)Computes the inverse of the original matrix M associated with this
 decomposition, and places the result in R. | 
| boolean | leftSolveL(DenseMatrix X,
          Matrix B)Solves the linear equation  X L = B for X, where L is the lower triangular factor associated with this decomposition, and X and B are matrices. | 
| boolean | leftSolveL(Vector x,
          Vector b)Solves the linear equation  x L = b for x, where L is the lower triangular factor associated this decomposition, and x and b are vectors. | 
| void | setCapacity(int n) | 
| boolean | solve(DenseMatrix X,
     Matrix B)Solves the linear equation  M X = B for X, where M is the original matrix associated with this decomposition, and X and B are matrices. | 
| boolean | solve(double[] x,
     int xoff,
     double[] b,
     int boff)Solves the linear equation  M x = b for x, where M is the original matrix associated with this decomposition, and x and b are vectors. | 
| boolean | solve(Vector x,
     Vector b)Solves the linear equation  M x = b for x, where M is the original matrix associated with this decomposition, and x and b are vectors. | 
| boolean | solveL(DenseMatrix X,
      Matrix B)Solves the linear equation  L X = B for X, where L is the lower triangular factor associated with this decomposition, and X and B are matrices. | 
| boolean | solveL(Vector x,
      Vector b)Solves the linear equation  L x = b for x, where L is the lower triangular factor associated this decomposition, and x and b are vectors. | 
public CholeskyDecomposition()
public CholeskyDecomposition(int n)
n. This capacity will later be
 increased on demand.n - initial maximum matrix sizepublic CholeskyDecomposition(Matrix M) throws ImproperSizeException
M - matrix to perform the Cholesky decomposition onImproperSizeException - if M is not squarepublic void setCapacity(int n)
public void factor(Matrix M) throws ImproperSizeException
M - matrix to perform the Cholesky decomposition onImproperSizeException - if M is not squarejava.lang.IllegalArgumentException - if M is detected to be not symmetric positive definitepublic void get(MatrixNd L) throws ImproperStateException, ImproperSizeException
L - lower triangular matrixImproperStateException - if this CholeskyDecomposition is uninitializedImproperSizeException - if L is not of the proper dimension and cannot be resizedpublic boolean solve(double[] x,
                     int xoff,
                     double[] b,
                     int boff)
x - unknown vector to solve forxoff - starting offset into xb - constant vectorboff - starting offset into bImproperStateException - if this decomposition is uninitializedImproperSizeException - if x or b do not
 have a length compatible with Mpublic boolean solve(Vector x, Vector b) throws ImproperStateException, ImproperSizeException
x - unknown vector to solve forb - constant vectorImproperStateException - if this decomposition is uninitializedImproperSizeException - if b does not have a size compatible with M, or if x does not have a size
 compatible with M and cannot be resized.public boolean solve(DenseMatrix X, Matrix B) throws ImproperStateException, ImproperSizeException
X - unknown matrix to solve forB - constant matrixImproperStateException - if this decomposition is uninitializedImproperSizeException - if B has a different number of rows than M, or if X has a different number
 of rows than M or a different number of columns than B and cannot be
 resized.public boolean solveL(Vector x, Vector b) throws ImproperStateException, ImproperSizeException
x - unknown vector to solve forb - constant vectorImproperStateException - if this decomposition is uninitializedImproperSizeException - if b does not have a size compatible with L, or if x does not have a size
 compatible with L and cannot be resized.public boolean solveL(DenseMatrix X, Matrix B) throws ImproperStateException, ImproperSizeException
X - unknown matrix to solve forB - constant matrixImproperStateException - if this decomposition is uninitializedImproperSizeException - if B does not have a size compatible with L, or if X does not have a size
 compatible with L or B and cannot be resized.public boolean leftSolveL(Vector x, Vector b) throws ImproperStateException, ImproperSizeException
x - unknown vector to solve forb - constant vectorImproperStateException - if this decomposition is uninitializedImproperSizeException - if b does not have a size compatible with L, or if x does not have a size
 compatible with L and cannot be resized.public boolean leftSolveL(DenseMatrix X, Matrix B) throws ImproperStateException, ImproperSizeException
X - unknown matrix to solve forB - constant matrixImproperStateException - if this decomposition is uninitializedImproperSizeException - if B does not have a size compatible with L, or if X does not have a size
 compatible with L or B and cannot be resized.public double conditionEstimate(Matrix M) throws ImproperStateException, ImproperSizeException
M - original matrixImproperStateException - if this CholeskyDecomposition is uninitializedImproperSizeException - if the size of M does not match the size of the current Cholesky
 decompositionpublic double determinant()
                   throws ImproperStateException
ImproperStateException - if this decomposition is uninitializedpublic boolean inverse(DenseMatrix R) throws ImproperStateException
R - matrix in which the inverse is storedImproperStateException - if this decomposition is uninitializedImproperSizeException - if R does not have the same size as M and cannot be resized.public double[] getBuffer()
public int getBufferWidth()
public void clear()
public void addRowAndColumn(VectorNd col)
public boolean addRowAndColumn(VectorNd col, double tol)
public void deleteRowAndColumn(int idx)