Sunteți pe pagina 1din 3

Universitatea de Stat din Moldova

Facultatea de Matematic i
Informatic
Specialitatea Informatic

Lucrare individual
nr. 2
La disciplina: Probabilitate i statistic

Catedra: Informatica

A elaborat: Roman Alexandru, grupa I21

2014
Metoda Monte Carlo

Metoda Monte Carlo este o metod de rezolvare numeric a problemelor


matematice, bazat pe modelarea variabilelor aleatoare. Procedeul principal de
elaborare a metodei Monte Carlo pentru rezolvarea unei probleme const n
reducerea acesteia la calculul valorilor medii.

e
G

x y

dxdy
, G mrginit de y = ex, x = 0, y = 2.

( R: e )

S se scrie un program care calculeaz integrala definit.


Soluie-algoritm
1. nscriem domeniul G ntr-un dreptunghi,
de exemplu, n dreptunghiul ABCD
2. S = 0.
i 1, n

3. Pentru
efectum:
n ptratul ABCD lum la ntmplare
punctul (xi, yj);
dac (xi ex yj ex ), atunci IG (xi, yj )
= 1;
dac nu are loc (xi ex yj ex) atunci
IG (xi, yj) = 0
S = S + exi + yj IG(xi, yj).
4. I = 1.442 S/n.
5. Programul:
#include <iostream>
#include <cstdlib>
#include <math.h>
#define line "**************************************************"
using namespace std;
int main(){
float D = 0.0, x = 0.0, y = 0.0, mD = 0.0, jx, jy, I, ex = 0.0, exy = 0.0, S = 0.0;
// D - domeniu in care a fost inscris domeniu G;
// x - axa OX;
// y - axa OY;
// mD - aria domeniului D;
// ex - e la puterea x;
// exy - e la puterea x + y;
// S - suma
int n, i, Ig;
// n - numarul de puncte luate la intimplare;

cout << "Dati numarul de puncte luate la intimplare: ";


cin >> n;
cout << line << "\n\n";
for ( i=0; i<n; i++ ){
mD = 1 * 1.442;
//aria domeniului D mereu constanta;
x = (rand() % 1442 +0 ) / 1000.0 ;
y = (rand() % 1000 +1000 ) / 1000.0;
ex = pow( 2.718, x); //aflu e^x;
if ( x < ex && y > ex ){
exy = pow( 2.71, (x + y)); //aflu e^(x+y);
Ig = 1;
S = S + exy * Ig;
I = ( mD * S )/n;
}
else continue;
}
cout << "I = " << I << "\n\n" << line << endl;
return 0;
}

S-ar putea să vă placă și