Time correlations for an MPS

Hey all,
I want to calculate a time dependent autocorrelation function for a spin.

\langle S_z(t)S_z(t') \rangle

I saw in the documentation that there is an option to calculate a correlation matrix, but I think it is local on time. Is there any way to generalize it so that it won’t be local on time ?

This are the link for the documentation I found:
https://itensor.github.io/ITensors.jl/stable/examples/MPSandMPO.html
https://itensor.github.io/ITensors.jl/stable/MPSandMPO.html#ITensors.correlation_matrix-Tuple{MPS,%20AbstractString,%20AbstractString}

The way to obtain time dependent correlation functions is to time evolve your state (using either gates or TDVP), applying the first operator at time t’ and the second at time t. If you’d like I could share some references with more details about doing this.

It’s unlikely we would add this as a capability to the correlation_matrix function becuse time evolution is a complicated and much more costly process and it wouldn’t be such a good idea to put it into the same function as equal time correlators which are fast and straightforward to compute.

1 Like

Hey,
I understand what you are saying, but in the correlation_matrix function their is no possibility to give two different MPS. That means that we can’t calculate:

\langle n (t')| n(t)\rangle

My problem is that I have a wave function of sites 1,…,N, and my Goal is to calculate
the correlation function of the last site of that MPS on two different times.

The method I tried was:

site= sittings("Qubit",n)
psi= randomMPS(site)
op= OpSum()
op+= "Sz",n
Sz= MPO(op,site)
a= apply(Sz,psi)
psi=tdvp(H,psi,i*tau)
b= apply(Sz,psi)
Correlation= inner(a,b)

Is that the right way to calculate the correlation of a site in two different times ?

Hello! I was wondering if you wouldn’t mind sharing the references that you mentioned pertaining to this? I am also looking to implement such an approach! Thank you so much.

1 Like