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!