Consider implementing Bloch perturbation theory
There's an alternative PT that produces a non-hermitian effective Hamiltonian whose eigenvalues are the low-energy subspace. The algorithm comes initially from C. Bloch https://doi.org/10.1016/0029-5582(58)90116-0 but it is better explained his 1.2 https://arxiv.org/pdf/1105.0675.pdf .
As I understand it, this algorithm focuses on transforming H
such that it becomes upper-block-triangular, instead of block-diagonal. Here, the effective Hamiltonian is computed from H U
, instead of U^\dagger H U
, and U
isn't necessarily unitary. This is different from the conditions that we impose, but it is interesting, since the eigenvalues of a triangular matrix are the elements in its diagonal, a concept that should also be able to apply to block-triangular matrices.
We could use such an algorithm to find the spectrum, instead of spectrum and eigenvectors. It is not clear to me if this is more efficient, but we could consider this further in the future.