public class SparseCholesky extends Object implements Serializable
SparseMatrix
.
Class SparseCholesky
computes the Cholesky factorization of a
sparse symmetric positive definite matrix A. This factorization can
then be used to compute the solution of the linear system
.
Typically, the solution of a large sparse positive definite system is done in 4 steps:
Class SparseCholesky
realizes all four steps by algorithms
described in George and Liu (1981). Especially, step one, is a realization of
a minimum degree ordering algorithm. The numerical factorization in its
standard form is based on a sparse compressed storage scheme. Alternatively,
a multifrontal method can be used. The multifrontal method requires more
storage but will be faster than the standard method in certain cases. The
multifrontal method is based on the routines in Liu (1987). For a detailed
description of this method, see Liu (1990), also Duff and Reid(1983, 1984),
Ashcraft (1987) et al. (1987), and Liu (1986, 1989, 1992). The numerical
factorization method can be specified by using the
setNumericFactorizationMethod
The solve
factorSymbolically
factorNumerically
setNumericFactor
setSymbolicFactor
solve
method when different righthand sides are to be solved.
There is a special situation where computations can be simplified.
If an application generates different sparse symmetric positive definite
coefficient matrices that all have the same sparsity pattern, then by using
methods getSymbolicFactor
setSymbolicFactor
Modifier and Type  Class and Description 

static class 
SparseCholesky.NotSPDException
The matrix is not symmetric, positive definite.

static class 
SparseCholesky.NumericFactor
The numeric Cholesky factorization of a matrix.

static class 
SparseCholesky.SymbolicFactor
The symbolic Cholesky factorization of a matrix.

Modifier and Type  Field and Description 

static int 
MULTIFRONTAL_METHOD
Indicates the multifrontal method will be used for numeric factorization.

static int 
STANDARD_METHOD
Indicates the method of George/Liu (1981) will be used for numeric
factorization.

Constructor and Description 

SparseCholesky(SparseMatrix A)
Constructs the matrix structure for the Cholesky factorization of
a sparse symmetric positive definite matrix of type
SparseMatrix . 
Modifier and Type  Method and Description 

void 
factorNumerically()
Computes the numeric factorization of a sparse real symmetric positive
definite matrix.

void 
factorSymbolically()
Computes the symbolic factorization of a sparse real symmetric positive definite matrix.

double 
getLargestDiagonalElement()
Returns the largest diagonal element of the Cholesky factor.

long 
getNumberOfNonzeros()
Returns the number of nonzeros in the Cholesky factor.

SparseCholesky.NumericFactor 
getNumericFactor()
Returns the numeric Cholesky factor.

int 
getNumericFactorizationMethod()
Returns the method used in the numerical factorization of the permuted
input matrix.

double 
getSmallestDiagonalElement()
Returns the smallest diagonal element of the Cholesky factor.

SparseCholesky.SymbolicFactor 
getSymbolicFactor()
Returns the symbolic Cholesky factor.

void 
setNumericFactor(SparseCholesky.NumericFactor numericFactor)
Sets the numeric Cholesky factor to use in solving of a sparse
positive definite system of linear equations .

void 
setNumericFactorizationMethod(int method)
Defines the method used in the numerical factorization of the permuted
input matrix.

void 
setSymbolicFactor(SparseCholesky.SymbolicFactor symbolicFactor)
Sets the symbolic Cholesky factor to use in solving a sparse
positive definite system of linear equations .

double[] 
solve(double[] b)
Computes the solution of a sparse real symmetric positive definite system of linear
equations .

public static final int MULTIFRONTAL_METHOD
public static final int STANDARD_METHOD
public SparseCholesky(SparseMatrix A)
SparseMatrix
.A
 The SparseMatrix
symmetric positive definite matrix to
be factored. Only the lower triangular part of the input matrix is used.public void factorNumerically() throws SparseCholesky.NotSPDException
This method numerically factors the instance of the constructed matrix
A, where A is of type SparseMatrix
and is
symmetric positive definite. The factorization is obtained in several
steps:
Note that the symbolic factorization is not done if the symbolic
factor has been supplied by the user through the
setSymbolicFactor
method.
SparseCholesky.NotSPDException
 is thrown if the input matrix is not symmetric, positive definite.public void factorSymbolically() throws SparseCholesky.NotSPDException
This method symbolically factors the instance of the constructed matrix A, where A is
of type SparseMatrix
and is symmetric positive definite. The factorization is obtained in several steps:
SparseCholesky.NotSPDException
 is thrown if the input matrix is not symmetric, positive definite.public double getLargestDiagonalElement()
double
value specifying the largest
diagonal element of the Cholesky factor. Use of this
method is only sensible if a numeric factorization of
the input matrix was done beforehand.public long getNumberOfNonzeros()
long
value specifying the number of
nonzeros (including the diagonal) of the Cholesky
factor.public SparseCholesky.NumericFactor getNumericFactor()
NumericFactor
containing the numeric Cholesky factor.public int getNumericFactorizationMethod()
int
value equal to
STANDARD_METHOD
MULTIFRONTAL_METHOD
setNumericFactorizationMethod
public double getSmallestDiagonalElement()
double
value specifying the smallest
diagonal element of the Cholesky factor. Use of this
method is only sensible if a numeric factorization of
the input matrix was done beforehand.public SparseCholesky.SymbolicFactor getSymbolicFactor()
SymbolicFactor
containing the symbolic Cholesky factor.public void setNumericFactor(SparseCholesky.NumericFactor numericFactor)
numericFactor
 a NumericFactor
object containing the
numeric Cholesky factor. By default the numeric factorization
is computed.public void setNumericFactorizationMethod(int method)
method
 an int
value specifying the method to choose:
Method Name 
Description 
STANDARD_METHOD 
standard method as described by George/Liu (1981). This is the default. 
MULTIFRONTAL_METHOD 
multifrontal method 
IllegalArgumentException
 This exception is thrown when the value for method is not
STANDARD_METHOD
or MULTIFRONTAL_METHOD
.public void setSymbolicFactor(SparseCholesky.SymbolicFactor symbolicFactor)
symbolicFactor
 a SymbolicFactor
containing the symbolic
Cholesky factor. By default the symbolic factorization is computed.public double[] solve(double[] b) throws SparseCholesky.NotSPDException
This method solves the linear system , where A is symmetric positive definite. The solution is obtained in several steps:
By default this method implements all of the above steps. The factorizations are retained for later use by subsequent solves. By choosing appropriate methods within this class, the computation can be reduced to the solution of the system for a given or precomputed symbolic or numeric factor.
b
 a double
vector of length equal to the order of matrix
A
representing the new righthand side.double
vector of length equal to the order of matrix
A
representing the solution to the system of linear
equations .SparseCholesky.NotSPDException
 is thrown if the input matrix is not symmetric, positive definite.Copyright © 19702015 Rogue Wave Software
Built October 13 2015.