# About psi.position(n) of MPS

+1 vote
asked Nov 11, 2017

Hi,

I was wondering that when we call psi.position(n) to put orthogonal center at n site, it should include some SVD. But SVD should be assigned with "Cutoff" and "Maxm". Why we don't consider that in psi.position(n)?
Thanks.

Victor.

## 1 Answer

+1 vote
answered Nov 11, 2017 by (20,240 points)

Hi Victor,
There's only a need to provide a "Cutoff" and "Maxm" parameter to the SVD if one wishes to truncate. If one does not want any truncation to happen, then those parameters aren't needed.

The .position method is mainly intended to just shift the orthogonality center of the MPS without changing anything else about the MPS. So typically one doesn't want to truncate, or at least it's not the default behavior.

The SVD inside the position method is defined to just keep the same bond dimensions that the MPS had before position was called.

Finally, the .position method does in fact accept optional named args. But I neglected to mention this in the documentation. So I just updated the documentation to point this out.

Miles

commented Nov 11, 2017 by (400 points)
Hi Miles,

Thanks for your prompt reply.
So the reason for truncation of MPS in DMRG is mainly to reduce the cost of ED at each bond. The SVD for  shifting orthogonality center doesn't cost that much.

Victor.
commented Nov 11, 2017 by (20,240 points)
Hi Victor,
Your comment is correct to the extent that (1) the ED step is the most costly part of DMRG and (2) truncating the MPS does keep this ED step from being prohibitively costly. However there are many other parts of DMRG that would also be prohibitively costly if one didn't truncate the MPS, as each part of the algorithm has some dependence on the MPS dimension, which would be exponentially big if one didn't truncate it. But also, yes, the actual part about truncating the MPS which also involves shifting the orthogonality is a less costly part of DMRG.

Miles