Given formally upper and lower triangular matrices
This function can be seen as way to compute the inverse of a
symmetric positive definite matrix given its Cholesky factor.
Equivalently, it can be seen as a way to compute
chol2inv(x, ...)
# S4 method for dtrMatrix
chol2inv(x, ...)
# S4 method for dtCMatrix
chol2inv(x, ...)
# S4 method for generalMatrix
chol2inv(x, uplo = "U", ...)
A matrix, symmetricMatrix
,
or diagonalMatrix
representing
the inverse of the positive definite matrix whose
Cholesky factor is x
.
The result is a traditional matrix if x
is a
traditional matrix, dense if x
is dense, and
sparse if x
is sparse.
a square matrix or Matrix
,
typically the result of a call to chol
.
If x
is square but not (formally) triangular,
then only the upper or lower triangle is considered,
depending on optional argument uplo
if x
is a Matrix
.
a string, either "U"
or "L"
,
indicating which triangle of x
contains the
Cholesky factor. The default is "U"
, to be
consistent with chol2inv
from base.
further arguments passed to or from methods.
The default method from base, chol2inv
,
called for traditional matrices x
.
Generic function chol
, for computing the upper
triangular Cholesky factor
Generic function solve
, for solving linear systems
and (as a corollary) for computing inverses more generally.
(A <- Matrix(cbind(c(1, 1, 1), c(1, 2, 4), c(1, 4, 16))))
(R <- chol(A))
(L <- t(R))
(R2i <- chol2inv(R))
(L2i <- chol2inv(R))
stopifnot(exprs = {
all.equal(R2i, tcrossprod(solve(R)))
all.equal(L2i, crossprod(solve(L)))
all.equal(as(R2i %*% A, "matrix"), diag(3L)) # the identity
all.equal(as(L2i %*% A, "matrix"), diag(3L)) # ditto
})
Run the code above in your browser using DataLab