I am looking for a method (if it exists) for the inverse of a large sparse Hermitian block matrix.
The off diagonal sparse matrices, named δ
are 4x4, and they have only one non null element on the diagonal part. The matrices M
are Hermitian and also 4x4. I need a way to perform the inverse of M3
or the determinant. I am interested in a generalization of this structure for a matrix of higher rank with the same "telescopic" structure.
Here is the code
dimension = 4;
mat = ( {{m, a, b, b},{Conjugate[a], m, b, b},{Conjugate[b], Conjugate[b], m, a},{Conjugate[b], Conjugate[b], Conjugate[a], m}});
Subscript[O, 4] = ( {{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}} );
Subscript[δ, 1] = ( {{I ρ, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}} );
Subscript[δ, 2] = ( {{0, 0, 0, 0},{0, I ρ, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0}} );
Subscript[δ, 3] = ( {{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, I ρ, 0},{0, 0, 0, 0}} );
Subscript[δ, 4] = ( {{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, 0},{0, 0, 0, I ρ}} );
Subscript[δ, 22] = ArrayFlatten[( {{Subscript[O, 4], Subscript[δ, 2]}, {Subscript[δ, 2], Subscript[O, 4]}})];
Subscript[δ, 33] = ArrayFlatten[( {
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 3]},
{Subscript[O, 4], Subscript[O, 4], Subscript[δ, 3], Subscript[O, 4]},
{Subscript[O, 4], Subscript[δ, 3], Subscript[O, 4], Subscript[O, 4]},
{Subscript[δ, 3], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]}
} )];
Subscript[δ, 44] = ArrayFlatten[( {
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4]},
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4]},
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4]},
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]},
{Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]},
{Subscript[O, 4], Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]},
{Subscript[O, 4], Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]},
{Subscript[δ, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4], Subscript[O, 4]}
} )];
OutM[M_, δ_] := ArrayFlatten[{{M, δ},{-δ, M}}];
M1 = OutM[mat, Subscript[δ, 1]];
M2 = FullSimplify[OutM[M1, Subscript[δ, 22]]];
M3 = FullSimplify[OutM[M2, Subscript[δ, 33]]];
M4 = FullSimplify[OutM[M3, Subscript[δ, 44]]];
And I need the inverse of M4
. The structure is telescopic in some sense.
Inverse[]
/Det[]
directly? $\endgroup$OutM
. A bracket and a comma are missing. I presume it should beOutM[M_, \[Delta]_] := ArrayFlatten[( {{M, \[Delta]},{-\[Delta], M}} )];
$\endgroup$