Está en la página 1de 17

Informe de la primera prctica de Algoritmos a Paralelos

Mamani Velsquez, Deivit Frank a 19 de abril de 2012

1.

Objetivos

La presente prctica tiene como objetivo simular y vericar la efectividad a del mtodo de Monte Carlo. e

2.
2.1.

Fundamento terico o
Introduccin o

Los mtodos de Monte Carlo abarcan una coleccin de tcnicas que permiten e o e obtener soluciones de problemas matemticos o f a sicos por medio de pruebas aleatorias repetidas. En la prctica, las pruebas aleatorias se sustituyen por a resultados de ciertos clculos realizados con nmeros aleatorios. a u En resumen, el mtodo de Monte Carlo es una tcnica numrica para calcular e e e probabilidades y otras cantidades relacionadas, utilizando secuencias de n meros u aleatorios. Para el caso de una sola variable el procedimiento es la siguiente: 1. Generar una serie de nmeros aleatorios r1 , r3 , . . . , rm uniformemente disu tribuidos en [0,1]. 2. Usar esta secuencia para producir otra secuencia x1 , x2 , . . . , xm distribuida de acuerdo a la funcin de distribucin de probabilidad en la que estamos o o interesados. 3. Usar la secuencia de valores x para estimar alguna propiedad de f(x) . Los valores de x pueden tratarse como medidas simuladas y a partir de ellos puede estimarse la probabilidad de que los x tomen valores en una cierta regin. o Formalmente un clculo Monte Carlo no es otra cosa que una integracin. a o En general, para integrales unidimensionales pueden usarse otros mtodos e numricos ms optimizados. El mtdo MC es, sin embargo muy util para intee a e graciones multidimensionales.

2.2.

Generacin de n meros aleatorios o u

Son necesarios para proporcionar la secuencia aleatoria inicial (uniformemente distribuida entre 0 y 1). Existen numerosos algoritmos de generacin de nmeros (pseudo) aleatorios. o u En particular, las diferentes variantes de RANLUX, disponibles en todas las bibliotecas matemticas modernas (CERN, GSL, etc.) a Un ejemplo sencillo es el algoritmo MLCG (multiplicative linear congruential generator) ni+1 = (ani )modm (1)

donde ni = entero, a = multiplicador, m = mdulo y n0 = semilla. o La secuencia de nmeros seudoaleatorios producida por la ecuacion 1 es u determinista (y reproducible!) pero para efectos practicos puede considerarse como una secuencia de nmeros aleatorios. u

g(r)

1.25

f(x)

0.2

1 0.70 0.5

0.15

x(r)

0.1

0.05 0.20 0 0 0.25 0.5 0.75 r 1 1.25 1.5 0 0 0.25 0.5 0.75 x 1 1.25 1.5

Figura 1: Transformacin de una variable aleatoria uniforme a una con una distribucin de o o probabilidad no uniforme.

2.3.

El mtodo de transformacin de variables e o

Dados r1 , r2 , . . . , rn distribuidos uniformemente en [0,1] se trata de encontrar un conjunto x1 , x2 , . . . , xm distribuidos conforme a f(x) mediante una transformacin x(r) (gura 1). o Siendo: g(r) dr la probabilidad de obtener un valor r en [r, r + dr] f(x) dx la probabilidad de obtener un valor x en el intervalo correspondiente a [r, r + dr], es decir [x(r) , x(r) + dx(r)] Ambas probabilidades tienen que se iguales. Para determinar la transformacin x(r) para la que la condicin anterior se o o verica puede imponerse (la receta no es unica) que: P(rr ) = P(xx ) es decir
r x(r )

g(r)dr = G(r ) =

f (x )dx = F (x(r ))

por lo tanto, para determinar x(r) la receta es: Igualar F (x(r)) = r y resolver para x(r) Por ejemplo, sea un funcin de distribucin de probabilidad exponencial o o f (x; ) = igualamos
x 0

1 x/ e ,x 0

1 x / e dx = r

y resolvemos para x(r), obteniendo x(r) = log(1 r)

concluimos que si r sigue un distribucin uniforme entre 0 y 1, x sigue una o distribucin exponencial, con media . o 2

2.4.

El mtodo de aceptar/rechazar e

