Consider a block (partitioned) matrix
matrix = ArrayFlatten[{{a, b}, {c, d}}]
where, a
, b
, c
and d
are each matrices themselves. Say, for example,
a = {{a11, a12}, {a21, a22}}
b = {{b11, b12}, {b21, b22}}
c = {{0, 0}, {0, 0}}
d = {{d11, d12}, {d21, d22}}
How can you find the block inverse of this matrix? A desired solution is, using the example above
{{Inverse[a] , -Inverse[a].b.Inverse[d]},{0,Inverse[d]}}
which is easily verified using
Simplify[Inverse[ArrayFlatten[{{a, b}, {c, d}}]] ==
ArrayFlatten[{{Inverse[a], -Inverse[a].b.Inverse[d]}, {0,
Inverse[d]}}]]
which yields True
.
How can you solve the block inverse problem for arbitrary submatrices, and for block matrices of larger sizes (i.e. 3x3, 4x4, etc)?