chol2inv-methods function

Inverse from Cholesky Factor

Inverse from Cholesky Factor

Given formally upper and lower triangular matrices UU and LL, compute (UU)(1)(U' U)^(-1)

and (LL)(1)(L L')^(-1), respectively.

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 (XX)(1)(X' X)^(-1) given the RR part of the QR factorization of XX, if RR is constrained to have positive diagonal entries.

methods

chol2inv(x, ...) ## S4 method for signature 'dtrMatrix' chol2inv(x, ...) ## S4 method for signature 'dtCMatrix' chol2inv(x, ...) ## S4 method for signature 'generalMatrix' chol2inv(x, uplo = "U", ...)

Arguments

  • x: 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.

  • uplo: 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.

Returns

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.

See Also

The default method from base, chol2inv, called for traditional matrices x.

Generic function chol, for computing the upper triangular Cholesky factor LL' of a symmetric positive semidefinite matrix.

Generic function solve, for solving linear systems and (as a corollary) for computing inverses more generally.

Examples

(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 })
  • Maintainer: Martin Maechler
  • License: GPL (>= 2) | file LICENCE
  • Last published: 2025-03-11