Non-Hermitian algorithm#

This page describes the non-Hermitian extension of Pymablock’s main algorithm. Using it requires an extra flag:

H_tilde, U, U_inv = block_diagonalize(..., hermitian=False)

Here the third returned series is the perturbative inverse of \(U\). This is because unlike in Hermitian block-diagonalization, the inverse transformation is not the adjoint of the forward transformation and we track it explicitly.

The overall structure is the same:

  • split the Hamiltonian into selected and remaining parts,

  • organize perturbation theory through multivariate Cauchy products,

  • avoid unnecessary products by \(H_0\),

  • reduce each perturbative order to one Sylvester solve.

Throughout this page, we use the notation from the main algorithm page.

Problem statement#

We seek a perturbative similarity transform

(1)#\[\tilde{\mathcal{H}} = \mathcal{U}^{-1}\mathcal{H}\mathcal{U}, \qquad \tilde{\mathcal{H}}_{R}=0, \qquad \mathcal{U}^{-1}\mathcal{U}=1,\]

with

(2)#\[\mathcal{H}=\mathcal{H}_S+\mathcal{H}'_R, \qquad \mathcal{H}_S \equiv H_0+\mathcal{H}'_S.\]

Here \(S\) denotes the selected part and \(R\) the remainder to eliminate, exactly as in the main algorithm. Since \(\mathcal{U}^{-1}\neq \mathcal{U}^{\dagger}\) in general, the left and right eigenvectors need not coincide.

Variables and gauge#