En muchos casos es dif resolver anal cil ticamente la ecuacin que nos da o x(r) por el mtodo de transformacin. En estos casos puede aplicarse el mtodo e o e de aceptar/rechazar (Von Neumann) Considerar una funcin de distribucin de probabilidad que puede ser too o talmente acotada por una caja (denida por xmin , xmax y la altura mxima a fmax ). La receta es como sigue: 1. Generar un nmero aleatorio x entre [xmin , xmax ] distribuido uniformeu mente. x = xmin + r1 (xmin xmax ), r1 uniforme en [0, 1]

2. Generar un segundo nmero aleatorio, u, uniformemente distribuido entre u 0 y fmax u = r2 fmax , r2 uniforme en [0, 1]

Si u < f (x) aceptar x. Si no, rechazar x y repetir.

2.5.

Precisin del mtodo de Monte Carlo o e

Para mtodos de Monte Carlo en donde se intenta evaluar una integracin, e o la precisin es aproximadamente o 1 Precisin o n (2)

Comparado con otros mtodos de integracin numrica, por ejemplo la trae o e pezoidal cuya precisin es o 1 n2 venos que el mtodo de Monte Carlo no lo supera en precisin. Sien embargo, e o para d dimensiones la precisin del mtodo del mtodo de Monte Carlo es ino e e 1 dependiente de d (es decir, siempre con una precisin n ) mientras que, por o 1 ejemplo, la trapezoidal tiene una precisin n2/d . o En resumen: Para d alta (d > 4 t picamente) el mtodo de Monte Carlo da e la mayor precisin. o Precisintrapecio o

3.

Simulacin de ejemplo o

Para la primera parte usaremos la simulacin hecha en clase cuyo cdigo o o fuente se encuentra como ejemplo3.c. El cdigo fuente 1 muestra el contenido o de dicho archivo.
Cdigo fuente 1: ejemplo3.c o

1 2

#include <stdio.h> #include <stdlib.h>

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

#include <time.h> #include <math.h> #include mpi.h int main(int argc, char argv[]) { int nprocs, myproc; int i , n; double pi 25= 3.141592653589793238462643; double pi, w, x, y, error , acum, sum acum; double t0, t1; / MPI initialization / MPI Init( &argc, &argv ); MPI Comm size( MPI COMM WORLD, &nprocs ); MPI Comm rank( MPI COMM WORLD, &myproc ); / Determine the number of divisions to use / if ( argc == 2 ) { / Take n from the command line argument / sscanf ( argv [1], %d, &n ); } else { if (myproc == 0) { printf (Enter the number of random points: (0 quits) ); ush (stdout); scanf( %d,&n); } } if ( myproc == 0 ) printf(Calculating pi using %d points\n, n); / Broadcast the number of divisions to all nodes / MPI Bcast( &n, 1, MPI INT, 0, MPI COMM WORLD); / Start the timer after a barrier command / MPI Barrier( MPI COMM WORLD ); t0 = MPI Wtime(); pi = 0.0; sum acum=0.0; acum=0.0; srand( (unsigned)time( NULL )+myproc ); w = 1.0 / n; / Each processor starts at a dierent value and computes its own contributions to pi . / for( i=myproc; i<n; i+=nprocs ) { x = (double) rand()/RAND MAX; y = (double) rand()/RAND MAX; if ((x>0.5) && (x<=0.8) && (y<=1.5x) && (((xx)+(yy)) <= 1.0)) acum=acum+0.857; if ((x>0.5) && (x<=0.8) && (y>1.5x)) i=inprocs; if ((x>0.8) && (y<=1.771.4x) && (((xx)+(yy)) <= 1.0)) acum=acum+0.857; if ((x>0.8) && (y>1.771.4x)) i=inprocs; if ( (x<=0.5) && (((xx)+(yy)) <= 1.0) )

y = x + 1,5
1

y = 1,4x + 1,77

0.5

0.8

Figura 2: Area de simulacin de ejemplo3.c o

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

acum=acum+0.857; } MPI Allreduce( &acum, &sum acum, 1, MPI DOUBLE, MPI SUM, MPI COMM WORLD ); pi= ((double) sum acum)/(double) n; pi = pi4; error = fabs( pi pi 25 ); t1 = MPI Wtime(); if ( myproc == 0 ) { printf (The calculated pi = %f (error = %f)\n, pi, error); printf (The calculation took %f seconds on %d nodes\n, t1t0, nprocs); } MPI Finalize(); return 0; }

