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: