I'm trying to compute the entanglement entropy of a block of spin sites. To do that, I would like to compute the leading a few eigenvalues of the reduced density matrix with the arnoldi method. In iterativesolvers.h, the arnoldi method reads:
715 arnoldi(const BigMatrixT& A,
716 std::vector& phi,
717 Args const& args)
I thought that if phi is a vector of n ITensors, the method would compute the leading n eigenvalues. I tried this way, but the method only computes the leading eigenvalue correct, all the other values in the std::vector returned by the method do not correspond to the other eigenvalues.
I'm wondering what one should do to compute the other eigenvalues? Also, do you know what the returned values really are, if they are not the leading eigenvalues?
(For example, for the reduced density matrix I have, the exact diagonalization gives the spectrum: 0.931117, 0.0342919, 0.0332737, ..., but the arnoldi returns 0.931117, 0.0641384, 0.0600246, ...)