La gura 2 muestra el rea que ha sido simulada de acuerdo al archivo a ejemplo3.c Los resultados se tabulan en la tabla 1. Se puede observar que un nmero mayor de puntos de muestra hacen que la u precisin del mtodo sea mejor. o e

Cantidad puntos 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000

Nmero de u procesadores 1 1 1 1 1 1 1 1 1 1

aproximado 1.371200 3.188040 3.198324 3.134220 3.143202 3.141330 3.141652 3.141588 3.141580 3.141592

Error 1.770393 0.046447 0.056731 0.007372 0.013186 0.000263 0.000060 0.000005 0.000012 0.000001

Tiempo de ejecucin o en segundos 0.000242 0.000217 0.000368 0.001280 0.001609 0.161859 1.657037 16.392357 130.873780 337.915119

Cuadro 1: Datos de la simulacin de ejemplo o

4.
4.1.

Desarrollo de la prctica a
Simulacin 1 o

En esta simulacin vamos a generar nmeros aleatorios tal que siempre se o u encuentren dentro del area sombreada del ejemplo de la seccin 3. o Lo primero que se puede observar es que en el ejemplo los nmeros aleatorios u generados en el eje X van desde 0 a 1 por lo que no hay inconvenientes. En el eje Y vemos 3 casos: 1. Si el nmero aleatorio x se genera entre 0 y 0.5, entonces no hay que hacer u nada. 2. Si x se genera en el intervalo [0,5; 0,8] se debe contraer el rango de valores en los que se puede generar y de acuerdo a la funcin y = x + 1,5. o 3. Si x se genera en el intervalo [0,8; 1] se debe contraer el rango de valores en los que se puede generar y de acuerdo a la funcin y = 1,4x + 1,77. o El cdigo fuente 2 realiza la simulacin de puntos que caen dentro del rea o o a descrito en el ejemplo.
Cdigo fuente 2: genera dentro.c o

1 2 3 4 5 6 7 8 9 10 11 12 13 14

#include #include #include #include #include

<stdio.h> <stdlib.h> <time.h> <math.h> mpi.h

int main( int argc, char argv[]) { int i=0, thisproc, allproc , n; double x, y=0, t0, t1; MPI Init( &argc, &argv ); MPI Comm size( MPI COMM WORLD, &allproc); MPI Comm rank( MPI COMM WORLD, &thisproc);

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.2 0.4 0.6 0.8 1

Figura 3: Los puntos se generan siempre dentro del rea. a

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

if ( argc == 2 ) sscanf( argv [1], %d, &n ); else if (thisproc == 0) { printf (Enter the number of random points: (0 quits) ); ush (stdout); scanf( %d,&n); } MPI Barrier( MPI COMM WORLD ); t0 = MPI Wtime(); srand( (unsigned)time(NULL) + thisproc ); for ( i = thisprocn/allproc; i< (thisproc+1)n/allproc; i++) { x = (double) rand()/RAND MAX; if ( x <= 0.5 ) y = (double) rand()/RAND MAX; if ( 0.5 < x && x <=0.8 ) y = (1.5x)( (double) rand()/RAND MAX ); if ( 0.8 < x) y = (1.771.4x)( (double) rand()/RAND MAX ); printf ( %f\t %f\n, x, y); } t1 = MPI Wtime(); MPI Finalize(); return 0; }

La gura 3 graca los puntos generados por la simulacin para 10000 puntos. o

4.2.

simulacin 2 o

En esta simulacin vamos a reducir el rea para mejorar la precisin del o a o mtodo de Monte Carlo. La reduccin ser de la siguiente manera: e o a

2/2

(b)

(a)

2/2

Figura 4: (a) Cortes (l nea discont nua) que se realizan al c rculo para mejorar la precisin. o (b) Aprovechamiento de la simetr para facilitar el clculo del mtodo Monte Carlo. a a e

1. Se realizan dos cortes al c rculo mediante las rectas: a) y = x. b) y = 1 x 2. Calculamos el rea del sector que se encuentra por encima de las rectas a y = x y y = 1 x. Estos cortes se ilustran en la gura 4(a). En la gura 4 (b) se aprovecha la simetr para facilitar la simulacin, posibilitando el muestreo con variables a o aleatorias con distribucin uniforme sobre un rectngulo de base igual a 2/2 o a y altura 1 2/2. El rea del cuadrante ser entonces a a 1 S = 2A + ; (3) 2 El cdigo fuente 3 o simula puntos aleatorios con distribucin uniforme los o sobre el rectngulo [0, 2/2], [ 2/2, 1]. a
Cdigo fuente 3: reduccion area.c o

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

