Fixed bond dimension operations

Hi,

I wanted to ask for help as I am trying to reproduce the technique of using Chebysev polynomials of MPOs of a certain Hamiltonian to estimate the DOS from arXiv:1909.01398v1.

The Chebysev polynomials are computed using the recursive relation:

T_{n+1}(H) = 2H T_n(H) - T_{n-1}(H), \quad \text{with } T_0(H) = I \text{ and } T_1(H) = H.

where H is a MPO of the Hamiltonian. As the authors say in the paper, you need to fix the bond dimension if you want to sum these MPOs as they must be the same kind of tensor, so I guess one should try to “extend” the bond dimension of the identity MPO and first order polynomials.

I am having trouble to find a way to get I and H to have the desired fixed tensor structure to perform those operations in the documentation or by myself.

If someone could help me I would really appreciate it.

(btw: Sorry if the question is too naive, I am still getting used to ITensor and TNs by myself)

Hi Jorge,
The ITensor toolkit ought to be a good fit for what you’re trying to do.

To make H as a tensor network, you can use the “OpSum system” which converts data about products of operators (somewhat similar to Latex input) into MPO tensor networks automatically. You can see an example of the use of this system at this link:
https://itensor.github.io/ITensors.jl/dev/tutorials/DMRG.html
(Just the part leading up to and including the line that reads H = MPO(os,sites).)

Then for the identity operator in the same Hilbert space, you could make this as:

os_I = OpSum()
os_I += "Id",1
I = MPO(os_I,sites)

where adding just the "Id",1 operator is enough because our system understands it to mean, implicitly, the identity operator on site 1 times the identity operator on site 2, etc. times identity on all the other sites. (This is generally implied in all physics operator notation, that any sites not carrying a non-trivial operator are actually just a product with the identity operator on that site.)

Then once you have made H and I as MPO’s, you can perform operations with them. Note that for the usual Chebyshev MPO technique, if I recall correctly, you do not actually want to compute T_n(H) itself, but the action of T_n(H) on a reference state (represented as an MPS) which is much more efficient.

1 Like

I’ll try to implement it that way, thank you very much!