You are on page 1of 38

El método de Monte Carlo: generalidades

Números aleatorios

Simulación de Distribuciones de Poisson

Simulación de Distribuciones Generales

El método de Monte Carlo en Mecánica Estadísti-


ca

  
Percolación en

  
Percolación en

  
El modelo de Ising en

  
El modelo de Ising en
Bibliografía

The Art of Computer Programming, D. E. Knuth,


Addison-Wesley, vol 2, 1997.

Numerical Recipes in C, W. H. Press, B. P. Flan-


nery, S. A. Teukolsky, W. T. Vetterling, Cambridge
University Press 1990.

Introduction to Percolation theory, A. Stauffer, A.


Aharony, Taylor & Francis, 1991.

Monte Carlo Simulation in Statistical Physics, K.


Binder, D.W. Heermann, Springer, 1997.

Quantum Fields on the computer, Ed. M. Creutz,


World Scientific, 1992.
Método de Monte Carlo:

Cualquier técnica que use números aleatorios.

P:¿Por qué Monte Carlo?

R: Por su casino (Karl Pearson, 1892)

P:¿Para qué pueden servir los números aleatorios?

R: Veamos unos ejemplos:

Simulación: La reproducción de fenómenos na-


turales necesita números aleatorios. En Física
los ejemplos clásicos: Física Estadística, Física
de Partículas

Muestreo: Muchas veces es poco práctico exa-


minar todos los casos posibles. Un muestreo alea-
torio puede revelar un comportamiento típico.
Análisis Numérico: Técnicas numéricas necesi-
tan números aleatorios

Programación de ordenadores: Tests de efec-


tividad de algoritmos

Toma de decisiones: Se rumorea que algunos


ejecutivos tiran monedas al aire para tomar deci-
siones. Algo parecido se dice de cómo califican
los exámenes algunos profesores

Estética: Un toque de aleatoriedad puede resul-


tar agradable

Juegos: De aquí proviene el propio método


P:¿Qué es un número aleatorio?, ¿es 2 un número
aleatorio?

R: Pregunta sin sentido. En su lugar hablaremos de


una secuencia de números aleatorios independientes
con una distribución específica.

Independientes: cada número es obtenido por casua-


lidad y no tiene ninguna relación con otros números
de la serie

Distribución específica: cada número tiene una pro-


babilidad específica de pertenecer a un rango de va-
lores determinado. La más común es la distribución
uniforme, todos los números son igualmente proba-
bles. Veremos otras.
Generación de Números Aleatorios

Utilizar máquinas específicas (resistencia gene-


radora de ruido) Ej.: ERNIE (loto inglesa) Incon-
venientes: averías difícilmente detectables, impo-
sibilidad de rehacer los cálculos con idénticas se-
cuencias

Utilizar tablas Inconvenientes: tablas cortas para


cálculos, ocupan memoria, tiempos de acceso

Utilizar operaciones aritméticas. Von Neumann


(1946)
   
extraer los dígitos centrales
    
           
Ej:




    

P:¿Cómo aleatorio (random) si está completamente


determinado por el anterior?

R : NO es random pero lo parece. Secuencias pseu-


doaleatorias que llamaremos simplemente aleatorias.

La secuencia de Von Neumann es un mal generador.

Ejercicio: Usar el algoritmo de Von Neumann para


generar una secuencia de números de 4 dígitos. Ana-
lizar el resultado usando diferentes semillas (número
inicial).

Peligro: los números aleatorios aceptados ciegamen-


te pueden llevarnos a cometer errores. Como hizo
IBM en los ’60 con su generador RANDU.
Generadores uniformes de números aleatorios

En la práctica se generan números enteros  com-


prendidos entre 0 y (módulo. El método más ex-
tendido es el de las congruencias:

Método de las congruencias

Se basa en 4 números enteros mágicos

: módulo

! : multiplicador  " ! #

$ : incremento  " $ #

 "
&% : semilla &% #

La secuencia se obtiene como


 *! 
 (' )   + $-,/. 021 3 4 5
Por ejemplo en MapleV
   )    687:9 . 0

$  

!  ;
<
 =   
     > ?
  > ? >   


  @           > >  >  A>  > & >    


 %

* Siempre se produce un loop


 !  $    
&%

 * > /
, . 0 B 1      * > 
 )

+
3C
+
      

,/. 021 3C&D 3E8F
3GHI

 
Si $ la generación es más rápida y la secuencia
más corta
Elección del módulo

tiene que ser grande para tener secuencias largas.


  D