#include #include #include #include #include

<stdio.h> <stdlib.h> <time.h> <math.h> mpi.h

int main(int argc, char argv[]) { int i=0, n, allproc , thisproc , adentro = 0, sum adentro=0; double pi, area reduc, k; double pi 25= 3.141592653589793238462643; double x, y, t0, t1; MPI Init( &argc, &argv ); MPI Comm size( MPI COMM WORLD, &allproc ); MPI Comm rank( MPI COMM WORLD, &thisproc ); if ( argc == 2 ) { / Take n from the command line argument /

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

sscanf( argv [1], %d, &n ); } else { if (thisproc == 0) { printf (Enter the number of random points: (0 quits) ); ush (stdout); scanf( %d,&n); } } MPI Barrier( MPI COMM WORLD ); t0 = MPI Wtime(); k = (double) sqrt(2)/2; for ( i = thisprocn/allproc; i < (thisproc+1)n/allproc; i++ ) { x = (double) k (double) rand()/RAND MAX; y = (1 k) (double) rand()/RAND MAX + k; if ( k <= y && y <= sqrt( 1xx )) { adentro++; } } MPI Allreduce( &adentro, &sum adentro, 1, MPI INT, MPI SUM, MPI COMM WORLD ); area reduc = 0.5( sqrt(2) 1 )(double) sum adentro/n; pi = 2 + 8area reduc; t1 = MPI Wtime(); printf (pi = %f\n, pi); printf (error = %f\n, fabs(pi 25pi)); printf (tiempo de ejecucion = %f\n, t1t0); MPI Finalize(); return 0; }

Los resultados se tabulan en la tabla 2. Podemos realizar otro corte al rea A como se muestra en la gura 5. a El cdigo fuente para la simulacin es muy similar a la simulacin anterior, o o o slo cambia el rectngulo de muestreo. El archivo reduccion2.c contiene el cdigo o a o fuente de la simulacin. Los resultados de este nuevo corte se presentan en la o tabla 3.

4.3.

simulacin 3 o

Se calcular el centro de masa de una elipsoide con densidad no uniforme a mediante el mtodo de Monte Carlo. La ecuacin de la elipsoide es e o S : (x 8)2 + (y + 1)2 + 4z 2 = 1 (4)

Nmero de u puntos 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000

Nmero de u procesadores 1 1 1 1 1 1 1 1 1 1

aproximado 2.828427 3.043818 3.126661 3.155159 3.142086 3.141579 3.141385 3.141561 3.141595 3.141575

Error 0.313166 0.097774 0.014932 0.013566 0.000494 0.000013 0.000208 0.000031 0.000002 0.000018

tiempo de ejecucin o en segundos 0.000242 0.000221 0.000358 0.001302 0.014986 0.161417 1.355835 13.369183 171.365552 348.928869

Cuadro 2: Datos de la simulacin reduccin o o

h (b)

(a)

Figura 5: (a) Se puede mejorar la precisin si reducimos el rea a la mitad. (b) Nuevamente o a la simetr facil a la simulacin. a tar o

Nmero de u puntos 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000

Nmero de u procesadores 1 1 1 1 1 1 1 1 1 1

aproximado 3.201292 3.108076 3.148625 3.139116 3.141349 3.141643 3.141602 3.141610 3.141587 3.141586

Error 0.059699 0.033517 0.007032 0.002476 0.000244 0.000050 0.000009 0.000017 0.000007 0.000007

tiempo de ejecucin o en segundos 0.000212 0.000234 0.000323 0.000811 0.000244 0.134708 1.632566 16.492199 171.365552 323.348550

Cuadro 3: Datos de la simulacin reduccin2 o o

10

mientras que su densidad en cada punto es = |x| + |y| + |z 5| (5)

Dada la densidad podemos hallar la masa de la elipsoide mediante cualquier tcnica, Monte Carlo por ejemplo. Mediante un software se calcula masa del e elipsoide mediante la formula M=
V

(x,y,z) dV

(6)

donde V es el volumen de la elipsoide. Usando un cambio de coordenadas x y z = r sin cos + 8 = r sin sin 1 r cos = 2 (7) (8) (9)

con r [0, 1], [0, ] y [0, 2]. Esta transformacin tiene como jacobiano o (J) r2 sin (10) 2 La integral 6 se convierte ahora en una integral sobre una esfera de radio 1. J= M=
V

