
where
注意这里将采样 $X_{i,j}$ 换成了随机变量x,这使得
\[\sum_j^{n_i} ω_i(x) f(x) = n_i \ ω_i(x) f(x)\]因此上式可化简为:
\[E[F] = \int_\Omega \sum_i^n {1 \over n_i} n_i \ ω_i(x) f(x) dμ(x) = \int_\Omega \sum_i^n ω_i(x) f(x) dμ(x) = \int_\Omega f(x) dμ(x)\]因此F可用于估算 $\int_\Omega f(x) dμ(x)$。注意 $F$ 估算的是整个积分,不是被积函数 $f(x)$。
权重是常量: $\omega_i(x)=c_i$,
且满足:$\omega_1 + \omega_2 + \omega_3 = 1$,且 $n_i$ = 1。
这种情况,$F$ 是3个采样的加权平均。
代入 $F$:
\[\hat{F} =\sum_i^n {1 \over n_i} \sum_j^{n_i} {n_i p_i(X_{i,j}) \over \sum_k^n n_k p_k(x)} {f(X_{i,j}) \over p_i(X_{i,j})} =\sum_i^n \sum_j^{n_i} {f(X_{i,j}) \over \sum_k^n n_k p_k(X_{i,j})} ={1 \over \sum_k^n n_k} \sum_i^n \sum_j^{n_i} {f(X_{i,j}) \over {\sum_k^n n_k p_k(X_{i,j}) \over \sum_k^n n_k }}\]记:
\[N=\sum_k^n n_k\] \[c_k = {n_k \over \sum_k^n n_k} ={n_k \over N}\]则:
\[\hat{F}={1 \over N} \sum_i^n \sum_j^{n_i} {f(X_{i,j}) \over \sum_k^n c_k p_k(X_{i,j})}\]若记:
\[\hat{p}=\sum_k^n c_k p_k(X_{i,j}) = {\sum_k^n n_k p_k(X_{i,j}) \over \sum_k^n n_k}\]则上式即表示为标准 Monte Carlo Estimator 的形式:
\[\hat{F}={1\over N} \sum_i^n \sum_j^{n_i} {f(X_{i,j}) \over \hat{p}(X_{i,j})}\]上式也是最终用于计算的公式。仍然进行N次采样,但每次采样的pdf,需要根据对多个pdf进行加权平均。
# Calculate N
for k in range(n):
N += n_k
F = 0.0
for i in range(n):
for j in range(n_i):
X = Sample(i, j)
# Calculate p
p = 0.0
for k in range(n):
p += (n_k / N) * p_k(X)
# Calc function
f = func(X)
# Accumulate sample
F += f / p
F /= N