2010-09-24 64 views
0

Hiya,Ive編寫了一個代碼,它使用'粗'蒙特卡洛採樣技術成功近似一維,二維和三維積分。 我現在想通過使用「重要性抽樣」來改善這一點,因爲顯然這可以減少差異。我已閱讀了一些關於此的網頁,但沒有一個看起來特別清楚。我將如何實現這樣的事情?非常感謝。傑克蒙特卡羅方法中的重要性採樣(單位:C)

+0

我不敢說通常唯一的方法就是理解數學。有時候,你可以用一個類似的已經工作的例子來類比一個特定的案例,但是這樣做有一定的風險。我從來沒有對自己的重要性抽樣打擾,但掃描維基百科文章表明,它的基本抽樣定理並不複雜得多。 – dmckee 2010-09-24 17:37:17

+0

C語言中的代碼使用「原始」蒙特卡洛採樣技術近似爲一維,二維和三維積分可用作開源? 我需要做一些類似的事情,包括在我正在開發的應用程序中。 在此先感謝 – 2011-03-17 11:14:38

回答

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是我的概率密度函數,反是逆一體的PDF。平均值和平均值2分別表示。