(r,,) (Jdv)

(11)

Esta integral se puede calcular rapidamente si se observa que los valores absolutos se pueden eliminar puesto que |x| es positivo siempre en el volumen V, |y| siempre es negativo en V y |z 5| tambin es negativo; adems, se e a evaluar de 0 a 2 y que de la ec. (5) reemplazado en (11) se puede ver que los a terminos r sin cos y r sin sin sern cero. As slo queda la integral a , o
1 0 0 2

M=
0

1 (7r2 sin r3 sin cos )dddr 4

(12)

Se ve fcilmente que el segundo sumando ser cero cuando se integre de 0 a a a . As la masa de la elipsoide es , 28 (13) 3 Volviendo a la simulacin, de la ecuacin de la elipsoide se sabe cuales son los o o l mites de la elipsoide por lo que lo encerraremos en un paralelep pedo recto y los puntos se generarn aleatoria y uniformemente dentro de dicho paralelep a pedo. Para que los puntos generados cumplan con la distribucin dada por la funo cin de densidad usaremos el mtodo de aceptar/rechazar donde f (x) sera igual o e a M puesto que la integral de esta funcin en el volumen V es 1. o Antes de simular obtendremos los valores tericos de los centros de masa o para compararlo con el resultado de la simulacin. Usaremos la herramienta o Triple Integral Calculator de la pgina web a M=

11

Figura 6: Clculo terico del centro de masa en el eje x. a o

Figura 7: Clculo terico del centro de masa en el eje y. a o

http://www.wolframalpha.com/widgets/view.jsp?id=bf8679a50a63113b582ed22679363a4 As calculamos los centros de masa para obtener el error en la simulacin. , o El cdigo fuente 4 realiza la simulacin. o o
Cdigo fuente 4: centro masa.c o

1 2 3 4 5 6 7 8 9 10 11 12 13 14

#include #include #include #include #include

<stdio.h> <stdlib.h> <time.h> <math.h> mpi.h

int main(int argc, char argv[]) { int i=0, allproc , thisproc , n, adentro=0, sum adentro; double x, y, z, xc=0, yc=0, zc=0, sum xc, sum yc, sum zc; double x teo=8.01428 , y teo=1.01429, z teo=0.00357; double r, densidad; double t0, t1;

12

Figura 8: Clculo terico del centro de masa en el eje z. a o

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

MPI Init( &argc, &argv ); MPI Comm size( MPI COMM WORLD, &allproc ); MPI Comm rank( MPI COMM WORLD, &thisproc ); if ( argc == 2 ) { / Take n from the command line argument / sscanf( argv [1], %d, &n ); } else { if (thisproc == 0) { printf (Enter the number of random points: (0 quits) ); ush (stdout); scanf( %d,&n); } } MPI Barrier( MPI COMM WORLD ); t0 = MPI Wtime(); srand( (unsigned)time(NULL) + thisproc ); for ( x y z i = thisprocn/allproc; i < (thisproc+1)n/allproc; i++ ) { = 2(double) rand()/RAND MAX + 7; = 2(double) rand()/RAND MAX; = (double) rand()/RAND MAX 0.5;

if ( 1sqrt( 1pow(x8, 2.0) ) 1 <= y && y <= sqrt( 1pow(x8, 2.0) ) 1 ) { if ( 0.5sqrt( 1pow(x8,2.0)pow(y+1,2.0) ) <= z && z <= 0.5sqrt( 1pow(x8,2.0)pow(y+1,2.0) ) ) { densidad = fabs(x) + fabs(y) + fabs(z5); r = (double) rand()/RAND MAX; if ( r <= (double) 3densidad/(283.141592)) { adentro++; xc += x; yc += y; zc += z; } }

13

Nmero de u puntos 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000

Nmero de u procesadores 1 1 1 1 1 1 1 1 1 1

(x, y, z) aproximado 8.322587, -1.319925, 0.234689 7.902117, -1.112095, -0.038644 7.996100, -1.007311, -0.020468 8.019599, -1.018026, -0.00821 8.020383, -1.009829, 0.001711 8.014076, -1.013636, -0.003014 8.014853, -1.013682, -0.003480 8.015119, -1.014173, -0.003553 8.015180, -1.014251, -0.003530 8.015174, -1.014258, -0.003555

Error(x,y,z) 0.308297, 0.291355, 0.112173, 0.083525, 0.018190, 0.021259, 0.005309, 0.010544, 0.006093, 0.018741, 0.000214, 0.014934, 0.000563, 0.014888, 0.000829, 0.014397, 0.000890, 0.014319, 0.000884, 0.014312, 0.238259 0.035074 0.016898 0.004641 0.001711 0.000556 0.000090 0.000017 0.000040 0.000015

tiempo de ejecucin o en segundos 0.000470 0.001040 0.000684 0.002824 0.032279 0.309265 2.584044 25.960718 310.580939 580.896939

Cuadro 4: Datos de la simulacin centro masa o

52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

} } MPI MPI MPI MPI Allreduce( Allreduce( Allreduce( Allreduce( &adentro, &sum adentro, 1, MPI INT, MPI SUM, MPI COMM WORLD ); &xc, &sum xc, 1, MPI DOUBLE, MPI SUM, MPI COMM WORLD ); &yc, &sum yc, 1, MPI DOUBLE, MPI SUM, MPI COMM WORLD ); &zc, &sum zc, 1, MPI DOUBLE, MPI SUM, MPI COMM WORLD );

xc = sum xc/sum adentro; yc = sum yc/sum adentro; zc = sum zc/sum adentro; t1 = MPI Wtime(); printf (xc = %f\nyc = %f\nzc = %f\n, xc, yc, zc); printf (tiempo = %f\n, t1t0); printf (error x = %f\nerror y = %f\nerror z = %f\n, fabs(x teoxc), fabs(y teoyc), fabs(z teozc)); MPI Finalize(); return 0; }

