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) |
void |
deleteRowsAndColumns(int[] idxs) |
double |
determinant()
Compute the determinant of the original matrix M associated with this
decomposition.
|
double |
eigenValueRatio() |
void |
ensureCapacity(int cap) |
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() |
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 |
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. |
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 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) 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 x
b
- constant vectorboff
- starting offset into b
ImproperStateException
- 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 has a size less than M, or if x has a
size less than 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 eigenValueRatio()
public 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)
public void deleteRowsAndColumns(int[] idxs)