MCMC Praca domowa 2

Justyna Benkowska

8 listopada 2006

1

Treść zadania

Niech będzie zadany zbiór R, który jest kulą w przestrzeni ( P esel[5] + 10 ∗

P esel[6]) wymiarowej o promieniu 1

. Obliczyć przybliżoną wartość P esel[10]+ P esel[11]

miary Lebesguea tego zbioru według algorytmu MC (Fishman str. 19). W

odpowiedzi należy podać 1. Pełny numer Pesel 2. Kod programu według algorytmu MC ze strony 19 Fishmana 3. Wektor dziesięciokrotnych obliczeń dla n = 107 każde. Wyniki podać w postaci dziesiętnej z pięcioma cyframi znaczcymi.

2

Odpowiedz

Ad. 1). 84120301687

Zatem wymiar przestrzeni m = 30, promień r = 1 . Przyjełam, że kula ma 15

środek w punkcie a = 1 , . . . , 1 .

2

2

1

Ad. 2). Kod programu:

#include<stdio.h>

#include<stdlib.h>

#include<math.h> float x[30];

int m=30;

int n=10000000;

float r=1/15;

float P[10];

float frand() { return (float) rand() / RAND_MAX;}

float suma(){

int j;

float b=0;

for(j=0;j<m;j++) b=b+pow(x[j]-(1/2),2); return b;

}

int main(){

int l;

for(l=0;l<10;l++){

int j=0;

int s=0;

int i=0;

while(j<n){

for(i=0;i<m;i++) x[i]=frand();

if(sqrt(suma())<r) s=s+1;

else s=s+0;

j++;

}

P[l]=(float)s/n;

printf("Przybliźone pole obszaru metoda MC w obliczeniu nr %d wynosi P%d= %.5f\n",l+1,l+1, P[l]);

}

return 0;

}

2

Ad. 3).

P[1] = 0.00000

P[2] = 0.00000

P[3] = 0.00000

P[4] = 0.00000

P[5] = 0.00000

P[6] = 0.00000

P[7] = 0.00000

P[8] = 0.00000

P[9] = 0.00000

P[10] = 0.00000

3