こんにちは、私は、「粗い」モンテカルロ サンプリング手法を使用して、1 次元、2 次元、および 3 次元の積分を正常に近似するコードを作成しました。「重要度サンプリング」を使用してこれを改善したいと思います。明らかに分散を減らすことができるからです。これについていくつかの Web ページを読みましたが、特に明確なものはありません。このようなものをどのように実装しますか?どうもありがとう。ジャック
2896 次
1 に答える
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 の逆積分です。average と average2 はそれぞれ と を表します。
于 2010-09-29T11:59:36.830 に答える