Left and right matrices

Hi again everyone,

Quick question, about the infiniteMPS stuff. is there a way to directly access the tensors L and R s.t. A_L = L^{}AL^{-1} and A _R = R^{-1} A R^{} , where A is the tensor that the state is infinite copies of. We have access to A , AL, AR , but I’m having difficulty accessing L and R except for square rooting the left and right fixed points of the transfer matrix I found, which doesn’t yield the correct result often. I need this for calculating the action of the pseudo inverse (1- E^L_R)^p = (1- \~E^L_R)^{-1} exactly. I have the full eigendecomposition of E, and will use that for an expansion of the psuedoinverse, but I need to tack on these pesky L and R matrices. Any help is appreciated. Thanks!

Best,
Jake

Using the ideas from Tangent-space methods for uniform matrix product states, E^L_R has been transformed by the C tensor (i.e. picking a gauge), which should be a good approximation compared to using l and r which are both \approx C^\dagger C. You can also use the fixed points of the transfer matrices directly which should be used with the full transfer matrix instead (E), but is more expensive.

I used the following to compute the pseudoinverse for E^L_R for example

struct Aᴸᵣ
  ψ::InfiniteCanonicalMPS
end

function (A::Aᴸᵣ)(x)
  ψ = A.ψ
  ψᴴ = dag(ψ)
  ψ′ = ψᴴ'
  ψ̃ = prime(linkinds, ψᴴ)

  N = length(ψ)
  #@assert n == N

  l = linkinds(only, ψ.AL)
  l′ = linkinds(only, ψ′.AL)
  r = linkinds(only, ψ.AR)
  r′ = linkinds(only, ψ′.AR)

  xT = (translatecell(translator(ψ), x, 1))
  for j in reverse(1:N)
    xT = xT * ψ.AL[j] * ψ̃.AR[j]
  end
  δˡ(n) = δ(Bool, r[n], l′[n])
  δʳ(n) = δ(Bool, dag(l[n]), prime(r[n]))
  xR = x * ψᴴ.C[0] * (ψ′.C[0] * δˡ(0)) * denseblocks(δʳ(0))
  return xT - xR
end

#....
ϕ = #...

A = Aᴸᵣ(ψ)
L, info = linsolve(A, ϕ, 1, -1; tol=1e-10)
# this is a different L, not A_L=LAL^-1
1 Like

Thank you this is incredibly helpful. I’ve been using a spectral decomposition of the transfer matrix and getting the pseudoinverse through a series, which has numerical stability issues. This makes sense since, even the notes say this is the smarter way to calculated the action of the PI. The way you’re getting the left and right fixed points is also so much simpler than the way I’ve been doing it :sweat_smile: .

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.