Diagonalizing a nearly-diagonal block matrix

235 Views Asked by At

I have a block matrix of the following form:

$$\begin{bmatrix} A & B \\ B^T & C \end{bmatrix}$$

where $n \times n$ matrix $A$ and $n \times m$ matrix $B$ are dense, whereas $m \times m$ matrix $C$ is diagonal. I would like to find all of the eigenvalues and eigenvectors of this matrix.

The block matrix requires $(n+m)^2$ memory, whereas the values contained in the submatrices require just $(n^2 + nm + m)$ memory. The particular situation I have also has $m \gg n$, so in practice the block matrix requires $m^2$ vs. the submatrices $m$.

Given that the $C$ block is already diagonal, is there a more efficient way that I can diagonalise this matrix without ever having to explicitly construct the full block matrix and diagonalising using a standard routine?