WoodburyMatrices
This package provides support for the Woodbury matrix identity for the Julia programming language. This is a generalization of the Sherman-Morrison formula.
Usage
using WoodburyMatrices
W = Woodbury(A, U, C, V)
creates a Woodbury
matrix from the A
, U
, C
, and V
matrices.
These matrices can be dense or sparse (or generally any type of AbstractMatrix
), with the caveat that
inv(inv(C) + V*(A\U))
will be calculated explicitly and hence needs to be representable with the available resources.
(In many applications, this is a fairly small matrix.)
There are only a few things you can do with a Woodbury matrix:
-
full(W)
converts to its dense representation -
W\b
solves the equationW*x = b
forx
. Note that the Woodbury matrix identity is notorious for floating-point roundoff errors, so be prepared for a certain amount of inaccuracy in the result. -
det(W)
computes the determinant ofW
.
It's worth emphasizing that A
can be supplied as a factorization, which makes W\b
and det(W)
more efficient.