Si J es el tamaño de la palabra (J en un
 
Pentium) se suele tomar J K . Otra alternativa
es el mayor primo menor que J .

Elección del multiplicador

Th: Una secuencia definida por 3 ! 3 $ y L% tiene pe-


riodo de longitud si y sólo si

i) $ es primo relativo a

 !   es múltiplo de N , para todo primo N


ii) M
divisor de

iii) M es múltiplo de 4 si es múltiplo de 4


Si $  
se cumple que

$  
Th.: El máximo periodo cuando se obtiene si

i) L% es primo relativo a

ii) ! es elemento primitivo módulo

Cuando ! es primo relativo a , el entero más peque-


*  
ño para el que !PO=,Q. 0B1 se llama orden de
! módulo . El ! que tiene el máximo valor posible
de orden módulo se llama un elemento primitivo
módulo .

Otros métodos:Secuencia de Fibonacci


 *
 ( ' )   +  8 R<) ,/. 021
 *
   SR F +  8 RTQT Q, . 0B1 3 5
Ejercicio: Utilizar los números aleatorios para simu-
lar el decaimiento radiactivo de una muestra de nú-
cleos. La probabilidad de que un núcleo decaiga en
 W W # # 
un tiempo U V es: N U V donde U V .


Considerad una muestra de % núcleos radiactivos.
¿Cómo cambia con el tiempo el número de núcleos?.
 * ,
Haced una gráfica de V .

Algoritmo:

 
Desde V hasta V , con U V

Loop sobre los núcleos que hay en V

# W
Decidir si decae o no: si random# U V enton-
ces el número de núcleos decae en una unidad

Registrar el número de núcleos en V


Datos:

    W    Y X <
R )  Z
% 3  3 U V
    W      X R[)  Z
% 3  3 U V

Comparar con el resultado teórico

 * ,   6 *  W ,
V %A\^] V

Mostrar el resultado en gráficas con escalas lineales y


logarítmicas
100

80

60

40

20

20 40 60 80 100 120 140 160 180 200 220 240 260 280
x
.1e3

.5e2

.1e2

5.

0 20 40 60 80 100 120 140 160 180 200 220 240 260 280
x
4000

3000

2000

1000

0
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300
x
.1e4

.1e3

.1e2

1.

20 40 60 80 100 120 140 160 180 200 220 240 260 280
x
Complicando la pregunta anterior: ¿cuál es la proba-
bilidad de observar 4 decaimientos en un intervalo de
tiempo _ ?. Suponiendo que el número de decays en

_ es mucho menor que . Dividimos _ en inter-

valos de duración U V , _ U V
∆t

 `  W   ` a
Probabilidad 1 decay N U V U V b

Probabilidad 4 decays en _
c  *d  , b e
R 
N N 4
 f  
