跳至内容

局域更新

在蒙特卡洛模拟中,系统状态通常通过局域更新进行采样,即根据单个格点的局域环境,每次更新一个格点的构型。我们将以伊辛模型为例,说明如何实现状态的采样。

伊辛模型的哈密顿量为:

H=−J∑⟨i,j⟩sizsjz−h∑isiz, \mathcal{H} = -J \sum_{\langle i,j \rangle} s_i^z s_j^z - h \sum_i s_i^z,

其中:

  • JJ 是相邻自旋之间的相互作用强度,
  • ⟨i,j⟩\langle i,j \rangle 表示对最近邻对求和,
  • siz=±1s_i^z=\pm 1 是格点 ii 上的自旋,
  • hh 是外磁场。

蒙特卡洛模拟的步骤

1. 初始化系统

  • 从一个自旋晶格开始(例如尺寸为 L×LL \times L 的二维正方晶格)。
  • 随机初始化自旋(例如以相等概率取 siz=±1s_i^z = \pm 1),或初始化为某个特定构型(例如所有自旋向上)。

2. 执行局域更新

局域更新可以采用 Metropolis-Hastings 算法或热浴算法。

Metropolis-Hastings 局域更新

对每个自旋 sizs_i^z:

  1. 提议翻转:将自旋 sizs_i^z 翻转为相反的值,siz→−sizs_i^z \to -s_i^z。
  2. 计算能量变化:计算所提议的翻转引起的能量变化 ΔE\Delta E。对于伊辛模型,能量变化只依赖于自旋 sizs_i^z 及其最近邻: ΔE=2Jsiz∑j∈neighbors(i)sjz+2hsiz. \Delta E = 2 J s_i^z \sum_{j \in \text{neighbors}(i)} s_j^z + 2 h s_i^z. 这里的求和遍历自旋 sizs_i^z 的最近邻。
  3. 接受或拒绝翻转: Paccept=min(1,e−βΔE), P_{\text{accept}} = \text{min}(1, e^{-\beta \Delta E}), 其中 β=1/(kBT)\beta = 1/(k_B T) 为逆温度。这意味着
    • 若 ΔE≤0\Delta E \leq 0,总是接受该翻转。
    • 若 ΔE>0\Delta E > 0,以概率 e−βΔEe^{-\beta \Delta E} 接受该翻转。
    • 若翻转被拒绝,则保持自旋不变。

热浴局域更新

另外,也可以使用热浴算法进行局域更新。对每个自旋 sizs_i^z:

  1. 计算局域场:作用在自旋 sizs_i^z 上的局域场为: hi=−J∑j∈neighbors(i)sjz−h. h_i = -J \sum_{j \in \text{neighbors}(i)} s_j^z - h.
  2. 采样新的自旋状态:自旋 sizs_i^z 以如下概率更新为 +1+1 或 −1-1: P−1→+1=e−βhie−βhi+eβhi, P_{ -1 \to +1} = \frac{e^{-\beta h_i}}{e^{-\beta h_i} + e^{\beta h_i}}, P+1→−1=eβhie−βhi+eβhi. P_{ +1 \to -1} = \frac{e^{\beta h_i}}{e^{-\beta h_i} + e^{\beta h_i}}. 这些概率保证了在给定局域环境下,自旋是从其平衡分布中采样得到的。

3. 重复多次扫描

  • 一次扫描指对晶格中的每个自旋都尝试更新一次。
  • 将局域更新过程重复多次扫描,使系统达到平衡并收集统计数据。