La tabla 4 muestra los datos recogidos de la simulacin. o

5.

Observaciones

1. En la simulacin 1 se puede notar que la generacin de puntos aleatorios o o no es uniforme. La gura 3 demuestra esta no uniformidad pues se ve claramente como se acumulan un nmero mayor de puntos cerca de x = 1. u Esta desproporcin o no uniformidad se debe a que mientras la variable o aleatoria x se genera de manera uniforme; y no se debe generar de manera aleatoria uniforme pues est acotado por una funcin que depende de x. a o La gura 9 ilustra este hecho. Se generan nmeros x aleatorios de manera u uniforme en el intervalo [0, 1] y por cada uno de estos se genera un n mero u aleatorio en el eje Y. Como x tiene distribucin uniforme entonces hay la o 14

(n/2 + ) puntos

(n/2 ) puntos

50%

50%

Figura 9: Hay una mayor densidad de puntos en el lado izquierdo que el derecho por tener una menor rea donde acumularse los puntos. a

misma probabilidad de que caiga en [0; 0,5] y [0,5; 1] por lo que el n mero u de puntos en ambos lados son aproximadamente iguales pero las reas son a diferentes. 2. Nada nos imped seguir partiendo a la mitad el rea A de la simulacin a a o 2 y as tener una mayor precisin. En el l o mite de estas particiones se llegar a un pol a gono regular inscrito en la circunferencia y cuya rea a ser aproximadamente igual a /4 con la aproximacin que deseemos. a o 3. En la simulacin 3 se us una funcin igual a /M , sin embargo, es mejor o o o obtener una funcin de distribucin acumulativa y vericar directamente o o si r es menor que esa funcin evaluado en el punto de muestra. Esto no o es muy dif en una dimensin pues se sigue la secuencia creciente de x cil o para determinar esta distribucin de acumulacin, cuando x tienda a + o o la funcin acmulativa tiene que cumplir que su integral es uno. o

6.

Conclusiones

1. Viendo la gura 3 se concluye que conocer la forma de cmo se geneo ran los nmeros aleatorios es importante para poder realizar una buena u simulacin en Monte Carlo. o 2. Comparando las tablas 1 y 3 se puede concluir que reducir el rea de a muestreo para calcular la integral de una funcin da una mejor precisin o o en el resultado nal. 3. El mtodo de Monte Carlo es efectivo incluso para dimensiones mayores e que 2 pues slo dependen de alguna constante y puntos generados aleatoo riamente con una determinada distribucin de probabilidad o pesos. o

7.

Refencias

1. M. H. Kalos, Ed., Monte Carlo Methods, John Wiley & Sons, Inc., 1986 15

2. http://benasque.org/benasque/2005tae/2005tae-talks/213s3.pdf 3. http://en.wikipedia.org/wiki/Monte Carlo method

16

También podría gustarte