Hi, hope you are doing well.
Given an op in the form of OpSum, I would like to obtain its whole set of eigenstates and turn them into MPSs to compute separately the overlaps between each eigenstate of op with a given MPS psi, thus \langle\text{each eigst of op}|\psi\rangle. I have been following different posts regarding exact diagonalization with ITensor
but, unfortunately, they apparently do not answer my question.
Here there is a snippet of code where the op to diagonalize is prepared and exact diagonalized using eigen, returning an 2^N\times 2^N matrix V for the eigenstates, as expected.
using ITensors
let
N = 4 # number of sites
s = siteinds("Qubit", N)
op = OpSum()
for i in 1:N
op += "Ïy", i
end
cb=combiner(dag(s)...)
cbp=combiner(s'...)
H = prod(MPO(op, s))*cb*cbp
E, V = eigen(H,combinedind(cb),combinedind(cbp), ishermitian=true)
psi = randomMPS(s;linkdims=2)
return
end
The problem comes when I try to access each individual eigenstate of V, since I do not know how to manipulate the NDTensors.Dense object. As I said, I would also like to convert them into MPSs to extract each inner(each eigst of op', psi).
Thanks a lot for your time devoted!