campionamento importanza nel metodo Monte Carlo (in C)
-
05-10-2019 - |
Domanda
Hiya, Ive ha scritto un codice che con successo approssimazione uno, due e tre integrali tridimensionali utilizzando una tecnica di campionamento di Monte-Carlo 'grezzo'. Vorrei ora per migliorare questo utilizzando 'importance sampling', come a quanto pare questo può ridurre la varianza. Ho letto alcune pagine web di questo, ma nessuno sembra particolarmente chiaro. Come faccio a implementare qualcosa di simile? Grazie molto. Jack
Soluzione
A destra, ho trovato il mio errore. Non stavo usando l'integrale inverso del PDF per calcolare il 'peso' di ogni punto. Per interessato il mio ciclo condizionale chiunque whos leggere come:
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;
Dove PDF è la mia funzione di densità di probabilità, inversa è l'integrale inverso del PDF. e media e average2 rappresentano rispettivamente.