局域更新
在蒙特卡洛模拟中,系统状态通常通过局域更新进行采样,即根据单个格点的局域环境,每次更新一个格点的构型。我们将以伊辛模型为例,说明如何实现状态的采样。
伊辛模型的哈密顿量为:
其中:
- 是相邻自旋之间的相互作用强度,
- 表示对最近邻对求和,
- 是格点 上的自旋,
- 是外磁场。
蒙特卡洛模拟的步骤
1. 初始化系统
- 从一个自旋晶格开始(例如尺寸为 的二维正方晶格)。
- 随机初始化自旋(例如以相等概率取 ),或初始化为某个特定构型(例如所有自旋向上)。
2. 执行局域更新
局域更新可以采用 Metropolis-Hastings 算法或热浴算法。
Metropolis-Hastings 局域更新
对每个自旋 :
- 提议翻转:将自旋 翻转为相反的值,。
- 计算能量变化:计算所提议的翻转引起的能量变化 。对于伊辛模型,能量变化只依赖于自旋 及其最近邻: 这里的求和遍历自旋 的最近邻。
- 接受或拒绝翻转:
其中 为逆温度。这意味着
- 若 ,总是接受该翻转。
- 若 ,以概率 接受该翻转。
- 若翻转被拒绝,则保持自旋不变。
热浴局域更新
另外,也可以使用热浴算法进行局域更新。对每个自旋 :
- 计算局域场:作用在自旋 上的局域场为:
- 采样新的自旋状态:自旋 以如下概率更新为 或 : 这些概率保证了在给定局域环境下,自旋是从其平衡分布中采样得到的。
3. 重复多次扫描
- 一次扫描指对晶格中的每个自旋都尝试更新一次。
- 将局域更新过程重复多次扫描,使系统达到平衡并收集统计数据。