0
Hiya,Ive編寫了一個代碼,它使用'粗'蒙特卡洛採樣技術成功近似一維,二維和三維積分。 我現在想通過使用「重要性抽樣」來改善這一點,因爲顯然這可以減少差異。我已閱讀了一些關於此的網頁,但沒有一個看起來特別清楚。我將如何實現這樣的事情?非常感謝。傑克蒙特卡羅方法中的重要性採樣(單位:C)
Hiya,Ive編寫了一個代碼,它使用'粗'蒙特卡洛採樣技術成功近似一維,二維和三維積分。 我現在想通過使用「重要性抽樣」來改善這一點,因爲顯然這可以減少差異。我已閱讀了一些關於此的網頁,但沒有一個看起來特別清楚。我將如何實現這樣的事情?非常感謝。傑克蒙特卡羅方法中的重要性採樣(單位:C)
對,我發現我的錯誤。我沒有使用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是我的概率密度函數,反是逆一體的PDF。平均值和平均值2分別表示。
我不敢說通常唯一的方法就是理解數學。有時候,你可以用一個類似的已經工作的例子來類比一個特定的案例,但是這樣做有一定的風險。我從來沒有對自己的重要性抽樣打擾,但掃描維基百科文章表明,它的基本抽樣定理並不複雜得多。 – dmckee 2010-09-24 17:37:17
C語言中的代碼使用「原始」蒙特卡洛採樣技術近似爲一維,二維和三維積分可用作開源? 我需要做一些類似的事情,包括在我正在開發的應用程序中。 在此先感謝 – 2011-03-17 11:14:38