先找设定,再看图
从第 5 节 Comparison 读起。García-Ripoll 用式 (32) 的自旋链演化同一个初态:所有自旋都指向同一个垂直于 z 轴的方向。式 (32) 由两部分组成:交换项乘一个角度的余弦,沿 z 方向的场乘它的正弦。图 3 取 8 个自旋、角度 0.35、z 方向交换为零(于是这是 XY 模型),总时间为 10。
有两个设定决定了每条曲线怎么读。第一,误差取“算出的波函数减去精确波函数”这个差的模平方,而不是磁化强度或能量之差。第二,矩阵大小是 16,能装下 8 个自旋的任何态:中间切口两边各 4 个自旋、16 种构型。没有任何截断,所以图 3 单独呈现时间步误差和计算机的舍入。
读 (a) 图:坐标轴、曲线和三个区段
两个坐标轴都是对数的。时间步长从 0.002 到 5,误差从 10 的负 20 次方到 1。图例放在 (c) 图旁边。(a) 图里,蓝色代表式 (21) 的对称二阶分解,红色代表式 (22) 的四阶 Forest–Ruth 公式。每种颜色都有两条重叠的曲线:带圆点的标为 DMRG Trotter,不带圆点的标为 MPS Trotter。图例给蓝色标上“步长平方”,给红色标上“步长四次方”。黑色实线是每张图都有的 Arnoldi 和 Lanczos 参考线。蓝红之间还有一条细虚线,图例里没有,先不管它。
每条曲线都分三段。最右边,步长太大,误差饱和在 1 附近。中间是一段直线,也就是方法的幂律。最左边,步长越小误差反而回升。论文把这一段归因于计算机的有限精度:步数越多,舍入误差积累越多,大致与步长的平方成反比。斜率只能在中间那段读。
完整例题
先量斜率,再读标签
在步长 0.01 到 0.1 之间量蓝色曲线:它上升了大约四个数量级。标签写的却是步长平方。两者都没错:标签给出方法阶数,图里画的是模平方。若态的误差按步长的 p 次方变化,它的平方就按 2p 次方变化。Vidal 式 (24) 写的也是这条规律:忽略掉的修正正比于步长的 2p 次方,再乘以总时间平方。
独立检验能复现这条曲线。在 8 个自旋的全向量上,依次乘上式 (21) 的精确两格点门,这和论文中不截断的矩阵乘积态计算等价。在 0.01 到 0.1 之间拟合的斜率是 4.0003;另一套 SciPy 程序与之相差不到十亿分之一。这张图在 PDF 里以矢量线条保存,每个画出的点都能直接从文件读出,不必数像素。从步长 0.01 到 2.5,印出的蓝色曲线比复现结果低 0.10 到 0.18 个数量级,约为复现值的 1.36 分之一,斜率相同。
红色曲线用的是哪个四阶公式
用同样的办法跑式 (22)。在步长 0.01、0.02、0.05、0.1 四点上做最小二乘拟合,斜率是 7.998,态误差的阶数是 3.999,正是这个公式该有的四阶。可是在步长 0.11 到 0.5 之间印出的五个点上,红色曲线比这个结果低 3.5 到 3.8 个数量级。二阶曲线出自同一套程序、同一条链、同一个初态和同一种误差量,吻合到 0.18 个数量级以内,可见差距不在设定上。
式 (22) 引了第 8 和第 28 号文献,线索在第 28 号:Omelyan、Mryglod 和 Folk 的论文。他们在 Forest–Ruth 分解里多加一对指数因子,再调系数,让首项误差尽量小。系数列在他们的式 (17),误差常数约降到原来的四十二分之一。把他们的式 (9) 配上这组系数,让奇数键放在最外层,在同一条链上跑一遍,五个印出的点全都落在 0.17 个数量级以内。García-Ripoll 正文写的是式 (22),也没说图用了哪种分解,所以这个对应是我们的推断,不是作者的说法。
还有两段没有解决。步长超过 0.5 以后,印出的曲线到步长 2 时升了 7.2 个数量级,式 (22) 只升 3.8,优化分解只升 4.9,原因我们说不清。步长小于 0.08 时,曲线随步长变小反而回升。论文把它归于优化算法的有限精度,并给出最坏估计:步数的平方乘以 10 的负 16 次方。印出的这一段比该上限低 1.3 到 1.7 个数量级。全向量复现没有优化这一步,误差一路降到 10 的负 20 次方以下。
读下一张误差图时的检查清单
读斜率之前,先弄清误差量的是什么:模、模平方、保真度,还是某个观测量。把键维数和链可能有的最大 Schmidt 秩比一比,看截断是否在起作用。只在曲线成直线的地方读斜率;误差是平方量时,拿它和方法阶数的两倍比较。
接着留意曲线在小步长处从哪里开始上翘,作者把它归因于什么。自己复现一张图时,既要比斜率也要比绝对值。斜率对、高度不对,问题可能出在方法的系数上,这时去翻公式旁边引的文献。还要说清楚哪条曲线对上了、哪条没有。然后打开淬火实验,选“时间步太粗”预设,看同样的时间步误差怎样在舍弃权重仍很小时冒出来。