public class LDLTDecomposition
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 | 
|---|
| LDLTDecomposition()Creates an uninitialized LDLTDecomposition. | 
| LDLTDecomposition(int n)Creates an uninitialized LDLTDecomposition with enough capacity to
 handle matrices of size  n. | 
| LDLTDecomposition(Matrix M)Creates a LDLTDecomposition for the Matrix specified by M. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | clear() | 
| double | conditionEstimate(Matrix M)Estimates the condition number of the original matrix M associated with
 this decomposition. | 
| double | determinant()Compute the determinant of the original matrix M associated with this
 decomposition. | 
| void | ensureCapacity(int cap) | 
| void | factor(Matrix M)Peforms a Cholesky decomposition on the Matrix M. | 
| void | get(MatrixNd L,
   VectorNd D)Gets the components associated with this signed Cholesky decomposition. | 
| double[] | getBuffer() | 
| int | getBufferWidth() | 
| int | getSize() | 
| boolean | inverse(DenseMatrix R)Computes the inverse of the original matrix M associated with this
 decomposition, and places the result in R. | 
| 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. | 
public LDLTDecomposition()
public LDLTDecomposition(int n)
n. This capacity will later be
 increased on demand.n - initial maximum matrix sizepublic LDLTDecomposition(Matrix M) throws ImproperSizeException
M - matrix to perform the Cholesky decomposition onImproperSizeException - if M is not squarepublic void ensureCapacity(int cap)
public int getSize()
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, VectorNd D) throws ImproperStateException
L - if non-null, returns the lower triangular matrixD - if non-null, returns the diagonalImproperStateException - if this LDLTDecomposition is uninitializedpublic 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 double conditionEstimate(Matrix M) throws ImproperStateException, ImproperSizeException
M - original matrixImproperStateException - if this LDLTDecomposition 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()