Metodo Montecarlo "Hit of Miss" per la risoluzione di integrali definiti:
//Metodo Hit or Miss
#include < iostream >
#include "TRandom.h"
#include "math.h"
#include "funz.h"
using namespace std;
int main() {
cout.precision(6);
int Nin = 0, Nok = 0;
double sidex = 2;
double sidey = 1;
double x, y, yval, integrale;
double (*fun)(double);
fun = sinquadrecipr;
TRandom gen(0);
while(Nin < 200000){
x = gen.Uniform(0,sidex);
y = gen.Uniform(0,sidey);
yval = (*fun)(x);
Nin++;
if ( y < yval ){
Nok++;
}
}
integrale = (2.*((double)Nok/(double)Nin));
cout << "Integrale M.Carlo " << integrale << endl;
return 0;
}
Categories:
Programmi
Posta un commento