En el límite , U V
c  g 
R hij 4lkm3 i  ` _
Distribución de Poisson
Ejercicio Modicar el ejercicio anterior para simular un
experimento en el que contamos el número de decays
observados en un intervalo _ . Repetir el experimento
varias veces y hacer histograma de la distribución de
decays.

Datos
    W   >    R T s R<)       
 %    W   >   R F < U V    s _     s
% sR ) U V s _ s

#experimentos = 1000
TESTS

P: Dada una secuencia n , ¿cómo saber si es sufi-


cientemente aleatoria?

Test Chi-cuadrado o

Método básico en estadística que se usa en relación


con muchos otros temas

- Tenemos un experimento que puede producir valo-


res en p clases distintas, cada una de ellas tiene una
Z  
probabilidad asociada Nrqs3 Ip

- Hacemos 4 observaciones independientes y conta-


Z
mos tq el número de observaciones en la clase .

qwv x  
 t q 4 Nq ,
- Construimos u
qwv ) 4Nq

Si u y y tendremos fundadas sospechas sobre las
medidas efectuadas.
P: ¿Qué valores son razonables para u ?
  
La respuesta en la siguiente tabla ( z p , grados
de libertad)
~ ƒ } ‚€‹ ‚‹ ŒŒ} ‚Œ‚€ ‹‹†ƒ }ƒ ‹‹ Œ‹‹ƒ }} ‚}‹ ‚}‹ ‚Œ}} ‚Œƒ‹ }‹} €}ƒ
ƒ Œƒ Œ‹ ŒŒ† ‚‚ € }†} ‚‹ €ƒ ƒ €ƒ Œƒ€ ƒ} ‚‚ƒ € }†€ƒ ‹†
{ | †‹ }€ƒ ‹}} €‹} †} †} Œ} € }€ €‹€ ‚Œ€ €€ ‹ ‚‹ † ‚}
} … ‚ … ‹ … ‚ … ƒ … Œ … † … … …  … ‚ … € … Œ … Œ … ‹ …  …
~  € ŒŒ ‚ƒ ‹ƒ ‚ƒ ‚€ ŒŒ ‹} ‚‚ ‹ ‚‹ ƒ† }ƒ €†‹ ‚}† 
ƒ Œ††} Œ} ‚Œ€ ‚‚€ Œ‚ }†ƒ ‚} ‚‹ ƒ} ‚† ‚} € ‚ƒ Œ} ‚ƒ€ Œ†
{ | Œ‹ ƒƒ ‚} Œ†ƒ }} €} Œ} } †ƒ} ‹} ƒ} }€ Œƒ€ Œ}‹ ‚Œ‹ ‚
† † … … … … …†… … … … … ……
~  ‚ƒ‹ … ‚€€ … Œ‹ƒ … †ƒ … Œ‚ƒ Œ}€} Œ‚† ‚Œƒ ŒŒ} Œ} ‚€ƒ ‚‹  Œ€ƒ Œ€€ Œ€ƒ
‚ ‹‹ ††€ Œ‹ € ‚  Œ‚} †} ‚ Œ†  ŒŒ Œ† ‚€ ‚ƒƒ ‹‹
{ | €‹} ‚‚€ Œ}† ‹† € Œ‚† ‹ƒ †€} †‹†}} †€} ‚‹} Œ†} €} ‹†€ ‚Œ‹ ‹
 † … … … … …†… … … …
~ Œ}‹€ Œ}‹ Œ†‹ ƒ†‹ }ƒ} € … ƒ}} … Œƒ†} €ƒ€ ‚‚ ‚ƒ ‹†€€ }ƒ ‹€ƒ€ €}‹ ‚‹‹
… … … … … ‚
 ‹ƒ ƒ€ ‚†ƒ ƒ Œ} €} } Œ€} ‹€ }} Œ†ƒ Œ‹ †‹ Œ‚‹ ‹ Œƒ‹
{ | ŒŒ ‹†} ‹€ ‹‹ Œ‹ Œ†‹ Œ†‹ Œ‚‹ Œ†‹ Œ†‹ƒ ‹} ‹}} Œ†‹} ‹ƒ} ‹ƒ€ Œ‹ƒ
‹ ƒ … ‹ … … ƒ … … Œ  … Œ … †‹ … € …  … … … Œ … … } …
~  ŒŒ … ŒŒ} ƒ€ ‚€ € ‹ }†€ Œ€ † ‚‚ ‚†€ ‚ ‚‹ ‚‹ ‚ ‹†
€ }‹ Œ‹ ‹€ € Œ† Œ†ƒ† Œ Œ †€ ‚€ ŒŒ} Œ}† ‹ ‚} ‚‚ Œ€†
{ | }} ‚ }€} €ƒ} ‚€ Œ‹ Œ†€ ‚ †ƒ† ‚‹ ‚† Œ‹† }} Œ} ŒŒ€ Œƒ€
†
€… …‚…Œ… …Œ…ƒ…‹…‹……ƒ…†… …ƒ… … …
~   ‡Š‰ ††† ‚}‹ }€‹ ‚€€ ƒ€† Œƒƒ ‚ƒ‹ Œ€†} ‹}ƒƒ ‚‹} Œ††ƒ€ Œ€†ƒ‹ ‹}} ƒ† }†€
Œ}€ †€ Œ} ‚€ ŒŒ ‹†‹ ‚‹ €‹ }€ Œ€ Œ‚† € ƒ † Œ€ƒ Œ‚
{ | ‹ƒ } †‹ ‚} }  } ‚ ‹ ƒ  € € † Œ
‹ } } € € ‹ ‹ Œ  ‚ } … }† … ‹ …
‹…}…ƒ……‚…€… …‹… … …‚…}…Œ…‹ ‹
~ } ‚ƒˆ ‡Š‰ ‚‚}} ‡Š‰ }} Œ†ƒ ‚ ‹‹ Œ‹€ ‚‚‹ƒ ‚‹ }€} Œ} ‚ƒ Œ†† ‹‹ƒ Œ ‚€
‚ †‹ ƒ ƒ Œ ƒ € Œ † †‹ †‹ ‹ †
{ | ‚†† } Œ†}} ‚}ƒ€ Œ†€ ‚€ ƒ‹€ Œ ‚† † †‹ ‚ ƒ€€ € Œƒ ‚ƒ
} € † }…}…€…€…‹…‹……†…}…€…
} … € … ‹ … Œ …  …  … ‚ † ƒ } }} €} } € ‹ 
„| „| „| „| „| „| „| „| „| „| „| „| „| „| „| „|
Si la entrada en la fila z columna N es  La cantidad
u sera menor o igual que  con probabilidad N , para
4 suficientemente grande.

Criterio 4 grande: 4Nrq 5

Ejemplo: Tiramos 200 veces una moneda y medimos


     
118 caras y 82 cruces. u  ,z en la tabla
   <      <
tenemos   para N %y  
  
para N % . Luego la probabilidad de medir un
valor de u menor o igual que el obtenido es casi del
orden del 99%. Demasiado grande. La moneda es
sospechosa, no sirve como generador de secuencias
binarias.

Si tiramos una moneda 20000 veces y encontramos


     
10001 caras y 9999 cruces entonces u 
miramos en la tabla y vemos que u será menor que
el valor obtenido sólo en menos del 1% de los casos,
ano
˛ podemos considerar el resultado aleatorio en ab-
soluto!
El criterio que se adopta es:

Si u es menor del 1% o mayor del 99% se rechaza


el generador Si u está entre el 1% al 5% o del 95%
al 99% se sospecha del generador Si u está entre el
5% al 10% o del 90% al 95% puede sospecharse

Ejercicio: Realizar el o test para el generador
  Y[  !   )Ž  $     D T
L% 3 + 3 3

-Generar secuencia 20000 números



-Obtener o haciendo bines de 2000

-Repetir 4 veces

-Representar la secuencia en un histograma, como


puntos en 2D y en 3D.

Ejercicio: Realizar el o test para el generador de
Fibonacci. Realizar varios tests y hacer bloques de
tres con los numeros de la secuencia.
Apartado teórico

Las variables t q son entradas de un histograma, co-


mo vimos antes la distribución de probabilidad que
siguen es la de Poisson. La probabilidad de que tq
tomen los valores ‘Yq es
g R”“d• * g e
’ x 4 Nq ,—– • j
R  4 
qwv ) ‘ q k 4lk
 *  , j›š 4Nq
Haciendo el cambio de variable ˜™q
t q 4  
N q
 œ x
resulta u w
q v ) ˜ q . Las ˜™q no son independien-
š
tes N ) ˜ ) + H +
š N ˜   .
x x
*   , *
Sea  el espacio p -dimensional de los ˜ ) 3žHHI3Ÿ˜ x , .
Para 4 grande los ˜™q tienen aproximadamente distri-
bución normal, luego puntos en un volumen diferen-
¡  ¡ 
cial IH x de  tienen 6*  probabilidad
*£  aproximada-
  ,j  ,
mente proporcional a \¢] ) + HH + x
œ    ¤  
La probabilidad de que x ) n , donde sólo p
son independientes es
g R ¥§¦ ¤ ¨E©« ª R[)

N B¨w©« ª ¬ * x R[) ,

" ¤
La probabilidad de que u
¥ g R  j  ­ x R[)s®¯¦ [
R )   ° *§* p   , j  3 ¤ j  ,
%  x ¦ ¬ *-* p   , j   ¬ *-* p   , j  ,
*   ,
Esta es la distribución o con p grados de liber-
tad.

¬ * ,  *

  ,
k función gamma
* ,  ± – g e
R ² ´V ³ R<)  V función incompleta de gam-
° 3‘ %
ma
Test Espectral: el generador RANDU

Fue introducido en los 60 por IBM


 *Ÿ   /
, . B
0 1  D )
 (' )  

Veamos que RANDU tiene serios problemas


Test 1 : generamos una secuencia de 1000 números
y hacemos un histograma

100

80

60

40

20

0 5e+08 1e+09 1.5e+09 2e+09


Test 2: representemos la secuencia en 2D

2e+09

1.5e+09

1e+09

5e+08

0
0 5e+08 1e+09 1.5e+09 2e+09
Test 3: representemos la secuencia en 3D

2e+09
1.8e+09
1.6e+09
1.4e+09
1.2e+09
1e+09
8e+08
6e+08
4e+08
2e+08
0 0
0 2e+08
2e+08 4e+08
4e+08 6e+08
6e+08 8e+08
8e+08 1e+09
1e+09 1.2e+09
1.2e+09 1.4e+09
1.4e+09 1.6e+09
1.6e+09 1.8e+09
1.8e+09
2e+09 2e+09
Eligiendo apropiadamente el ángulo, los problemas
de RANDU aparecen

2e+09
1.8e+09
1.6e+09
1.4e+09
1.2e+09
1e+09
8e+08
6e+08
4e+08
2e+08
0
0
2e+08
4e+08
6e+08
8e+08
1e+09 0
1.2e+09 2e+08
1.4e+09 6e+08
1.6e+09 1e+09
1.8e+09 1.4e+09
2e+09 1.8e+09

Este fenómeno se conoce como Efecto Marsaglia


Otros tests
Simulación de Distribuciones Generales

Técnicas para la generación de secuencias de núme-


ros aleatorios distribuidos de manera no uniforme, por
ejemplo de acuerdo con la distibución de Poisson.

Técnica de Rechazo

Generar una secuencia que sigue una función de dis-


*
tribución µ  , .

Algoritmo:

1. Elegir un valor de prueba  “ a partir de un número


aleatorio ¶ )
 * b ·  b ,
 “  b n +  ³  n ¶ )

* 
2. Decidir si se acepta o no: Si µ  “ , y ¶ ¹µ ¸ se
*
acepta µ”¸ 5 µ  , para todo  ,  b n 5  5  b · ³ .
Repetir hasta que se acepte.
Este algoritmo se puede ver como tirar dardos:

f
M

f(x)

x min x max
* ,
De esta manera se puede estimar la integral de µ 
º  ³§»2¼´½ µ *  ,   Á 4 · *  b ·   b n  ,
4 “ ³
³ »¾À¿ * ,
Problemas: Funciona mal si µ  se parece a una
“delta”. Casi nunca se aceptan las propuestas. Si la
función tiene un polo no se puede usar. Si el rango
 f f
de  va desde hasta no se puede usar.
Técnica de Inversión

1. Normalizar la función de distribución, de modo


que sea una función de distribución de probabilidad
(PDF).

2. Integrar analíticamente desde el mínimo  n hasta


un  arbitrario. Esto es la probabilidad de que ocurra
un valor menor o igual que  .

3. Igualar el resultado a un número aleatorio uniforme


y resolver en  .

Es decir, resolver la ecuación


± * 
³ µ V, V 
± ³Ã³ ¾Â * ,  ¶
³¾ µ V V

Ejemplos
* , 
1) Generar  entre 0 y 4 de acuerdo con µ 
 j * ,
 :
± R<)ž¦  š  j  
%³ V V 
¶3 ¶
± F R[)G¦ 
% V V
 
generar  de acuerdo con  ¶ .
f * ,  g R
2) Generar entre 0 e de acuerdo con µ  ³
± g Re² 
%³ V    g R š  
±ÅÄ g R²  ¶3 ³ ¶
% 
  Æ 0Ç *¹  ,
generar  de acuerdo con  ¶ .
 " É
Ejercicio: Generar ángulos È en el intervalo È
* 
de acuerdo con la función de distribución: µ È ,
*CX^9IÊ( X
È + !Ì˛0 È , R<) .
!   !     
Generar 10000 valores usando  y  .
Dibujar los resultados y sobreponer la función de dis-
tribución.
Técnica de Importance Sampling (Muestreo Repre-
sentativo??)
* ,
Reemplazar la función de distribución µ  por una
· * ,
forma aproximada µ  a la que se pueda aplicar la
técnica de inversión.
· * ,
Generar de acuerdo  distribuidos según µ  me-
diante la técnica de inversión y aceptarlos de acuerdo
 * · *
con una probabilidad proporcional a J µ  ,j µ  ,.

a
f (x)

f (x)
La técnica de rechazo es el caso especial en el que
· * ,
µ  es constante ( µ¹¸ )
*  *d
Ejemplo: Generar  de acuerdo con µ  , +
š  
 , j  en el rango #  # . Intentadlo con la
técnica de inversión.

 * ,j · * ,
La idea es que J µ  µ  sea sencillo. Ele-
· * ,   j Zs͹Π* ,  
gimos µ  V  con lo que J +  .
 j ZžÍ¹Î * ,
Aplicamos la técnica de inversión a V  :

Generamos  de prueba:  ¶ )
*d
Decidimos si se acepta: si +  , y ¶ J b · ³ se
b ·  
acepta. En este caso J ³ , en otros casos
puede ser más complicado encontrarlo.

You might also like