updown-methods function

Updating and Downdating Sparse Cholesky Factorizations

Updating and Downdating Sparse Cholesky Factorizations

Computes a rank-kk update or downdate of a sparse Cholesky factorization [REMOVE_ME]P1AP1=L1DL1=LLP1AP1=L1DL1=LL[REMOVEME2] P_{1} A P_{1}' = L_{1} D L_{1}' = L L'P1 * A * P1' = L1 * D * L1' = L * L' [REMOVE_ME_2]

which for some kk-column matrix CC is the factorization [REMOVE_ME]P1(A+sCC)P1=L~1D~L~1=L~L~P1(A+sCC)P1=L 1D L 1=L L [REMOVEME2] P_{1} (A + s C C') P_{1}' = \tilde{L}_{1} \tilde{D} \tilde{L}_{1}' = \tilde{L} \tilde{L}'P1 * (A + s * C * C') * P1' = L~1 * D~ * L~1' = L~ * L~' [REMOVE_ME_2]

Here, s=1s = 1 for an update and s=1s = -1 for a downdate.

methods

Description

Computes a rank-kk update or downdate of a sparse Cholesky factorization

P1AP1=L1DL1=LLP1AP1=L1DL1=LL P_{1} A P_{1}' = L_{1} D L_{1}' = L L'P1 * A * P1' = L1 * D * L1' = L * L'

which for some kk-column matrix CC is the factorization

P1(A+sCC)P1=L~1D~L~1=L~L~P1(A+sCC)P1=L 1D L 1=L L  P_{1} (A + s C C') P_{1}' = \tilde{L}_{1} \tilde{D} \tilde{L}_{1}' = \tilde{L} \tilde{L}'P1 * (A + s * C * C') * P1' = L~1 * D~ * L~1' = L~ * L~'

Here, s=1s = 1 for an update and s=1s = -1 for a downdate.

updown(update, C, L)

Arguments

  • update: a logical (TRUE or FALSE) or character ("+" or "-") indicating if L

    should be updated (or otherwise downdated).

  • C: a finite matrix or Matrix such that tcrossprod(C) has the dimensions of L.

  • L: an object of class dCHMsimpl or dCHMsuper specifying a sparse Cholesky factorization.

Returns

A sparse Cholesky factorization with dimensions matching L, typically of class dCHMsimpl.

See Also

Classes dCHMsimpl and dCHMsuper

and their methods, notably for generic function update, which is not equivalent to updown(update = TRUE).

Generic function Cholesky.

Author(s)

Initial implementation by Nicholas Nagle, University of Tennessee.

References

Davis, T. A., Hager, W. W. (2001). Multiple-rank modifications of a sparse Cholesky factorization. SIAM Journal on Matrix Analysis and Applications, 22(4), 997-1013. tools:::Rd_expr_doi("10.1137/S0895479899357346")

Examples

m <- sparseMatrix(i = c(3, 1, 3:2, 2:1), p = c(0:2, 4, 4, 6), x = 1:6, dimnames = list(LETTERS[1:3], letters[1:5])) uc0 <- Cholesky(A <- crossprod(m) + Diagonal(5)) uc1 <- updown("+", Diagonal(5, 1), uc0) uc2 <- updown("-", Diagonal(5, 1), uc1) stopifnot(all.equal(uc0, uc2))
  • Maintainer: Martin Maechler
  • License: GPL (>= 2) | file LICENCE
  • Last published: 2025-03-11