Cholesky {Matrix} | R Documentation |
Computes the Cholesky decomposition of a sparse, symmetric,
positive-definite matrix. However, typically chol()
should rather be used unless you are interested in the different kinds
of sparse Cholesky decompositions.
Cholesky(A, perm = TRUE, LDL = TRUE, super = FALSE, ...)
A |
sparse symmetric matrix. No missing values or IEEE special values are allowed. |
perm |
logical scalar indicating if a fill-reducing permutation
should be computed and applied to the rows and columns of A .
Default is TRUE . |
LDL |
logical scalar indicating if the decomposition should be
computed as LDL' where L is a unit lower triangular matrix.
The alternative is LL' where L is lower triangular with
arbitrary diagonal elements. Default is TRUE . |
super |
logical scalar indicating is a supernodal decomposition
should be created. The alternative is a simplicial decomposition.
Default is FALSE . |
... |
further arguments passed to or from other methods. |
This is a generic function with special methods for different types
of matrices. Use showMethods("Cholesky")
to list all
the methods for the Cholesky
generic.
The method for class dsCMatrix
of sparse matrices
— the only one available currently —
is based on functions from the CHOLMOD library.
Again: If you just want the Cholesky decomposition of a matrix, you
should probably rather use chol(.)
.
an object inheriting from either
"CHMsuper"
, or
"CHMsimpl"
, depending on the super
argument; both classes extend "CHMfactor"
which
extends "MatrixFactorization"
.
In other words, the result of Cholesky()
is not a
matrix, and if you want one, you should probably rather use
chol()
.
Tim Davis (2005) {CHOLMOD}: sparse supernodal {Cholesky} factorization and update/downdate http://www.cise.ufl.edu/research/sparse/cholmod/
Timothy A. Davis (2006) Direct Methods for Sparse Linear Systems, SIAM Series “Fundamentals of Algorithms”.
Class definitions CHMfactor
and
dsCMatrix
and function expand
.
Note that chol()
returns matrices (inheriting from
"Matrix"
) whereas Cholesky()
returns a
"CHMfactor"
object, and hence a typical user
will rather use chol(A)
.
data(KNex) mtm <- with(KNex, crossprod(mm)) str(mtm@factors) # empty list() Cholesky(mtm) # uses show(<MatrixFactorization>) str(mtm@factors) # 'sPDCholesky' (simpl) (Cm <- Cholesky(mtm, super = TRUE)) str(mtm@factors) # 'sPDCholesky' *and* 'SPDCholesky' str(cmat <- as(Cm, "sparseMatrix")) cmat[1:20, 1:20] b <- matrix(c(rep(0, 711), 1), nc = 1) ## solve(Cm, b) by default solves Ax = b, where A = Cm'Cm ! stopifnot(identical(solve(Cm, b), solve(Cm, b, system = "A")), all.equal(solve(mtm, b), solve(Cm, b)))