一次拆下一个自旋
先把振幅排成两行的矩阵:行由第一个自旋标记,列由其余自旋标记。做一次奇异值分解,把左因子(一个 2 乘 2 矩阵)留作第一个自旋的张量。把奇异值乘进右因子,再把它重排一下,让第二个自旋也并到行里。
再分解一次,新的左因子留作第二个自旋的张量,其余继续往后传。拆完最后一个自旋,每个振幅都读作:行向量乘一串矩阵再乘列向量,每个自旋一个矩阵,按它朝上还是朝下挑选。Schollwöck 综述第 4.1.3 节就是这样一步步搭出这种分解的。
为什么这些矩阵保持正交归一
每个留下来的左因子都来自奇异值分解,所以它的各列彼此正交归一。对该自旋的两个取值求和,张量的共轭转置乘它自己就是单位矩阵。Schollwöck 把这样的张量叫作左正交化的。
这一点很实用。把切口左边的张量都左正交化,这个切口上的各列就成了左段的一组正交归一基。这时切口处的奇异值正是整个态的 Schmidt 系数。于是任何一处的纠缠熵和截断误差都能就地读出,不必碰链的其余部分。
完整例题
数一数:12 个自旋要存多少个数
不截断时,一处切口的 Schmidt 项数不会超过较短一侧的构型数。12 个自旋的链,各条连接最大可以依次是 2、4、8、16、32、64,再对称地降回来。数一数元素,一般量子态的精确矩阵乘积态要存 10920 个数,是原振幅表的两倍多。光换格式省不了什么,省下来的全靠截断连接。
现在把每条连接都限制在 4,这是压缩实验的默认值。连接大小变成 1、2、4,接着 8 条连接都是 4,最后 4、2、1。每个张量含两个矩阵(自旋上、下各一个),大小是“左连接乘右连接”。加起来是 296 个数,原来要 4096 个。实验对临界链报告的存储数就是 296。
Vidal 的写法把权重摆在明处
Vidal 在 2004 年换了一种写法:在每两个格点张量之间,单独存下这处切口的 Schmidt 系数向量。这样,一条自旋链的态所需的参数个数,只随“链长乘最大连接大小的平方”增长,而不是指数增长。
这种写法让截断一目了然:每处切口的系数都摆在外面,要把一条连接截小,就丢掉它最小的几个系数。第六章用这种写法做时间演化。