一、什么是蒙特卡罗方法?
1.1 定义
蒙特卡罗方法(Monte Carlo Methods)是一类基于随机抽样的计算方法,用于解决数学、物理、工程和人工智能等领域中的复杂问题。其核心思想是通过大量随机实验(或模拟)来近似问题的解,特别适用于解析求解困难或高维复杂的问题。
1.2 名字的来源
蒙特卡罗方法得名于摩纳哥的蒙特卡罗赌场,因为赌场中的赌博游戏(如轮盘赌)依赖随机性,而蒙特卡罗方法正是利用随机性来解决问题。1940年代,物理学家斯坦尼斯拉夫·乌拉姆(Stanislaw Ulam)和约翰·冯·诺伊曼(John von Neumann)在研究核武器时首次系统化提出了这一方法。
1.3 核心思想
蒙特卡罗方法的核心是用随机抽样来估计或逼近真实值。其哲学是:单个随机实验的结果可能不可靠,但通过大量重复实验,统计结果会趋向真实解。这类似于抛硬币:单次抛掷结果随机,但抛掷1000次后,正面和反面的比例会接近50%。
1.4 应用场景
蒙特卡罗方法在人工智能、物理、工程、统计等领域有广泛应用。以下是一些典型场景:
- 数值积分:计算复杂函数的积分(尤其是高维积分)。
- 优化问题:在复杂搜索空间中寻找最优解。
- 概率建模:估计概率分布或期望值。
- 人工智能:在强化学习中用于策略评估和决策(如蒙特卡罗树搜索)。
- 金融:期权定价、风险评估。
- 物理:模拟粒子运动、热力学系统。
二、蒙特卡罗方法的基本原理
为了帮助你彻底理解蒙特卡罗方法,我们从最简单的例子开始,逐步深入。
2.1 一个简单的例子:估算π值
假设我们要计算圆周率π的值,但不想使用解析方法(比如几何公式)。我们可以用蒙特卡罗方法通过随机抽样来估算。
问题描述:
- 考虑一个单位正方形(边长为2,面积为4),中心在原点(0,0)。
- 在正方形内画一个单位圆(半径为1,面积为π)。
- 圆的面积与正方形面积的比值为:
圆的面积正方形的面积=π⋅122⋅2=π4\frac{\text{圆的面积}}{\text{正方形的面积}} = \frac{\pi \cdot 1^2}{2 \cdot 2} = \frac{\pi}{4}正方形的面积圆的面积=2⋅2π⋅12=4π - 如果我们在正方形中随机撒点(均匀分布),落入圆内的点的比例应接近π4\frac{\pi}{4}4π。
蒙特卡罗方法步骤:
- 随机抽样:
- 在正方形区域[−1,1]×[−1,1][-1, 1] \times [-1, 1][−1,1]×[−1,1]内随机生成NNN个点(xi,yi)(x_i, y_i)(xi,yi),其中xi,yi∼Uniform(−1,1)x_i, y_i \sim \text{Uniform}(-1, 1)xi,yi∼Uniform(−1,1)。
- 判断每个点是否在单位圆内:如果xi2+yi2≤1x_i^2 + y_i^2 \leq 1xi2+yi2≤1,则该点在圆内。
- 统计比例:
- 计算落入圆内的点数(记为MMM)。
- 圆内点的比例近似为MN≈π4\frac{M}{N} \approx \frac{\pi}{4}NM≈4π。
- 估计π:
- 因此,π≈4⋅MN\pi \approx 4 \cdot \frac{M}{N}π≈4⋅NM。
Python代码实现:
import numpy as np
import matplotlib.pyplot as plt
# 设置随机种子以保证可重复性
np.random.seed(42)
# 随机生成N个点
N = 100000
x = np.random.uniform(-1, 1, N)
y = np.random.uniform(-1, 1, N)
# 判断点是否在单位圆内
inside_circle = (x**2 + y**2) <= 1
M = np.sum(inside_circle)
# 估计π
pi_estimate = 4 * M / N
print(f"Estimated π: {
pi_estimate}")
# 可视化
plt.figure(figsize=(6, 6))
plt.scatter(x[inside_circle], y[inside_circle], c='blue', s=1<

最低0.47元/天 解锁文章
2098

被折叠的 条评论
为什么被折叠?



