蒙特卡洛积分法在带边界约束的多元函数积分中的分层采样法
题目描述
计算定义在矩形区域 \(\Omega = [0,1]^2\) 上的多元函数积分:
\[I = \int_0^1 \int_0^1 f(x, y) \, dx \, dy, \]
其中函数 \(f(x, y) = e^{-(x^2 + y^2)}\) 在原点附近有峰值特性。要求使用蒙特卡洛积分法,并采用分层采样技术提高计算效率。
解题过程
-
问题分析
被积函数 \(f(x, y)\) 在原点附近变化剧烈(峰值),而远离原点时平缓。直接均匀采样会导致样本在峰值区域覆盖不足,估计误差较大。分层采样通过将区域划分为多个子区域,并在每个子区域独立采样,确保样本分布更均匀。 -
分层采样原理
- 将积分区域 \(\Omega\) 划分为 \(K\) 个互不重叠的子区域 \(\Omega_k\)(例如均匀网格),满足 \(\bigcup_{k=1}^K \Omega_k = \Omega\)。
- 在每个子区域 \(\Omega_k\) 内随机抽取 \(N_k\) 个样本点,总样本数 \(N = \sum_{k=1}^K N_k\)。
- 子区域的积分估计为:
\[ I_k \approx \frac{V(\Omega_k)}{N_k} \sum_{i=1}^{N_k} f(\mathbf{x}_i^{(k)}), \]
其中 $ V(\Omega_k) $ 是子区域体积,$ \mathbf{x}_i^{(k)} $ 为第 $ k $ 个子区域的样本点。
- 总积分估计为各子区域估计之和:
\[ I \approx \sum_{k=1}^K I_k. \]
-
分层策略设计
- 区域划分:将 \([0,1]^2\) 均匀划分为 \(m \times m\) 的网格,共 \(K = m^2\) 个子区域,每个子区域为 \([\frac{i-1}{m}, \frac{i}{m}] \times [\frac{j-1}{m}, \frac{j}{m}]\),体积 \(V(\Omega_k) = \frac{1}{m^2}\)。
- 样本分配:采用比例分配,即每个子区域样本数 \(N_k = \frac{N}{K}\)(假设 \(N\) 能被 \(K\) 整除)。
-
抽样与计算步骤
- 步骤1:生成每个子区域的随机样本。
对每个子区域 \(\Omega_k\),生成 \(N_k\) 个均匀分布点:
- 步骤1:生成每个子区域的随机样本。
\[ \mathbf{x}_{ij} = \left( \frac{i-1 + U_{ij}^{(1)}}{m}, \frac{j-1 + U_{ij}^{(2)}}{m} \right), \]
其中 $ U_{ij}^{(1)}, U_{ij}^{(2)} \sim U(0,1) $ 为独立均匀随机数。
- 步骤2:计算每个子区域的积分估计。
对子区域 \(\Omega_k\)(对应索引 \((i,j)\)):
\[ I_{ij} = \frac{1}{m^2 N_k} \sum_{p=1}^{N_k} f(\mathbf{x}_{ij}^{(p)}). \]
- 步骤3:合并子区域结果。
总积分估计为:
\[ I \approx \sum_{i=1}^m \sum_{j=1}^m I_{ij}. \]
- 误差分析
- 分层采样的方差为各子区域方差之和:
\[ \text{Var}(I) = \sum_{k=1}^K \frac{V(\Omega_k)^2}{N_k} \sigma_k^2, \]
其中 $ \sigma_k^2 $ 是 $ f $ 在 $ \Omega_k $ 内的方差。
- 通过细化网格(增大 \(m\))或在高方差区域分配更多样本,可降低总体方差。
- 实例计算
设 \(m=4\)(16个子区域),总样本数 \(N=1600\)(每区域 \(N_k=100\))。- 生成样本点并计算各子区域的 \(I_{ij}\)。
- 累加得 \(I \approx 0.5575\)(对比精确值 \(\approx 0.5573\)),误差显著小于直接均匀采样。
总结
分层采样通过区域划分和独立抽样,减少了峰值函数积分的方差,特别适用于多元函数在边界约束下的积分问题。