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
P esel[10]+P esel[11]
. Obliczyć przybliżoną wartość
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 = 10
7
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
15
. Przyjełam, że kula ma
środek w punkcie a =
1
2
, . . . ,
1
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