0 votes
asked by (250 points)

Dear Itensor,

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:

713 template
714 std::vector
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, ...)


1 Answer

+1 vote
answered by (9.7k points)
selected by
Best answer

Hi, this is a known problem with our Arnoldi implementation. I've suggested a workaround here: https://github.com/ITensor/ITensor/issues/360

You could also consider using an external library like Arpack. Unfortunately, we don't have the time to debug the Arnoldi code in the near future.

commented by (250 points)
Dear Matt,

Thanks for the response. I read more on arnoldi/Lanczos. It seems that even for Lanzcos, it is not guaranteed that the leading eigenvalues will be found. People understand Arnoldi even less. So maybe the code isn't buggy after all.

Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.