I have a real-valued linear system $Hx = b$ where $H$ is symmetric matrix** (not necessarily positive/negative definite) with a very particular structure:
$$ H = \begin{bmatrix} D && B \\ B^T && A\end{bmatrix} $$
Where:
- $A$ is dense with a small fixed dimension (e.g. 3x3)
- $D$ is diagonal with a (relatively) large dimension that changes per-problem (e.g. 200 x 200)
- $B$ is dense with dimension (200 x 3)
(Note**: $A$, $B$ and $D$ are stored separately. These blocks can be re-arranged if it helps.)
The solution is currently via an explicit inverse using a Schur complement, which is problematic if H has a large conditions number (which arises from time to time).
I would like to compute the solution $x$ in an efficient way that exploits this peculiar problem structure, and provides an estimate of the condition number to evaluate whether we should trust the solution.
My thought was to tridiagonalize away $B$ using Householder transformations, which will make it easy to compute the eigenvalues and hence the condition number. The idea is that since $D$ is diagonal, there should be much less work involved.
Would there be any better approaches? For example, some other structure that exploits the large block diagonal component?