Convergence of DMRG verification and finding error bars on computed values

Hi,

I am applying DMRG to a problem with a 1 d hamiltonian, As I vary the length of the chain I find that DMRG has not yet converged for 512 sites. I am attaching the code below.

H = MPO(os,sites)

    
                #Initiazling a randommps
                psi0 = randomMPS(sites,30)

            #################################################################
                #Doing the DMRG sweeps
                nsweeps = 5
                maxdim = [10,20,100,100,200]
                cutoff = [1E-10]

            energy, psi = dmrg(H,psi0; nsweeps, maxdim, cutoff)

How and what should I change so that the result converges?

Also I am calculating some expectation values and I am trying to put error bars on the values I get . Could you please suggest ways to formulate this? For e.g. Say how the result changes with the values of arguments given to the DMRG command or something similar.

Thanks.

Hi Sunny, This page in the docs has a very good discussion of dealing with convergence issues. In particular try putting some noise in your sweeps and removing the noise at the end.

Regards
Jan

Also you could certainly try doing more than 5 sweeps. (More ideas on the page linked.)

As far as error bars go, basically no, DMRG does not offer error bars since it is not a statistical or sampling method. But there are some techniques that have been proposed to estimate errors, mainly converging DMRG at different cutoff levels and extrapolating the results in the cutoff, then estimating the error empirically as being related to the distance of the last point used in the extrapolation to the extrapolated value.

Another error measure could be the energy variance, which measures how close the state is to being an eigenstate (not necessarily the ground state though, so you should take care to make sure it is properly finding the ground state and not an excited state). For example: [1711.01104] Error estimates for extrapolations with matrix-product states. Though that may not help with estimating the error of other observables in general, perhaps in some cases there is a known relationship between the error in energy and the error in other observables.

Hi,
Thanks for your input, that page sure helped . I increased the sweeps and the bond dimensions in successive sweeps also put in noise that progressively goes to zero with the sweeps. From the outputs at the consecutive sweeps it seems as though DMRG is converging. The energy values stop changing much as the sweeps progress, the max bond dimensions that I put in are not even getting saturated, It’s taking just 50 - 60 bond dimensions for DMRG to converge with a cutoff of 1E-8.

If I calculate the expectation values of an observable at different lengths of the 1d chain say 64,128,256,512 . The values I get are fluctuating a lot say 50-60 percent though from the above it seems that DMRG converged. What could be a reason behind this?

Also the problem that I am doing has a 12 dimensional local Hilbert space at each site, Could this be a possible reason for the discrepancies?

Thanks,
Jay.

Hi,
Thanks for taking the time to help,
Yes there are no statistical or sampling errors involved.
If I specify the max cutoff level then it might happen that the actual truncation error is less than the value specified. I can just give an upper bound to it with the way DMRG method has been constructed. Will that be fine? , Specifying just the upper bound.

Thanks Jay.

Hi,
Thanks for taking the time to help.
Yeah I thought of this method, Could you give some tips please on how to make sure it is the ground state that is being reached by DMRG and not some excited state?

Yeah figuring out how to relate the errors in one observable with that of another is surely a challenge still I guess something is better than nothing.

Thanks,
Jay.

The main way I know of is trying different starting states, pinning fields, and boundary conditions and pick the lowest energy state that you find.

There’s no way to know for sure that it’s the ground state and not an excited state. It mostly just requires physical reasoning about whether the properties seem ok, and mostly comparison to known limits (e.g. exactly solvable points or limits where the physics is simple). Also it’s important to compare results on small systems where you can use ED then gradually scale up system size and verify that the properties remain similar.