每多一个自旋,表就翻一倍
一排自旋,每个都可以沿选定的轴朝上或朝下。这排自旋的量子态给每种“上下排列”配一个复振幅,振幅模的平方就是测到这种排列的概率。两个自旋有 4 种排列,三个有 8 种,以后每多一个就翻一倍。
一个双精度复数占 16 字节。20 个自旋约需 1700 万字节,笔记本电脑装得下;32 个自旋约需 690 亿字节;40 个自旋约需 18 万亿字节。一百个自旋的一般量子态,没有哪台机器存得下。
这门课用到的两条链
第一条是横场 Ising 链。相邻自旋想沿同一个轴对齐,垂直方向的横场则想把每个自旋扳过去。耦合常数取作能量单位。横场小于耦合时链有序;大于耦合时,自旋顺着横场排,最低激发要付出一个能隙;两者相等时能隙降到零,这就是临界点。
第二条是自旋 1/2 的 Heisenberg 反铁磁链,相邻自旋在各个方向上都倾向于反向。两条链都取开放边界,首尾两个自旋各只有一个邻居。选这两个模型,是因为它们都有精确解:Ising 链可以化成自由费米子,Heisenberg 链有 Bethe 拟设。
完整例题
算一算:32 个自旋的基态要多少内存
在“上、下”基里,上面两个哈密顿量的矩阵元都是实数,所以基态可以只用实振幅,每个 8 字节。即便如此,32 个自旋的完整振幅表仍要约 340 亿字节。
DMRG 实验存的是矩阵乘积态,第三章会讲怎样搭出它。默认设置下,相邻两个自旋之间最多保留 16 个态,靠近两端的地方更少。把算完后链上各个矩阵的元素数加起来,一共 11048 个实数,约 88 千字节。只用这么点存储,临界 Ising 链的能量与自由费米子精确值之差,不到耦合常数的百亿分之几。
省下来的不是格式的功劳。同样的格式拿去存一个同样长的随机态,几乎得存满整张表。下一节说明原因。
基态特别在哪里
在相邻两个自旋之间把链切开。第二章会定义一个量,叫纠缠熵,用来衡量两边互相牵连得多紧。如果态能写成“左态乘右态”,它就是零。12 个自旋的链从正中切开,纠缠熵最大是 6 倍的 2 的自然对数,约 4.16。
压缩实验里的基态都远低于这个上限。临界 Ising 链中间切口的纠缠熵是 0.40,横场为 2.5 的有能隙链只有 0.06,而一个 12 自旋的随机态有 3.66。Schollwöck 把这归结为面积律:在一维,有能隙基态的纠缠熵不随链长增长;随机态则不同,它的纠缠熵是广延量,随区块大小成正比增长。
Verstraete 和 Cirac 把这一点变成了关于误差的结论。他们用区块的纠缠熵,给出给定大小的矩阵乘积态能把一个态近似到什么程度,并据此说明一维链的基态能被如实地表示。压缩实验把对比摆在眼前:临界基态在 4096 个数里只留 296 个,误差平方约百万分之六;随机态留下 2728 个数,仍然丢掉约一半的模方。