-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VUMPS for real-valued iMPS #198
Comments
Thanks for raising the issue and explaining the background, that helps a lot! The main point of these lines of code is to get some form of normalization convention for the environments, such that the overlap of the left and right part is 1. Currently, we do this by symmetrically distributing the factors over left and right (hence the sqrt), but in principle this is not really necessary. |
I pushed a changed version that should have fixed this, which is now also tagged. Could you verify that this is now fixed for you, and let me know if the problem remains, or anything else shows up? |
It works, thanks! |
Hi!
VUMPS truncation is not working for real-valued infinite MPSs.
MWE:
raises an error whenever a certain dot product
λ
in themixed_fixpoints
subroutine happens to be negative, because its square root is taken. This is not a problem in the general case whereλ
is complex.(julia v1.11.1, MPSKit v0.11.4, TensorKit v0.12.7)
Happy to contribute with a PR if you think it's worth doing something about this.
Background
I'm using MPSKit for VUMPS-based truncations of infinite MPSs that are used to parametrize the probability of a classical particle evolving in time. It's been very useful, so thanks, especially to @leburgel who helped previously! Should anyone be interested this is the article.
The main point is that my iMPSs are real-valued, because they directly represent probability distributions, instead of their "square roots" as in a quantum setting. We need to truncate these iMPSs to smaller bond dimension, while keeping them real-valued. I'm sure this is doable, since all the subroutines in VUMPS (computation of leading eigenvalues, SVDs, etc.) return real numbers if initialized within the reals. For now i'm working with a personal fork of MPSKit that does the easy fix
sqrt(λ)
->sqrt(abs(λ))
, but it would be nice to reference the official package as we make our code available after publication.The text was updated successfully, but these errors were encountered: