svd_theta

tenpy.linalg.truncation.svd_theta(theta, trunc_par, qtotal_LR=[None, None], inner_labels=['vR', 'vL'])[source]

Performs SVD of a matrix theta (= the wavefunction) and truncates it.

Perform a singular value decomposition (SVD) with svd() and truncates with truncate(). The result is an approximation theta ~= tensordot(U.scale_axis(S*renormalization, 1), VH, axes=1)

Parameters:
  • theta (Array, shape (M, N)) – The matrix, on which the singular value decomposition (SVD) is performed. Usually, theta represents the wavefunction, such that the SVD is a Schmidt decomposition.

  • trunc_par (dict) – truncation parameters as described in truncate().

  • qtotalLR ((charges, charges)) – The total charges for the returned U and VH.

  • inner_labels ((string, string)) – Labels for the U and VH on the newly-created bond.

Returns:

  • U (Array) – Matrix with left singular vectors as columns. Shape (M, M) or (M, K) depending on full_matrices.

  • S (1D ndarray) – The singular values of the array. If no cutoff is given, it has length min(M, N). Normalized to np.linalg.norm(S)==1.

  • VH (Array) – Matrix with right singular vectors as rows. Shape (N, N) or (K, N) depending on full_matrices.

  • err (TruncationError) – The truncation error introduced.

  • renormalization (float) – Factor, by which S was renormalized.