import numpy, mathdef schmidt_decomposition(A):assert A.shape == (2, 2)U, D, VH = numpy.linalg.svd(A)"""print("begin debug")print(U)print(D)print(VH)B = U @ numpy.diag(D) @ VHprint(B)print(B == A)print(numpy.allclose(A, B))print("end debug")"""print(f"{A}的施密特分解:")for i in range(2):if D[i]:if i:print("+", end="")print(f"{D[i]}*{U[:, i]} tensor {VH[i, :]}", end="")print()schmidt_decomposition(numpy.array([[1. / math.sqrt(2.), 1. / math.sqrt(2.)], [1. / math.sqrt(2.), -1. / math.sqrt(2.)]]))
schmidt_decomposition(numpy.array([[0.5, 0.5], [0.5, 0.5]]))
