Monte Carlo calka podwojna prezentacja 3

background image

 

 

Rachunek Prawdopodobieństwa
Grupa wykładowa: środa g. 15.15

Grupa w składzie:

1. Wojciech Nawracała
2. Paweł Gancarz
3. Michał Frysztacki
4. Paweł Trajdos
5. Jakub Bubin

Prezentuje

:

Ilustracja metody 

Monte Carlo

Monte Carlo

 

obliczania całek podwójnych

background image

 

 

Spis treści:

 Treść zadania
 Kilka słów o metodzie Monte Carlo
 Algorytm obliczania całek podwójnych metodą    
 Monte Carlo
 Przykłady rozwiązań, tabele zbiorcze

background image

 

 

Treść zadania:

background image

 

 

Kilka słów o metodzie Monte Carlo

Metoda opracowana została przez polskiego matematyka, Stanisława Ulama, 
nazwa wzięła się ze skojarzenia jej z osobą wujka­hazardzisty tegoż 
matematyka. Metoda ta wykorzystywana jest nie tylko do obliczania całek, ale 
ogólnie rzecz biorąc, do modelowania procesów matematycznych i fizycznych 
zbyt złożonych do obliczeń analitycznych. 

Na czym polega metoda MC obliczania całek podwójnych?

 1. Na obszarze całkowania opisywany jest prostokąt, i za pomocą generatora 
liczb pseudolosowych generuje się zadaną wcześniej jako ilość prób ­ liczbę 
punktów tego prostokąta.
 
2. W każdej próbie sprawdzane jest, czy współrzędne
 wylosowanego punktu zawierają się w polu obszaru całkowania czy też nie. 

3. Wynik to stosunek sumy wartości całkowanej funkcji w punktach trafionych 
w obszar całkowania do ilości wszystkich prób, pomnożony przez pole 
prostokąta 

background image

 

 

Algorytm Monte Carlo jako kod języka c++

inline double gen()
{

int MAX=1000;
return ((double)(rand()%MAX))/MAX;

}

double calkaMonteCarlo(double a, double b,double c,double d,
double(*ptr)(double,double),unsigned int n)
{

double w; int j=0; double sum=0,xk,yk,temp;
if(a>b){temp=a;a=b;b=temp;}
for(unsigned int i=0;i<n;i++)
{

xk=a+(b-a)*gen();
yk=c+(d-c)*gen();
sum+=ptr(xk,yk);
w=n/76; j++;
if(j==abs(w))
{

printf ("|"); j=0;

}

}
return ((b-a)*(d-c)/n)*sum;}

Generator liczb

pseudoloswych.

Kod “liczący” pole całki

­ sprawdza,  czy

wylosowana liczba

mieści się w polu

określonym przez funkcję

podcałkową.

background image

 

 

Funkcja pierwsza

Kod funkcji:

double fun1(double x, double y)
{

if(y>=0&&y<=sqrt(1-(x*x)))
return x; else return 0;

}

Wykres prezentujący

zbieżność wyniku 

analitycznego oraz

wyników numerycznych

W zależności od 

liczby prób. 

Kod funkcji

I

wykres funkcji.

background image

 

 

Funkcja druga

Kod funkcji:

double fun2(double x, double y)
{

if(y<=(1/x)) return exp(x*y);
else return 0;

}

Kod funkcji

I

wykres funkcji.

Wykres prezentujący

zbieżność wyniku 

analitycznego oraz

wyników numerycznych

w zależności od 

liczby prób .

background image

 

 

Funkcja trzecia

Kod funkcji:

double fun3(double x, double y)
{

if(y>=(x/2) && y<=2*x)
return 1/((1+x+y)*(1+x+y));
else return 0;

}

Wykres prezentujący

zbieżność wyniku 

analitycznego oraz

wyników numerycznych

w zależności od 

liczby prób. 

Kod funkcji

I

wykres funkcji.

background image

 

 

Funkcja czwarta

Kod funkcji:

double fun4(double x, double y)
{

if (y>=(x*x))
return

((exp(exp(sin(exp(x*y))))));

else return 0;

}

Wykres prezentujący

zbieżność wyniku 

analitycznego oraz

wyników numerycznych

w zależności od 

liczby prób. 

Kod funkcji.

background image

 

 

Kod programu obliczającego całki

int main()
{

srand((unsigned)time(NULL));
int N=1000000; // ilo

prób

ść

double t; t=exp(1.0);
a,b,c,d
printf("\n%f\n",calkaMonteCarlo(0,1,0,1,fun1,N));
printf("\n%f\n",calkaMonteCarlo(1,t,0,1,fun2,N));
printf("\n%f\n",calkaMonteCarlo(0,2,0,4,fun3,N));
printf("\n%f\n",calkaMonteCarlo(0,2,0,3,fun4,N));
system("pause");

}

Ilość losowanych

liczb ­ prób.

Obliczanie i

wyświetlanie

 wyników całkowania

poszczególnych funkcji.

Krótki opis zasady działania programu:

1. Na obszarze całkowania opisywany jest prostokąt, oraz 
    Ustalamy liczbę prób – liczb pseudolosowych generowanych przez generator.
2. W każdej próbie sprawdzane jest, czy współrzędne wylosowanej liczby zawierają się
    w przedziale całkowania.
3. Wynik, to stosunek  sumy prób trafionych w obszar całkowania do ilości wszystkich
   prób wymnożony przez pole prostokąta.

background image

 

 

Podsumowanie wyników obliczeń

Jak widać wyniki obliczenia

numeryczne zbiegają do 

większej dokładności przy 

większej liczbie prób.

Dla każdej funkcji należy więc

dobrać optymalną liczbę liczb.

Pamiętać należy jednak o tym, 

że metoda Monte Carlo zwana

też inżynierską służy do

szybkiego otrzymania wyników.

Dokładnosć wyniku schodzi na

drugi plan. 


Document Outline


Wyszukiwarka

Podobne podstrony:
Monte Carlo calka podwojna prezentacja 1
Metody Monte Carlo
Probabilistyczna ocena niezawodności konstrukcji metodami Monte Carlo z wykorzystaniem SSN
C 06 Całka podwójna
09Calki wielokrotne, 1 Całka podwójna w prostokącie
07 monte carlo
AMII, am2.11a, CAŁKA PODWÓJNA W PROSTOKĄCIE
AMII, am2.11a, CAŁKA PODWÓJNA W PROSTOKĄCIE
Calka podwojna id 107925 Nieznany
08 opis wynikow monte carlo
calka podwojna w obszarze normalnym
Wyklad 6 Monte Carlo
06 Metoda Monte Carlo 25 06 2007id 6332 ppt
Całka podwójna
Microsoft Word W19 Calka podwojna
całka podwójna i potrójna

więcej podobnych podstron