Woodbury Matrix Identity

A Simple Derivation of the Woodbury Matrix Identity

1 February 2026math

\gdef\M{\v{M}} \gdef\A{\v{A}} \gdef\U{\v{U}} \gdef\C{\v{C}} \gdef\V{\v{V}} \gdef\x{\v{x}} \gdef\y{\v{y}} \gdef\u{\v{u}} \gdef\a{\v{v}}

Problem formulation

Let M=A+UCV\M = \A + \U\C\V with

  • AMn×n(R)\A \in \mathcal{M}_{n \times n}(\mathbb{R})
  • UMn×m(R)\U \in \mathcal{M}_{n \times m}(\mathbb{R}) m<nm<n
  • CMm×m(R)\C \in \mathcal{M}_{m\times m}(\mathbb{R})
  • VMm×n(R)\V \in \mathcal{M}_{m\times n}(\mathbb{R})

We are interested in finding M1\M^{-1}, but supposing we already know A1\A^{-1}, we do not want to compute a full n×nn\times n matrix inverse. The Woodbury matrix identity is useful in this case:

(A+UCV)1=A1A1U(C1+VA1U)1VA1(\A + \U\C\V)^{-1} = \A^{-1} - \A^{-1}\U(\C^{-1} + \V\A^{-1}\U)^{-1}\V\A^{-1}

The only inverse we have to compute are C1\C^{-1} and (C1+VA1U)1(\C^{-1} + \V\A^{-1}\U)^{-1} which is a m×mm \times m matrix.

Derivation

For example let say we want to invert (I+uv)(\v{I} + uv^\top) it's a n×nn \times n matrix but invertig it is very simple:

(I+uv)x=yx+uvx=yx=yuvx\begin{align*} (\v{I} + \u\a^\top)\x &= \y \\ \x + \u\a^\top \x &= \y \\ \x &= \y - \u\a^\top \x \tag{1}\\ \end{align*}

vxv^\top \x is a scalar; it should be easy to calculate. Indeed

vx=vyvuvx(1+vu)vx=vyvx=vy1+vu\begin{align*} \a^\top \x &= \a^\top \y - \a^\top \u\a^\top \x \\ (1 + \a^\top \u) \a^\top \x &= \a^\top \y \\ \v{v}^\top \x &= \frac{\a^\top \y}{1 + \a^\top \u} \end{align*}

And substituding vx\a^\top \x in (1)(1) we get:

x=yuv1+vuy=(Iuv1+vu)y\x = \y - \frac{\u\a^\top}{1 + \a^\top \u} \y = \left(\v{I} - \frac{\u\a^\top}{1 + \a^\top \u}\right) \y

Thus (I+uv)1=Iuv1+vu(\v{I} + \u^\top \a)^{-1} = \v{I} - \frac{\u\a^\top}{1 + \a^\top \u}. We did not have to compute any n×nn \times n matrix inverse (just a 1×11 \times 1 one 😉). We will now generalize this result by deriving the Woodbury matrix identity in its full glory. As you will see, the derivation is rather similar to the demonstration of the simple case. We will follow essentially the same steps.

(A+UCV)x=yAx+UCVx=yx+A1UCVx=A1yx=A1yA1UCVx\begin{align} (\A + \U\C\V) \x &= \y \notag \\ \A\x + \U\C\V\x &= \y \notag \\ \x + \A^{-1}\U\C\V\x &= \A^{-1}\y \notag \\ \x &= \A^{-1}\y - \A^{-1}\U\C\V\x \tag{2} \\ \end{align}

Here Vx\V \x plays the same role as vxv^\top \x in the previous example. And if we follow the same steps, we get

Vx=VA1yVA1UCVx(Im+VA1UC)Vx=VA1yVx=(Im+VA1UC)1VA1y\begin{align*} \V\x &= \V\A^{-1}\y - \V\A^{-1}\U\C\V\x \\ (\v{I}_m + \V\A^{-1}\U\C) \V\x &= \V\A^{-1}\y \\ \V\x &= (\v{I}_m + \V\A^{-1}\U\C)^{-1} \V\A^{-1}\y \\ \end{align*}

Here, the analog of 11+vu\frac{1}{1 + v^\top u} is (Im+VA1UC)1(\v{I}_m + \V\A^{-1}\U\C)^{-1}. What was a scalar division is now a rank mm matrix inversion. We are getting nearing our goal. Substituting Vx\V\x in (2)(2) we finally get

x=A1yA1UC(Im+VA1UC)1VA1yx=(A1A1U(C1+VA1U)1VA1)(A+UCV)1y\begin{align*} \x &= \A^{-1}\y - \A^{-1}\U\C(\v{I}_m + \V\A^{-1}\U\C)^{-1} \V\A^{-1}\y \\ \x &= \underbrace{(\A^{-1} - \A^{-1}\U(\C^{-1} + \V\A^{-1}\U)^{-1}\V\A^{-1})}_{\triangleq (\A + \U\C\\V)^{-1}} \y \end{align*}

This is exactly the Woodbury matrix identity. \square