蒙特卡洛积分法在带边界约束的多元函数积分中的分层采样法
题目描述
考虑一个多元函数 \(f(x_1, x_2, \dots, x_d)\) 在 \(d\) 维空间区域 \(\Omega = [0,1]^d\) 上的积分问题:
\[I = \int_{\Omega} f(\mathbf{x}) \, d\mathbf{x}. \]
若直接采用均匀采样的蒙特卡洛方法,方差可能较大。分层采样通过将积分区域划分为若干子区域(层),在各层内独立采样,以降低估计方差。本题目要求详细推导分层采样法的实现步骤,并分析其方差缩减原理。
解题过程
- 问题分析与分层采样思想
- 蒙特卡洛积分的基础公式为:
\[ I \approx Q_{\text{MC}} = \frac{1}{N} \sum_{i=1}^N f(\mathbf{x}_i), \]
其中 $\mathbf{x}_i$ 服从 $\Omega$ 上的均匀分布,估计方差为 $\operatorname{Var}(f)/N$。
- 分层采样的核心思想:将区域 \(\Omega\) 划分为 \(m\) 个互不相交的子区域(层)\(\Omega_1, \Omega_2, \dots, \Omega_m\),满足 \(\bigcup_{j=1}^m \Omega_j = \Omega\),且各层体积 \(V_j = \int_{\Omega_j} d\mathbf{x}\) 已知。在每层 \(\Omega_j\) 内独立进行均匀采样,利用各层积分的线性组合逼近总积分。
- 分层采样公式推导
- 总积分可分解为:
\[ I = \sum_{j=1}^m \int_{\Omega_j} f(\mathbf{x}) \, d\mathbf{x} = \sum_{j=1}^m V_j \cdot \mu_j, \]
其中 $\mu_j = \frac{1}{V_j} \int_{\Omega_j} f(\mathbf{x}) \, d\mathbf{x}$ 是 $f$ 在层 $\Omega_j$ 上的平均值。
- 在各层 \(\Omega_j\) 内生成 \(n_j\) 个均匀采样点 \(\{\mathbf{x}_{j,k}\}_{k=1}^{n_j}\),估计层均值:
\[ \hat{\mu}_j = \frac{1}{n_j} \sum_{k=1}^{n_j} f(\mathbf{x}_{j,k}). \]
- 总积分估计量为:
\[ Q_{\text{strat}} = \sum_{j=1}^m V_j \hat{\mu}_j = \sum_{j=1}^m \frac{V_j}{n_j} \sum_{k=1}^{n_j} f(\mathbf{x}_{j,k}). \]
总采样数 $N = \sum_{j=1}^m n_j$。
- 方差分析
- 由于各层采样独立,估计量方差为:
\[ \operatorname{Var}(Q_{\text{strat}}) = \sum_{j=1}^m V_j^2 \cdot \frac{\sigma_j^2}{n_j}, \]
其中 $\sigma_j^2 = \frac{1}{V_j} \int_{\Omega_j} (f(\mathbf{x}) - \mu_j)^2 \, d\mathbf{x}$ 是 $f$ 在层 $\Omega_j$ 内的方差。
- 对比普通蒙特卡洛的方差 \(\operatorname{Var}(Q_{\text{MC}}) = \sigma^2/N\),分层采样的方差更小当且仅当层内方差 \(\sigma_j^2\) 显著小于全局方差 \(\sigma^2\)。
- 最优采样分配:固定总采样数 \(N\),最小化方差需满足 \(n_j \propto V_j \sigma_j\)。若层内方差未知,常采用按体积比例分配 \(n_j = N V_j\)。
- 具体实现步骤
- 步骤1:将 \(\Omega = [0,1]^d\) 均匀划分为 \(m = m_1 \times m_2 \times \dots \times m_d\) 个超矩形层,每层体积 \(V_j = 1/m\)。
- 步骤2:确定各层采样数 \(n_j\)。简便策略取 \(n_j = N/m\)(每层采样数相等)。
- 步骤3:在各层 \(\Omega_j\) 内生成 \(n_j\) 个均匀随机点,计算层内函数值的均值 \(\hat{\mu}_j\)。
- 步骤4:合并结果:\(Q_{\text{strat}} = \frac{1}{m} \sum_{j=1}^m \hat{\mu}_j\)(因 \(V_j = 1/m\))。
- 步骤5:估计误差可通过层内方差计算:
\[ \widehat{\operatorname{Var}}(Q_{\text{strat}}) = \sum_{j=1}^m \frac{V_j^2}{n_j (n_j - 1)} \sum_{k=1}^{n_j} \left(f(\mathbf{x}_{j,k}) - \hat{\mu}_j\right)^2. \]
- 示例与效果
- 以二维函数 \(f(x,y) = e^{-(x^2 + y^2)}\) 在 \([0,1]^2\) 上积分为例。若划分 \(4\times 4 = 16\) 个层,每层采样 \(100\) 点(总 \(N=1600\)),分层采样的方差通常比普通蒙特卡洛降低一个数量级,尤其当函数在区域内变化剧烈时,分层能避免采样点分布不均的问题。
总结
分层采样法通过细分积分区域并分配采样点,有效降低了蒙特卡洛积分的方差。关键在于合理划分区域,使层内函数值尽可能平滑。该方法适用于多维边界约束明确的积分问题,是方差缩减技术中的重要手段。