Like in the Hermitian case, we separate the transformation into identity at zeroth order and a correction, which allows us to define recurrence relations through Cauchy products. We first introduce \(\mathcal{U}'\) as the correction of the transformation \(\mathcal{U}\) and \(\mathcal{G}\) as the correction of its inverse \(\mathcal{U}^{-1}\):

(3)#\[\mathcal{U}=1+\mathcal{U}', \qquad \mathcal{U}^{-1}=1+\mathcal{G}, \qquad \mathcal{U}'_0=\mathcal{G}_0=0.\]

We once again separate the terms that enter \(\mathcal{U}\) and \(\mathcal{U}^{-1}\) with the same sign from those that enter with opposite signs:

(4)#\[\mathcal{U}=1+\mathcal{W}+\mathcal{V}, \qquad \mathcal{U}^{-1}=1+\mathcal{W}-\mathcal{V}.\]

In the Hermitian case, this split gives the Hermitian and anti-Hermitian parts of \(\mathcal{U}'\). In the non-Hermitian setting, \(\mathcal{W}\) and \(\mathcal{V}\) are only auxiliary series and need not have those symmetries.

The inverse constraint \(\mathcal{U}^{-1}\mathcal{U}=1\) then gives

(5)#\[\mathcal{W}=-\frac{1}{2}\mathcal{G}\mathcal{U}'.\]

Because both series start at first order, Eq. (5) determines \(\mathcal{W}\) from lower orders.

The least-action principle, which in the Hermitian case fixes the non-uniqueness of \(\mathcal{U}\) by minimizing \(\|\mathcal{U}-1\|\), is not available in the non-Hermitian setting because there is no canonical norm. We therefore fix the gauge by the pragmatic choice:

(6)#\[\mathcal{V}_S=0.\]

This choice is simple, sparse, and close to the Hermitian construction.

Derivation#

As in the main algorithm, we derive the non-Hermitian recurrence in a form that avoids unnecessary products by \(H_0\).

We introduce the shorthand

(11)#\[\mathcal{X}\equiv[\mathcal{U}',\mathcal{H}_S], \qquad \mathcal{A}\equiv\mathcal{H}'_R\mathcal{U}', \qquad \mathcal{B}\equiv\mathcal{X}-\mathcal{H}'_R-\mathcal{A}.\]

Starting from \(\tilde{\mathcal{H}}=(1+\mathcal{G})(\mathcal{H}_S+\mathcal{H}'_R)(1+\mathcal{U}')\), we substitute \(\mathcal{H}_S\mathcal{U}'=\mathcal{U}'\mathcal{H}_S-\mathcal{X}\) and use \(\mathcal{U}'+\mathcal{G}=-\mathcal{G}\mathcal{U}'\) to cancel the terms multiplied by \(\mathcal{H}_S\):

(12)#\[\tilde{\mathcal{H}}=\mathcal{H}_S-\mathcal{B}-\mathcal{G}\mathcal{B}.\]

This form lets us assemble the effective Hamiltonian from \(\mathcal{X}\), \(\mathcal{A}\), and \(\mathcal{B}\) without extra products by \(H_0\).

The elimination condition \(\tilde{\mathcal{H}}_R=0\) implies

(13)#\[\mathcal{B}_R=-(\mathcal{G}\mathcal{B})_R.\]

We split \(\mathcal{X}\) into the contributions from \(\mathcal{V}\) and \(\mathcal{W}\):

(14)#\[\mathcal{X}\equiv[\mathcal{U}',\mathcal{H}_S]=\mathcal{Y}+\mathcal{Z}, \qquad \mathcal{Y}\equiv[\mathcal{V},\mathcal{H}_S], \qquad \mathcal{Z}\equiv[\mathcal{W},\mathcal{H}_S].\]

Equation (5) rewrites the \(\mathcal{W}\) commutator in terms of Cauchy products. We also define

(15)#\[\mathcal{B}_+ \equiv \mathcal{B}+\mathcal{G}\mathcal{B}.\]

This yields

(16)#\[\mathcal{Z} = \frac{1}{2}\left( - \mathcal{G}\mathcal{H}'_R + \mathcal{A} - \mathcal{G}\mathcal{B} - \mathcal{B}_+\mathcal{G} \right).\]

Since \(\mathcal{B}=\mathcal{X}-\mathcal{H}'_R-\mathcal{A}\), the remaining part \(\mathcal{Y}=[\mathcal{V},\mathcal{H}_S]\) is

(17)#\[\mathcal{Y}=\mathcal{B}+\mathcal{H}'_R+\mathcal{A}-\mathcal{Z}.\]

The gauge condition (6) implies \([\mathcal{V},H_0]_S=0\), so the selected part only involves \(\mathcal{H}'_S\):

(18)#\[\mathcal{Y}_S=[\mathcal{V},\mathcal{H}'_S]_S.\]

Using \(\mathcal{B}=\mathcal{Y}+\mathcal{Z}-\mathcal{H}'_R-\mathcal{A}\), we obtain

(19)#\[\mathcal{B}_S=\left([\mathcal{V},\mathcal{H}'_S] + \mathcal{Z} - \mathcal{A}\right)_S.\]

For the remaining part, we solve the Sylvester equation

(20)#\[[\mathcal{V},H_0]_R = \mathcal{Y}_R-[\mathcal{V},\mathcal{H}'_S]_R = \left(\mathcal{B}+\mathcal{H}'_R+\mathcal{A}-\mathcal{Z}-[\mathcal{V},\mathcal{H}'_S]\right)_R.\]

Equation (20) is the only Sylvester solve. Every earlier step is a Cauchy product between series that start at first order, so the algorithm never multiplies by \(H_0\) outside that solve.

Closed recurrence#

At order \(\mathbf{n}\), the implementation reduces to the following closed recurrence.

(21)#\[\begin{split}\begin{aligned} \mathcal{H} &\equiv \mathcal{H}_S + \mathcal{H}'_R, \qquad \mathcal{H}_S \equiv H_0 + \mathcal{H}'_S, \\ \mathcal{U} &\equiv 1+\mathcal{U}' \equiv 1+\mathcal{W}+\mathcal{V}, \\ \mathcal{U}^{-1} &\equiv 1+\mathcal{G} \equiv 1+\mathcal{W}-\mathcal{V}, \\ \mathcal{W} &\equiv -\frac{1}{2}\mathcal{G}\mathcal{U}', \\ \mathcal{A} &\equiv \mathcal{H}'_R\mathcal{U}', \\ \mathcal{Z} &\equiv [\mathcal{W},\mathcal{H}_S], \\ \mathcal{Y} &\equiv \mathcal{B}+\mathcal{H}'_R+\mathcal{A}-\mathcal{Z}, \\ \mathcal{B} &\equiv \mathcal{U}\mathcal{H}_S - \mathcal{H}\mathcal{U}, \\ \mathcal{B}_+ &\equiv \mathcal{B}+\mathcal{G}\mathcal{B}, \\ \tilde{\mathcal{H}}_S &\equiv \mathcal{H}_S - \mathcal{B}_+, \qquad \tilde{\mathcal{H}}_R \equiv 0. \end{aligned}\end{split}\]

With this notation, the order-by-order recurrence is

(22)#\[\begin{split}\begin{aligned} \mathcal{U}'_0 &= 0,\qquad \mathcal{G}_0 = 0,\qquad \mathcal{V}_0 = 0,\qquad \mathcal{B}_0 = 0, \\ \mathcal{W} &= -\frac{1}{2}\mathcal{G}\mathcal{U}', \\ \mathcal{U}' &= \mathcal{W}+\mathcal{V}, \\ \mathcal{G} &= \mathcal{W}-\mathcal{V}, \\ \mathcal{A} &= \mathcal{H}'_R\mathcal{U}', \\ \mathcal{B}_R &= -(\mathcal{G}\mathcal{B})_R, \\ \mathcal{B}_+ &= \mathcal{B}+\mathcal{G}\mathcal{B}, \\ \mathcal{Z} &= \frac{1}{2} \left( + \mathcal{A} - \mathcal{G}\mathcal{H}'_R - \mathcal{G}\mathcal{B} - \mathcal{B}_+\mathcal{G} \right), \\ \mathcal{Y} &= \mathcal{B}+\mathcal{H}'_R+\mathcal{A}-\mathcal{Z}, \\ \mathcal{B}_S &= \left([\mathcal{V},\mathcal{H}'_S] + \mathcal{Z} - \mathcal{A}\right)_S, \\ [\mathcal{V},H_0]_R &= \left(\mathcal{Y} - [\mathcal{V},\mathcal{H}'_S]\right)_R. \end{aligned}\end{split}\]

The last line is the only Sylvester solve. All earlier lines are Cauchy products between series that start at first order, so order \(\mathbf{n}\) depends only on lower orders. Eq. (21) then gives \(\tilde{\mathcal{H}}_{\mathbf{n},S}\).

Implicit mode#

The Hermitian implicit construction assumes that the explicit subspace is described by one orthonormal basis \(\Psi_E\). The missing block is then represented by the orthogonal complement

(23)#\[Q = 1 - \Psi_E \Psi_E^\dagger.\]

For a genuinely non-Hermitian \(H_0\), we instead use biorthogonal right and left bases:

(24)#\[R_E,\;L_E, \qquad L_E^\dagger R_E = 1,\]

The columns of \(R_E\) span the explicit subspace, and the columns of \(L_E\) span its dual. The projector onto this subspace and its complement are

(25)#\[P_E = R_E L_E^\dagger, \qquad Q = 1 - R_E L_E^\dagger.\]

In general this projector is oblique rather than orthogonal, so it is not self-adjoint. The block projections become

(26)#\[H_{ij} = L_i^\dagger H R_j, \qquad H_{iQ} = L_i^\dagger H Q, \qquad H_{Qi} = Q H R_i, \qquad H_{QQ} = Q H Q.\]

The Sylvester equations keep the same structure as in the Hermitian implicit derivation, but they use this oblique \(Q\) and the explicit energies

(27)#\[L_i^\dagger H_0 R_i.\]

So the direct implicit solver needs the same two ingredients:

  • right subspace bases to define the retained states,

  • left dual bases to define the projection and the complementary block.