changing the normalization condition in the DMRG

Hello everyone,

Is there an easy way to change the behavior of the DMRG algorithm so that instead of optimizing:

\langle\psi | \hat{H} | \psi\rangle - \lambda \langle\psi | \psi\rangle,

normalizing the state, it would optimize

\langle\psi | \hat{H} | \psi\rangle - \lambda \langle\phi | \psi\rangle,

where \phi is fixed by the user? Another way of writing the last one would be:

\langle\psi | ( \hat{H} - \lambda | \phi \rangle \langle\phi | ) | \psi\rangle.

This is relevant for me as I am running the DMRG with MPS representations of density matrices, which are not normalized in the same way pure states are.

I think a good way to do this, instead of modifying the DMRG algorithm, would be:

  1. run the existing DMRG algorithm to obtain | \psi \rangle
  2. compute N = \langle \phi | \psi \rangle using e.g. the ITensor function inner
  3. divide | \psi \rangle by \sqrt{N} or similar to obtain the normalization you want relative to |\phi \rangle

Does that address what you want to do?

Hi Miles,

Thanks for the quick reply. This is what I am doing now as a temporary solution and sometimes it works, but some other times the result of step 3. is unphysical.
I am trying to minimize

\langle\rho| \hat{L^\dagger L} | \rho\rangle ,

to find a steady state, but the condition trace = 1 should be imposed as

\langle Id| \rho\rangle ,

while \langle\rho| \rho\rangle is the purity. If during the variational algorithm \langle Id| \rho\rangle becomes too small the purity after your step 3 could become >1

I see, but I meant that steps 2 and 3 would be run after using DMRG to optimize \rho. So \rho would no longer be changing except for an overall normalization or scalar prefactor. Then you can choose this scalar to be anything you would like, and it can be chosen to make the overlap with \phi (say \langle \phi | = \langle \text{Id}|) to be the value that you need.

Hi Miles,

Yes, I do those steps after the DMRG. Let me make clear the problem I sometimes encounter.
Since the DMRG as it is essentially constraints the purity \langle\rho| \rho\rangle to be =1, the only way to have a mixed state is for the DMRG to increase the trace \alpha = \langle Id| \rho\rangle, so that after renormalizing as you suggest the trace becomes 1 and the purity becomes

\frac{1}{\alpha^2} ,

Sometimes this works well, but sometimes the algorithm converges to a state with \alpha < 1, making the purity unphysically larger than 1.
I am using the method found in [1501.06786] Variational Matrix Product Operators for the Steady State of Dissipative Quantum Systems, which suffers in general from convergence to unphysical states, but this might be mitigated if my original question had a (hopefully simple, probably not) solution