在前文我们已经知道,对于某个辅助场的构型,对应的费米子部分的权重为:
\[ \prod_{\sigma=\uparrow \downarrow} \operatorname{Det}\left[\mathbf{I}+ \mathbf{B}_{C}^{\sigma}(\beta, 0)\right] \]因为中间的各种矩阵都是关于自旋上下块的,所以我们可以分开考虑自旋上下的情况,最后再把上和下的权重乘起来。
根据定义,我们知道某个辅助场构型对应的权重为 \(\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau) \mathbf{B}(\tau, 0)]\) ,而更新了 \(\tau\) 层( \(\tau =l \Delta \tau\) )的辅助场后的权重为:
\[ \begin{aligned} & \operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau) e^{V\left(\vec{S}^{\prime}_{l}\right)} e^{-\Delta \tau T} \mathbf{B}(\tau -\Delta \tau, 0)]\\ = & \operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau) e^{V\left(\vec{S}^{\prime}_{l}\right)} e^{-V\left(\vec{S}_{l}\right)} \mathbf{B}(\tau , 0)]\\ =&\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau) (\mathbf{I}+\mathbf{\Delta}) \mathbf{B}(\tau , 0)] \end{aligned} \]其中, \(\mathbf{\Delta}=e^{V\left(\vec{S}^{\prime}_{l}\right)} e^{-V\left(\vec{S}_{l}\right)}-\mathbf{I}\) 。我们注意到,对于诸如Hubbard等on-site的相互作用的形式, \(\mathbf{\Delta}=e^{V\left(\vec{S}^{\prime}_{l}\right)-V\left(\vec{S}_{l}\right)} -\mathbf{I}\) 。当改变 \(L \times L \times L_{\tau}\) 中的一个site的辅助场 \(s_{i,l}\) 的值的时候,Δ 矩阵只有一个元素非零,且为 \(e^{\pm \alpha \Delta s_{i,l}}-1\) 。其中的±对应自旋上下。
因此我们在计算更新前后的接受概率(权重的比值)时,有:
\[ \begin{aligned} & \frac{\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau)(\mathbf{I}+\Delta) \mathbf{B}(\tau, 0)]}{\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, \tau) \mathbf{B}(\tau, 0)]} \\ =& \frac{\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, 0)+\mathbf{B}(\beta, \tau) \Delta \mathbf{B}(\tau, 0)]}{\operatorname{det}[\mathbf{I}+\mathbf{B}(\beta, 0)]} \\ =& \operatorname{det}\left[\mathbf{I}+\mathbf{B}(\beta, \tau) \Delta \mathbf{B}(\tau, 0)(\mathbf{I}+\mathbf{B}(\beta, 0))^{-1}\right] \\ =& \operatorname{det}\left[\mathbf{I}+\Delta \mathbf{B}(\tau, 0)(\mathbf{I}+\mathbf{B}(\beta, 0))^{-1} \mathbf{B}(\beta, \tau)\right] \\ =& \operatorname{det}\left[\mathbf{I}+\boldsymbol{\Delta}\left(\mathbf{I}-(\mathbf{I}+\mathbf{B}(\tau, 0) \mathbf{B}(\beta, \tau))^{-1}\right)\right] \\ =& \operatorname{det}[\mathbf{I}+\mathbf{\Delta}(\mathbf{I}-\mathbf{G}(\tau, \tau))] \end{aligned} \]其中第四个等号用到了Sherman-Morrison公式:
\[ (\mathbf{I}+\mathbf{U V})^{-1}=\mathbf{I}-\mathbf{U}\left(\mathbf{I}_{k}+\mathbf{V U}\right)^{-1} \mathbf{V} \]U是 \(N \times k\) 的矩阵,V是 \(k \times N\) 的矩阵。证明见前文附录。因为此处的 Δ矩阵只有一个元素非零,则接受概率实际上可以通过如下方式简单计算:
\[ \begin{aligned} r=&\operatorname{det}[\mathbf{I}_{N \times N}+\mathbf{\Delta}_{N \times N}(\mathbf{I}-\mathbf{G}(\tau, \tau))_{N \times N}] \\ =& \operatorname{det}[\mathbf{I}_{N \times N}+\mathbf{\Delta}_{N \times 1}(\mathbf{I}-\mathbf{G}(\tau, \tau))_{1 \times N}]\\ =& \operatorname{det}[\mathbf{I}_{1 \times 1}+(\mathbf{I}-\mathbf{G}(\tau, \tau))_{1 \times N} \mathbf{\Delta}_{N \times 1}]\\ =& \operatorname{det}[\mathbf{I}_{1 \times 1}+(\mathbf{I}-\mathbf{G}(\tau, \tau))_{1 \times 1} \mathbf{\Delta}_{1 \times 1}]\\ =& 1+\mathbf{\Delta}_{i i}\left(1-\mathbf{G}_{i i}\right) \end{aligned} \]其中第二个等号利用了公式
\[ \det(I_{m}+AB)=\det(I_{n}+BA) \label{eq1} \],证明见附录:
\[ \det(\mathbf{I}_{N}+\mathbf{U V})=\det(\mathbf{I}_{k}+\mathbf{ VU}) \]比如自旋上部分的权重比就为 \(1+(e^{\alpha \Delta s_{i,l}}-1)(1-G^{\uparrow}(\tau,\tau)_{i,i})\) ,自旋下部分 \(1+(e^{-\alpha \Delta s_{i,l}}-1)(1-G^{\downarrow}(\tau,\tau)_{i,i})\) 。我们看到,因为Hubbard的特殊形式,导致我们其实在有对应等时格林函数的值的时候,不需要计算一个巨大矩阵的乘法再加上行列式,只需要计算一个数,即能得到接受概率。
而这样的方式需要我们随时更新的等时格林函数的数值。根据定义:
\[ \begin{aligned} \mathbf{G}^{\prime}(\tau, \tau) &=[\mathbf{I}+(\mathbf{I}+\boldsymbol{\Delta}) \mathbf{B}(\tau, 0) \mathbf{B}(\beta, \tau)]^{-1} \\ &=\mathbf{G}(\tau, \tau)[(\mathbf{I}+(\mathbf{I}+\boldsymbol{\Delta}) \mathbf{B}(\tau, 0) \mathbf{B}(\beta, \tau)) \mathbf{G}(\tau, \tau)]^{-1} \\ &=\mathbf{G}(\tau, \tau)\left[\left(\mathbf{I}+(\mathbf{I}+\boldsymbol{\Delta})\left(\mathbf{G}^{-1}(\tau, \tau)-\mathbf{I}\right)\right) \mathbf{G}(\tau, \tau)\right]^{-1} \\ &=\mathbf{G}[\mathbf{I}+\boldsymbol{\Delta}(\mathbf{I}-\mathbf{G})]^{-1} \end{aligned} \]同样的利用Sherman-Morrison公式:
\[ (\mathbf{I}+\mathbf{U V})^{-1}=\mathbf{I}-\mathbf{U}\left(\mathbf{I}_{k}+\mathbf{V U}\right)^{-1} \mathbf{V} \]我们有:
\[ \begin{aligned} \mathbf{G}^{\prime}(\tau, \tau) &=\mathbf{G}_{N \times N }(\mathbf{I}_{N \times N}+\boldsymbol{\Delta}_{N \times N} (\mathbf{I}-\mathbf{G})_{N \times N})^{-1} \\ &=\mathbf{G}_{N \times N}(\mathbf{I}_{N \times N}+\boldsymbol{\Delta}_{N \times 1} (\mathbf{I}-\mathbf{G})_{1 \times N})^{-1} \\ &\left.=\mathbf{G}_{N \times N}\left[\mathbf{I}_{N \times N}-\boldsymbol{\Delta}_{N \times 1}\left(\mathbf{I}_{1 \times 1}+(\mathbf{I}-\mathbf{G})_{1 \times N} \boldsymbol{\Delta}_{N \times 1}\right)^{-1} (\mathbf{I}-\mathbf{G})_{1 \times N}\right)\right] \\ &=\mathbf{G}_{N \times N}-\mathbf{G}_{N \times N} \boldsymbol{\Delta}_{N \times 1} \; \frac{1}{r}\; (\mathbf{I}-\mathbf{G})_{1 \times N} \\ &=\mathbf{G}_{N \times N}-\mathbf{G}_{N \times 1} \boldsymbol{\Delta}_{1 \times 1} \; \frac{1}{r}\; (\mathbf{I}-\mathbf{G})_{1 \times N}\\ &=\mathbf{G}_{N \times N}-\mathbf{G}(:,i) \boldsymbol{\Delta}_{ii} \; \frac{1}{r}\; (\mathbf{I}-\mathbf{G})(i,:) \end{aligned} \]在更新完某一虚时层的辅助场之后,我们转而尝试更新下一层的辅助场,此时将得到新虚时位置的格林函数,从格林函数的定义我们知道:
\[ \mathbf{G}(\tau+\Delta \tau, \tau+\Delta \tau)=\mathbf{B}(\tau+\Delta \tau, \tau) \mathbf{G}(\tau, \tau) \mathbf{B}^{-1}(\tau+\Delta \tau, \tau) \]类似的,我们有:
\[ \mathbf{G}(\tau-\Delta \tau, \tau-\Delta \tau)=\mathbf{B}^{-1}(\tau, \tau-\Delta \tau) \mathbf{G}(\tau, \tau) \mathbf{B}(\tau, \tau -\Delta \tau) \]我们实际计算中,经常从第1层到第 \(L_\tau\) 层的辅助场逐层逐个尝试更新,在每一层更新的时候,计算该层的格林函数 \(G^{\uparrow / \downarrow}(\tau,\tau)\) 和相应的更新的权重 \(r^{\uparrow} r^{\downarrow}\) 。然后在将要进行下一层更新的时候,用传递的方式得到下一层的格林函数 \(\mathbf{G}(\tau+\Delta \tau, \tau+\Delta \tau)\) ,即我们只需知道该虚时层所对应的格林函数,而非时刻知道所有的等时格林函数的值。在进行了从第1层到第 \(L_\tau\) 层的sweep之后,我们从第 \(L_\tau\) 层到第1层再反过来一遍,中间的行为是类似的。