蒙特卡洛方法初步
目录
1. 蒙特卡洛方法概述
📖 核心思想
通过统计采样(随机抽样)解决传统方法难以处理的数学/物理问题——积分、优化、多自由度系统模拟等。
🕰 历史起源
| 时间 | 人物 | 贡献 |
|---|---|---|
| 1946 | Ulam, von Neumann, Metropolis | 曼哈顿计划中发明,分析中子输运 |
| 后 | 各领域 | 统计物理、分子模拟、量子多体、粒子物理… |
💡 物理直觉
中子与原子核作用受量子力学制约——只能知道发生概率,无法精确获得位置、速度、方向。用随机抽样模拟大量中子的统计行为,就能推知宏观传输性质。大量随机→确定结论。
🔄 方法流程
产生随机数 → 按概率分布采样 → 模拟/计算 → 统计平均 → 结果
2. 概率统计基础
2.1 概率密度函数(PDF)
| 概念 | 记号 | 说人话 |
|---|---|---|
| 概率密度函数 | 随机变量取某值的"相对可能性" | |
| 累积分布函数 | 从 积分到 的累计概率 | |
| 期望值 | 按概率加权平均 | |
| 阶中心矩 | 描述分布形状(2阶=方差) |
💡 数值例子
某物理量 服从 (归一化):
2.2 中心极限定理 ⭐
不管原分布 长什么样,$m$ 个独立样本的均值 的分布 → 正态分布。
- :原分布的均值
- :均值的方差 → 样本越多,精度越高
💡 说人话
你测量某个物理量 100 次求平均,这个"平均值"的误差是单次测量误差的 。样本量翻 4 倍,精度翻 2 倍。
3. 随机数生成
3.1 伪随机数要求
| 要求 | 说明 |
|---|---|
| 均匀性 | 在 上均匀分布 |
| 去关联 | 相邻随机数之间相关性可忽略 |
| 长周期 | 重复之前能产生的序列尽可能长 |
| 速度快 | 算法效率高 |
💡 实践建议:使用系统自带随机数生成器(如 numpy.random),不自己造轮子。
3.2 高斯分布采样:Box-Muller 法
把两个在 (0,1)上 独立均匀分布的随机数 (u1, u2),通过极坐标变换,变成两个独立的标准正态分布随机数!
因为电脑自带的随机数生成器/编程中,只能生成均匀分布的随机数,每个数字出现的概率一样大。但我们这里Guass想要得到的是标准正态分布的随机数,假设为 X和Y,有已知的pdf公式。
假设我们要同时生成两个独立的正态分布随机数 和 。 把它们的概率公式乘起来,看看它们作为一个整体(在二维平面上的一个点 )的概率是多少:
有平方和,自然想到极坐标来表示可能会简化这个事情
二维分布被拆解成了两个完全独立的部分 可以尝试用 两个独立的均匀分布随机数 u1,u2 来生成它们
选择用 “逆变换采样法” 生成 和 r
逆变换采样法的原理:如果知道一个随机变量的累积分布函数 CDF为 F(x),那么令 (其中 是 的均匀分布随机数),反解出 ,就能得到符合该分布的随机数。
就是说:假设你要生成的随机变量为 X,其CDF为 F(x) (严格单调递增)
逆变换法说:令 U = F(x),那么 U 一定服从 (0, 1)上的均匀分布!
proof:
对于任意 ,看 U 的累积分布函数:
因为 F 是单调递增函数,不等式 两边同时作用反函数 ,等价于:
根据分布函数 F的定义,
结论出来了:
P(U≤u)=u
这正是 (0,1)均匀分布的累积分布函数!
既然 U=F(X) 服从均匀分布,那么反过来: 如果我从均匀分布中取一个随机数 u,令 ,那么 x的分布函数一定就是 F(x)。
因为:
第一部分:角度 在 到 (即 360 度)之间是完全均匀分布的。 那怎么用均匀随机数 来生成角度呢?很简单,直接按比例放大:
它的概率密度是 。 求累积分布函数(CDF):
令 :
第二部分:距离中心的半径 点落在距离圆心为 的圆环上的概率,经过微积分推导,满足一个叫做“指数分布”的规律。 数学上有一个很成熟的方法(叫做逆变换采样),把均匀随机数 变成指数分布。
它的概率密度是 。 求累积分布函数(CDF):
为了积这个分,我们令 ,那么 :
令 等于一个均匀随机数。这里有个小技巧:如果 在 上均匀分布,那么 同样在 上均匀分布。为了方便,我们直接令 (相当于令 ):
两边取自然对数:
现在我们已经用 和 求出了 和 ,最后一步就是用极坐标定义把它塞回最初的 和 里:
推导完成。通过这套严密的微积分坐标变换和积分反解,我们证明了只要输入两个均匀分布的 和 ,输出的 和 就必定是严格独立的标准正态分布。
import numpy as np
def box_muller(n):
"""产生 n 个标准正态分布随机数"""
u1 = np.random.uniform(0, 1, n)
u2 = np.random.uniform(0, 1, n)
r = np.sqrt(-2 * np.log(u1))
theta = 2 * np.pi * u2
return r * np.cos(theta) # 另一组为 r * np.sin(theta)
💡 直观验证
对生成的 个随机数:均值 ≈ 0,标准差 ≈ 1。画直方图应呈钟形曲线。
4. 蒙特卡洛积分
核心:把积分写成期望值,再用随机样本平均来估计期望值!!!
4.1 空间随机投点法(打靶法)
计算 ,用矩形区域包住函数曲线,然后"撒点"。
假设有 f(x) 是正定的,且大于0的同时有最大值 fmax
其积分就是 曲线下方的面积!!!
用矩阵包住曲线,于是有
在矩形中随机撒点:
如果:
说明点落在曲线下方。
设总点数 ,落在曲线下方点数 ,则:
所以:
因此:
此估计是无偏估计!!!
┌─────────────────────┐
│ ○ × ○ │ f_max ↑
│ ○ × × ○ × │
│○ × × ○ × × ○ │ f(x) 曲线
│ × × × ○ × × │
│○ × × ○ × × ○ │
└─────────────────────┘
a b
缺点在于 如果f(x) 大部分区域很小,而 fmax很大,那么会造成随机撒的点中,很多点都浪费了,虽然这个方法很直观,但是效率通常是不如期望值法!
4.2 期望值法 ⭐
方差估计
定义:
估计量:
假设样本独立同分布,则:
其中:
所以:
其中:
误差:
蒙特卡洛误差的核心结论:
误差 与 N的平方根 成反比!!!
🔢 MC 算 π 例子
import numpy as np
N = 100000
x = np.random.uniform(-1, 1, N)
y = np.random.uniform(-1, 1, N)
inside = (x**2 + y**2 <= 1).sum()
pi_est = 4 * inside / N
sigma = np.sqrt(pi_est * (4 - pi_est) / N) # 二项式方差
print(f"π ≈ {pi_est:.5f} ± {sigma:.5f}")
# 典型输出: π ≈ 3.14159 ± 0.00518
4.3 多维积分
MC 积分的精度与维度无关——这是最大的优势!
考虑 维积分:
若区域体积是:
均匀采样:
则:
估计:
方差:
关键是:
这个 不显式依赖维度 。
| 定积分方法 | 误差 vs 维度 |
|---|---|
| 梯形法/辛普森法 | 误差 ∝ ($d$=维度,指数衰减!) |
| 蒙特卡洛法 | 误差 ∝ (与 无关) |
💡 说人话
算 100 维积分时,网格法需要天文数字的网格点,因为维度d越大,收敛越慢。
MC 只需要足够多样本——维度灾难的克星。
5. 重要性采样(Importance Sampling)
5.1 动机
均匀采样低效——被积函数 在大部分区域接近零时,大量采样点"浪费"了。
在大的地方 多采样 , 在小的地方 少采样!!!
5.2 原理
引入与 形状相似的采样函数 ,要求$F(x)$ 在 的地方不能为0:
离散形式 :
估计量 p就是上文中的F:
那么:
方差:
其中:
而:
因此:
这个公式告诉我们:
如果 在 大的地方也大,那么 不会太大,方差就小。
最优重要性分布
如果 ,理论最优选择是:
因为此时:
每个样本都给出同样结果,方差为 0。
但问题是:
需要知道 ,而 正是我们要求的。
所以实际中选择一个和 形状相似、但容易采样的 。
💡 说人话
把"平均撒点"改成"在 大的地方多撒、小的地方少撒"——花同样的计算量,精度更高。
🔢 数值示例
求 ,已知 5 个 随机数:0.033, 0.45, 0.51, 0.83, 0.95。
方法一:均匀采样
| 0.033 | 0.099 | 0.009 |
| 0.450 | 1.350 | 0.472 |
| 0.510 | 1.530 | 0.508 |
| 0.830 | 2.490 | 0.514 |
| 0.950 | 2.850 | 0.470 |
可以看出 这个值本身接近精确值,但是 误差估计很大 因为样本量太少了!
方法二:重要性采样 选取
因为被积分函数有类似 e的负x的形式 分布, 所以自然的 为重要性采样选取
现在:
所以估计量变成:
其中:
这比直接算 波动小很多。
如何从 抽样?
CDF:
令:
即:
于是:
取负对数:
这才是标准的反函数采样公式, u是[0,1]的 均匀随机分布!
📊 对比
| 方法 | 估值 | 方差 | 精度 | |
|---|---|---|---|---|
| 均匀采样 | 5 | 1.184 | 0.506 | 低 |
| 重要性采样 | 5 | ≈ 1.155 | 远小于均匀 | 高 |
6. 随机行走与马尔可夫链
6.1 一维随机行走
每一步以概率 向右、$L$ 向左,步长 , R + L = 1
- 第 步的随机变量:$\xi_k = \begin{cases} +l & \text{概率 } R \ -l & \text{概率 } L \end{cases}$
- 步后位置:$Xn = \sum{k=1}^{n} \xi_k$
特殊的, 如果 R = L = 0.5
标准差:
这就是随机行走的典型结论:
位移平均可能为 0,但扩散宽度随 增长。
💡 物理直觉
设每步时间为:
则:
无偏随机行走方差:
写成时间:
扩散方程中一维均方位移:
比较:
所以:
这就是扩散系数。
如果有偏随机行走,还会出现漂移速度:
大量粒子独立随机行走 → 粒子分布演化为扩散方程: $$\frac{\partial P(x,t)}{\partial t} = D\frac{\partial^2 P(x,t)}{\partial x^2}$$
其中扩散系数 ,$\tau$ 为每步时间。
6.2 马尔可夫过程
定义:下一步只取决于当前状态,与历史无关。行走路径 = 马尔可夫链。
马尔可夫过程的定义:
意思是:
下一步只依赖当前状态,不依赖过去历史。
随机行走就是典型马尔可夫链。
转移概率矩阵
设状态概率向量: $$ \mathbf w(t)= \begin{pmatrix} w1(t)\ w2(t)\ w3(t)\ w4(t) \end{pmatrix} $$ 其中: $$ wi(t)=P(\text{系统在状态 }i) $$ 转移矩阵 定义为: $$ W{ij}=P(j\to i) $$ 注意你的讲义采用的是:
第 列表示从状态 出发,转移到各状态的概率。
因此每列之和为 1: $$ \sumi W{ij}=1 $$
- :从状态 转移到状态 的概率
- 每列之和 = 1(归一化)
时间演化(矩阵形式)
🔢 数值例子
4 状态系统,$L=R=0.5$,初始 :
t=0: [1.000, 0.000, 0.000, 0.000]
t=1: [0.500, 0.500, 0.000, 0.000]
t=2: [0.500, 0.250, 0.250, 0.000]
t=3: [0.500, 0.125, 0.250, 0.125]
...
平衡: (4/15, 8/15, 1/5) ≈ (0.267, 0.533, 0.200) (3态例)
💡 自然结论
如果经过很久后分布不再变化:
这说明 是 的本征矢量,对应本征值:
所以:
这就是平衡分布。
Perron-Frobenius 定理告诉我们,在合适条件下:
- 转移矩阵非负;
- 马尔可夫链不可约;
- 非周期;
则长期分布会收敛到唯一平衡分布。
马尔可夫链演化到最后,分布 收敛到转移矩阵 的最大本征值对应的本征矢量(Perron-Frobenius 定理)。
7. Metropolis 算法与 MCMC
7.1 平衡态与细致平衡
目标:从 Boltzmann 分布 采样。
我们想从某个复杂分布采样:
在统计物理中最常见的是 Boltzmann 分布:
其中:
是配分函数。
问题:
很难算,但 Metropolis 只需要概率比值。
因为:
配分函数 抵消了。
系统趋于平衡态的条件——细致平衡(Detailed Balance): $$ W{i\to j}, pi = W{j\to i}, pj $$
意思是:$i \to j$ 的流量 = 的流量 → 分布不再变化。
总流入状态 的概率:
如果细致平衡成立:
所以:
从状态 出发到所有状态的概率和为 1:
所以:
因此分布稳定。
💡 说人话
好比教室里的座位:有人从 A 换到 B,有人从 B 换到 C ……当每个方向的人流相等时,座位分布稳定了。这就是"热平衡"的统计图像。
7.2 Metropolis 算法 ⭐(20世纪十大算法之一)
转移概率可以写成:
其中:
- :提议概率;
- :接受概率。
标准 Metropolis 假设提议对称:
细致平衡要求:
提议概率抵消:
所以:
Metropolis 选择,在上述中选择接受概率最大的那个,因为接受概率越大,链的“惰性”越小,随机游走探索的越快,收敛效率最高!概率的上线又是1,所以就把一个方向的概率顶到天花板1!
这就是在满足物理约束下,最高效的走法!并不是“随便取的”,而是最优解
对于 Boltzmann 分布:
所以:
如果:
说明新状态能量更低。
那么:
所以:
总是接受。
如果:
说明能量升高。
那么:
以一定概率接受。
温度越高,$\beta=1/k_BT$ 越小,接受升能态概率越大。
算法:Metropolis 采样
1. 从当前构型 i,试探一个新构型 j(对称提议 T(i→j) = T(j→i))
2. 计算能量差 ΔE = Ej - Ei
3. 接受概率:
A(i→j) = min(1, e^{-β·ΔE})
即:
- 若 ΔE ≤ 0(能量降低)→ 总是接受
- 若 ΔE > 0(能量升高)→ 以概率 e^{-β·ΔE} 接受
4. 生成 [0,1] 均匀随机数 r:
- 若 r ≤ e^{-β·ΔE} → 接受
- 否则 → 拒绝,保留旧构型
5. 回到步骤 1
取 min:是因为我们要让算法跑得最快(接受率最大化),同时必须遵守详细平衡。
接受升能态:是为了让链能翻越势垒,不困在局部最优,从而获得正确的物理分布。
消掉 Z:是让这个算法在超大规模组合空间中变得可行(这是它横扫各个学科的根本原因)。
🔢 数值例子
设 ,当前能量 ,试探态 :
- 接受概率 这个是接受去到新的试探态的概率上界 因为比这个小的代表能量差值会更大
- 生成随机数 → 拒绝($0.5 > 0.368$)
- 生成随机数 → 接受($0.2 \leq 0.368$)
7.3 Metropolis-Hastings 算法
推广到非对称提议分布:
- :提议从 产生 的概率
- 当 对称时,退化为标准 Metropolis
7.4 MCMC 积分
一次完整的 MCMC 期望值估计大概是这样展开的:先随便选一个初始构型 ,用 Metropolis(或其他满足细致平衡的规则)反复更新,产生 ;观察能量等量随步数的曲线 , 找到大致的热化拐点,将拐点之前的 步全部丢弃;对剩下的样本 ,计算感兴趣物理量的自相关函数 ,从中拟合出 ;用剩余样本算出 作为最佳估计,并用 给出这个估计值的误差范围;如果发现 太大(比如在相变点附近,系统会出现"临界慢化",关联时间急剧变长),说明要么增加总步数 ,要么换用效率更高的算法(比如针对伊辛模型专门设计的 cluster algorithm,它能大幅缩短关联时间)。
MCMC 估计期望值
如果马尔可夫链收敛到目标分布 ,那么样本: $$ x1,x2,\dots,xN $$ 虽然不是独立的,但长时间平均仍然可以估计: $$ \langle A\ranglep=\int A(x)p(x)dx $$ 即: $$ \boxed{ \langle A\rangle \approx \frac1N\sum{i=1}^N A(xi) } $$
MCMC 的两个重要问题
1. Burn-in 平衡段
一开始链还没到平衡分布,需要扔掉前面一段: $$ n_{\text{equil}} $$ 这叫 thermalization 或 burn-in。
2. 样本相关性
MCMC 样本不是独立的。
如果当前状态是 ,下一个状态 通常和它很像。
所以有效样本数小于总样本数。
误差估计应考虑自相关时间: $$ N{\text{eff}}\approx \frac{N}{2\tau{\text{int}}} $$ 误差大约: $$ \sigma{\bar A} \approx \sqrt{ \frac{\operatorname{Var}(A)}{N{\text{eff}}} } $$
# 伪代码:MCMC 积分框架
def mcmc_integral(target_pdf, proposal, n_equil, n_samples):
"""
target_pdf: 目标分布 p(x)
proposal: 提议函数,给定 x 产生 x'
n_equil: 平衡步数(扔掉)
n_samples: 有效采样步数
"""
x = initial_state()
samples = []
for t in range(n_equil + n_samples):
x_new = proposal(x)
# Metropolis 接受/拒绝
A = min(1, target_pdf(x_new) / target_pdf(x) * proposal_ratio)
if np.random.uniform() < A:
x = x_new
if t >= n_equil:
samples.append(x)
return np.mean(samples), np.std(samples) / np.sqrt(n_samples)
📊 三类采样方法对比
| 特性 | 直接采样 | 传统MC积分 | MCMC |
|---|---|---|---|
| 采样点是否独立 | ✅ 独立 | ✅ 独立 | ❌ 关联 |
| 能处理的分布 | 简单分布 | 均匀/简单加权 | 几乎任意分布 |
| 关键需求 | 已知采样算法 | 计算 | 知道分布比例 |
| 收敛速度 | 快 | 中等 | 慢(需平衡+关联) |
💡 物理直觉
MCMC 的核心矛盾:牺牲"样本独立"换取"能处理任意分布"。就像你没法直接生成复杂波函数,但可以让体系按 Boltzmann 概率自己"游走"到各个态。
8. 二维 Ising 模型
8.1 模型定义
↑ ↑
↓ ↑ ↓ ← 自旋 σ_i = ±1
↑ ↓ ↑
↑
L × L 格点,总自旋数 N = L²
能量(最近邻相互作用):
- :铁磁耦合(邻居同向 → 能量低) 同向,贡献 -J ; 反向, 贡献 +J 。 因此同向更低,因此低温下系统倾向于全部向上或全部向下
- 构型总数:$2^N$(指数级!必须 MC) 总自旋数为 L的平方,其中每个自旋有两种取值,所以总构型数为 , 如果 L为20,那么最后 构型数为 天文数字,必须用 Monte Carlo采样!!!
观测量:
| 物理量 | 公式 |
|---|---|
| 磁化强度 | |
| 能量 | |
| 比热 | |
| 磁化率 |
8.2 Metropolis Ising 算法
一次 sweep 通常指尝试更新 次。
算法:
1、初始化自旋:
2、随机选择一个格点 。
3、计算它四个邻居和:
4、计算:
5、接受规则:
- 若 ,接受;
- 若 ,以概率 接受。
6、重复。
为了减少边界效应,常用周期边界: $$ \sigma{i+L,j}=\sigma{i,j} $$ 也就是格子左右相连,上下相连,拓扑上像一个环面。
代码中常用模运算:
Python
up = spins[(i+1) % L, j]
down = spins[(i-1) % L, j]
right = spins[i, (j+1) % L]
left = spins[i, (j-1) % L]
Metropolis MC for 2D Ising Model:
Parameters: L (格点大小), T (温度), β = 1/(k_B T), J (耦合常数)
1. 随机初始化 L×L 格点自旋 σ[i][j] = ±1
2. FOR mc_cycle = 1 to n_cycles:
FOR 每个格点 (随机顺序遍历一次 = 1 sweep):
a. 翻转该自旋,计算能量变化 ΔE
b. 2D Ising 中 ΔE 只有 5 种可能:
ΔE ∈ { -8J, -4J, 0, +4J, +8J }
c. 若 ΔE ≤ 0 → 接受翻转
若 ΔE > 0 → 以 p = e^{-β·ΔE} 接受
ENDFOR
记录 E, M 等观测量
3. 输出 ⟨E⟩, ⟨M⟩, C_V, χ 及其统计误差
💡 为什么 ΔE 只有 5 种值?
Metropolis 算法中,每次尝试翻转一个自旋:
只有与这个自旋相关的能量项会变化。
原来和邻居的相互作用能:
翻转后:
所以:
能量变化:
所以:
二维正方格子每个格点有 4 个邻居。
邻居和可能是:
因此:
所以只可能是:
2D 正方格子中每个自旋有 4 个邻居(上下左右)。翻转一个 :
4 个邻居的和只能是 → (5 种)。
🔢 典型结果
二维 Ising 模型有精确临界温度:
数值:
现象:
- $T:铁磁相,自发磁化;
- :顺磁相,平均磁化为 0;
- :涨落最大,比热和磁化率出现临界行为。
| 物理现象 | 说明 |
|---|---|
| 一维 Ising | 无相变($T_c=0$) |
| 二维 Ising | 二级相变,$Tc \approx 2.269 J/kB$ |
| 低于 | 自发磁化 |
| 高于 | ,顺磁态 |
8.3 KT 相变(2016 诺贝尔物理奖)
二维 XY 模型自旋不是 ,而是角度:
低温下会出现涡旋-反涡旋束缚对。
高温时涡旋对解离。
这就是 Kosterlitz-Thouless 相变。
特点:
- 没有普通意义上的长程磁化;
- 是拓扑缺陷驱动的相变;
- 2016 年诺贝尔物理奖相关。
二维 XY 模型中的 Kosterlitz-Thouless 相变:低温下涡旋-反涡旋成对束缚 → 高温下解耦 → 拓扑相变(无自发磁化,但有超流/超导性质的突变)。
9. 量子蒙特卡洛(QMC)
💡 为什么需要 QMC?
主要用于量子多体问题!!!
量子多体波函数 不是简单概率分布,维度是3N。如果N很大,直接网格法解析求解几乎不可能,所以用Monte Carlo在高维构型空间采样。QMC 是唯一能精确计算大体系的方法。
9.1 变分量子蒙特卡洛(VMC)
能量期望:
假设波函数实数,写成:
定义概率分布:
定义局域能量:
于是:
用 MC 估计:
其中:
框架
- 构造试探波函数 ,含变分参数
- 用 Metropolis 从 采样空间构型
- 对每个样本计算局域能量:
- 求能量期望值:
- 优化 使 最小
💡 说人话
VMC = 聪明的猜谜:猜一个波函数形状,MC 采样→算能量→调参数让能量尽可能低。如果 不随构型变化,说明波函数就是精确的!
为什么局域能量恒定说明是精确本征态?
如果:
正好是 Hamiltonian 的本征态:
那么:
它不依赖 。
所以局域能量方差为零。
这就是 VMC 中常说的:
精确波函数的局域能量没有涨落。
🔢 谐振子 VMC 例子
试探波函数:$\Psi_T(x) = e^{-\alpha x^2/2}$
哈密顿量:$\hat{H} = -\frac{1}{2}\frac{d^2}{dx^2} + \frac{1}{2}x^2$
局域能量: $$ EL(x) = \frac{\hat{H}\PsiT}{\Psi_T} = \frac{\alpha}{2} + \frac{1-\alpha^{2}}{2} x^{2} $$
- 时:$E_L = 1/2$(与 无关!)= 精确解 标准一维谐振子基态能量!
- 对 做 VMC:$\langle E\rangle \to 1$,方差
import numpy as np
def vmc_harmonic_oscillator(alpha, N_mc=100000):
"""VMC for 1D harmonic oscillator"""
# Metropolis 从 |psi|^2 ∝ exp(-alpha*x^2) 采样
x = 0.0
delta = 1.0 / np.sqrt(alpha)
samples = []
for i in range(N_mc):
x_new = x + delta * np.random.uniform(-1, 1)
# 接受率 = |psi(x_new)/psi(x)|^2
ratio = np.exp(-alpha * (x_new**2 - x**2))
if np.random.uniform() < min(1, ratio):
x = x_new
samples.append(x)
# 局域能量
x_arr = np.array(samples[N_mc//2:]) # 扔掉平衡段
e_local = alpha**2 + x_arr**2 * (1 - alpha**4)
return np.mean(e_local), np.std(e_local)/np.sqrt(len(x_arr))
E, err = vmc_harmonic_oscillator(alpha=1.0)
print(f"<E> = {E:.4f} ± {err:.4f}") # 应接近 1.0
9.2 扩散蒙特卡洛(DMC)
DMC 的思想来自虚时间 Schrödinger 方程。
真实时间 Schrödinger 方程:
做虚时间变换:
则方程变成类似:
或者:
设:
则:
这有两部分:
扩散项:
生灭项:
为什么虚时间会投影到基态?
把初始波函数按本征态展开:
其中:
虚时间演化:
如果取 接近基态能量,那么高能态:
会衰减得更快。
当:
只剩基态:
所以 DMC 可以投影出基态。
DMC 的 walker 图像
用一群 walkers 表示波函数分布。
每个 walker 做两件事:
1. 扩散
其中 是高斯随机数。
2. 分支 branching
根据势能决定 walker 生灭。
如果:
该区域权重大,walker 增殖。
如果:
该区域权重小,walker 死亡。
最后 walker 分布趋向基态波函数相关分布。
DMC的难点:费米子符号问题
玻色子基态可以取正,DMC 比较自然。
但费米子波函数反对称,会有正负号:
概率解释困难,正负 walker 会相互抵消,噪声指数增长。
这就是 sign problem。
常用近似是 fixed-node approximation:用试探波函数的节点面固定符号结构。
| 对比 | VMC | DMC |
|---|---|---|
| 原理 | 变分原理 + Metropolis 采样 | 虚时间 Schrödinger 方程演化 |
| 波函数 | 需要好的试探函数 | 可以精确得到基态(给定节点) |
| 实现 | 随机行走在坐标空间 | walkers 的扩散 + 分支过程 |
| 难点 | 试探波函数选择 | 费米子符号问题(Sign Problem) |
💡 DMC 物理直觉
把 Schrödinger 方程的 (虚时间),它就变成了扩散方程 + 势能项。Walkers(采样粒子)像布朗粒子一样扩散,同时在高势能区域"死亡"、低势能区域"增殖"。最终 walker 分布 → 基态波函数。
9.3 路径积分蒙特卡洛(PIMC)
PIMC 用于有限温度量子系统。
目标是计算配分函数:
把:
分成 个小片:
则:
插入 次完备坐标基:
得到路径积分形式。
物理图像:
一个量子粒子在有限温度下等价于一条闭合的虚时间路径。 多粒子系统变成很多“聚合物环”的统计采样。
PIMC 适合:
- 有限温度;
- 玻色体系;
- 超流;
- 量子液体;
- 量子晶体。
但费米子仍有严重 sign problem。
对多个虚时间路径采样,可直接计算配分函数 ,适用于有限温度量子体系。
10. 总结对比表
📊 蒙特卡洛方法族谱
| 方法 | 核心思想 | 适用场景 | 关键技巧 | ||
|---|---|---|---|---|---|
| MC 积分 | 均匀/加权随机采样 | 高维积分、算 π | 投点法、期望值法 | ||
| 重要性采样 | 在函数大值区多采样 | 有尖峰 | 选择好的 | ||
| MCMC | 马尔可夫链趋于平衡分布 | 任意复杂分布 | Metropolis-Hastings | ||
| Metropolis | 能量差决定接受概率 | 统计物理、Boltzmann 分布 | |||
| VMC | $ | \Psi_T | ^2$ 采样 + 变分优化 | 量子多体基态 | 试探波函数是关键 |
| DMC | 虚时间扩散 + 分支 | 精确基态能量 | 克服符号问题 | ||
| PIMC | 虚时间路径积分采样 | 有限温度量子体系 | 配分函数计算 |
🧠 核心要点速记
| 概念 | 一句话 |
|---|---|
| 中心极限定理 | 个样本均值 ~ 正态分布,方差为 |
| MC 积分的优势 | 误差与维度无关(高维积分的王牌) |
| 细致平衡 | — 平衡态的充分条件 |
| Metropolis 接受率 | — 无比简洁 |
| MCMC 核心矛盾 | 牺牲独立性 ↔ 换取任意分布的采样能力 |
| VMC 变分原理 | (永远不低于真实基态能) |
| DMC 符号问题 | 费米子交换 → 负概率 → 计算困难 |
Akuiro 整理补充 2026-07-05