蒙特卡罗方法的重要抽样(C)

时间:2010-09-24 16:14:56

标签: c integration montecarlo

Hiya,我编写了一个代码,该代码使用“原始”Monte-Carlo采样技术成功地逼近了一维,二维和三维积分。 我现在想通过使用“重要性抽样”来改进这一点,因为显然这可以减少差异。我已经阅读了一些关于此的网页,但似乎没有一个特别清楚。我该如何实现这样的东西?非常感谢。千斤顶

1 个答案:

答案 0 :(得分:0)

是的,我发现了自己的错误。我没有使用PDF的逆积分来计算每个点的“权重”。对于任何感兴趣的人,我的条件循环读取如下:

for (i = 0; i <= N; i++) {
    X = (double) rand() / (double) RAND_MAX;
   integrand = function(inverse(X)) / PDF(inverse(X));
   sum = sum + integrand;
   sum2 = sum2 + (integrand * integrand);
}
average = sum / N;
average2 = sum2 / N;

当PDF是我的概率密度函数时,inverse是PDF的逆积分。平均值和平均值分别代表和。