Efficient evaluation of sub-matrix of inverse

73 Views Asked by At

I have a squared, non-singular matrix $A\in\mathbb{R}^{k \times k}$ ($k$ being rather large, in the order of $10^4$). I need to extract a sub-block from its inverse $B = A^{-1}$. In particular I have:

$$ B = \begin{bmatrix} B_{11} & B_{12} \\ B_{21} & B_{22} \end{bmatrix} $$

and I am interested in $B_{11}\in\mathbb{R}^{n \times m}$, the remaining blocks of $B$ being "useless" for my purposes. Note that $n\neq m$: the sub-matrix is rectangular, not squared. It is worth mentioning that $m < n \ll k$: the block I need to extract is much smaller than the original matrix. I was thus wondering if there is an efficient algorithm to compute $B_{11}$ quickly without computing the whole matrix, some sort of "partial inversion".

The best I can think of is to solve

$$ A \begin{bmatrix} B_{11} \\ B_{21} \end{bmatrix} = \begin{bmatrix} I \\ O \end{bmatrix} $$

wherein $I$ is the $m \times m$ identity matrix while $O$ is a $(k-m)\times m$ matrix filled with zeros. The equation above corresponds to $m$ linear systems with $k$ variables each. It's certainly better than inverting $A$ but I was hoping in something faster given that I only need $B_{11}$ and not $B_{21}$.

Finally, I am not sure if this is relevant, but the matrix $A$ is naturally partitioned in four blocks:

$$ A = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix} $$

where $A_{11}\in\mathbb{R}^{m \times n}$, i.e., it is a rectangular matrix of the same size as $B_{11}^{\,T}$.