Vous êtes sur la page 1sur 14

Monte Carlo

Diogo F. F. de Melo

Monte Carlo (MC) é um nome genérico dado a todo um conjunto de


algorı́timos baseados no uso de números aleatórios. Estes algorı́timos tem
aplicações nas mais diversas áreas de conhecimento e reside na Mecânica
estatı́stica a mais natural delas. Nesta seção introduziremos alguns dos
conceitos e idéias usados na maioria destes métodos através de três exemplos.
Suponha que queiramos calcular o valor do operador linear

Rb
I(f ) = f (x)dx
a
(1)

Usaremos, para ilustrar


( numericamente nossa discursão, a = 0, b = 2
1 , se x ≤ 1
e a função exemplo f (x) = .
x2 , se x > 1
É claro que o valor desta integral pode ser calculado diretamente de
forma exata

R1 R2 7 10
I(f ) = dx + x2 dx = 1 + 3 = 3 = 3.3333...
0 1
(2)

Iremos calcular numericamente o valor desta integral usando três al-


gorı́timos diferentes, em cada um deles idéias importantes sobre o Monte
Carlo serão debatidas.

1
Exemplo 1 : O erro estatı́stico do acerto

Neste exemplo vamos mostrar uma maneira simples de usar variáveis


aleatórias para calcular I(f ) e demonstrar como estimar e erro envolvido.
O método descrito abaixo é conhecido como ”erro e acerto” (ou ”hit and
miss”) e constitui uma das aplicações mais simples do MC.

Considere uma função g(x) ≥ f (x) ∀ a ≤ x ≤ b, onde conhecemos


Rb
exatamente o valor de I(g) = g(x)dx neste intervalo. A função mais
a
simples que pode ser tomada é g(x) = 4, de modo que I(g) = 8.

Vamos sortear, ao acaso, N pontos (x, y) ∈ <2 uniformemente dis-


tribuı́dos no aberto U = (a, b)x(0, g(b)). Procedendo dessa forma, o número
P de pontos com coordenadas (x, y ≤ f (x)) será proporcional a área sob a
curva y = f (x), e assim podemos escrever a relação:

P I(f ) P
N = I(g) ⇒ I(f ) = N I(g) ≡ pN I(g)

(3)

Aqui estamos cometendo um erro estatı́stico. Existe uma probabili-


dade não nula de, ao fazermos N (finito) sorteios, todos os pontos estarem
contidos em um um subconjunto do aberto U , o que nos conduziria a um
resultado equivocado para I(f ). De fato, a relação acima só é estritamente
válida no limite em que N → ∞. Por isso temos que nos procupar em
escolher N suficientemente grande para garantirmos uma boa confiabilidade
dos resultados, porém pequeno para pouparmos tempo computacional. A
melhor maneira de estimar o valor de N é acompanharmos o valor de IN (f ),
isto é, o valor de I(f ) para N sorteios. Para tal, precisamos apenas acom-
panhar a evolução de pN com N . Idealmente terı́amos de comparar pN , para

2
um dado N finito, com seu valor em N → ∞, pN →∞ , porém, não conhece-
mos de atemão este valor. Uma boa estimativa para pN →∞ é o valor médio
hpN i definido por:

N
P
hpN i = pM
M =1
(4)

2 ,
De posse de hpN i podemos calcular o desvio quadrático médio, σN

D E D E ­ ®
2 = (δp )2 = (p − hp i)2 = p2 − hp i2
σN N N N N N

(5)

O valor de σN é então uma boa estimativa para o erro cometido para


um dado valor de N . Para cada problema é necessário fazermos uma estima-
tiva de bons valores para N, acompanhado-se a convergência das grandezas
de interesse e de seus desvios quadráticos médios com o aumento do número
de sorteios.

A tebela a seguir reune os ressultados das simulações, que também


podem ser visualizados na figura 1:

A estatı́stica nos fornece fudamentamentos para a discursão acima.


Usando uma nomenclatura aproriada, considere a variável aleatória (x, y) ∈
<2 , identificamos o aberto U como sendo o conjunto universo ou população
para esta variável aleatória. Vamos definir uma função que assume o valor 1
caso (x, y ≤ f (x)) e 0 caso contrário, de forma que pN é a média desta função
sobre N pontos em U . Quando sorteamos N valores para esta variável esta-
mos tomando uma amostra. Queremos então responder a seguinte pergunta:
O quão grande deve ser a amostra para que os valores médios das grandezas
estimadas através dela estejam próximos dos valores no universo U ? A

3
N IN σN
1 8.000 0.000000
2 8.000 0.000000
4 6.000 0.866025
8 5.000 1.599358
16 5.500 1.200836
32 4.000 1.020053
64 3.375 1.067216
128 3.187 0.974775
256 3.187 0.755103
512 3.281 0.562494
1024 3.343 0.398844
2048 3.335 0.282673
4096 3.394 0.201429
8192 3.371 0.145124
16384 3.336 0.103090
32768 3.329 0.072144
65536 3.333 0.057241

Table 1:

4
8

5
IN

0
1 10 100 1000 10000
N

Figure 1: Acompanhamento de IN em função de N , o erro é estimado por


σN . A linha tracejada indica o valor exato de I(f ).

resposta para esta pergunta pode ser encontrada em qualquer livro de es-
tatı́stica básica: A média tomada em uma amostra converge para a media
no universo com o tamanho e tem um erro estimado por σN . Uma boa
referência é [].

Exemplo 2 : Medindo médias como se fossem medidas

Neste exemplo vamos mostrar como calcular I(f ) a partir de médias


de varáveis aleatórias de forma direta. Vamos aperfeiçoar o método tornando-
o mais eficiente e generalizar o procedimento para uma distribuição não
uniforme.

Sortiemos, ao acaso, N valores para x unifomemente distribuı́dos em


a ≤ x ≤ b. Podemos ordenar os valores soteados de modo e formar a
seqüência {xn } de N valores para a variável x. Se cada ponto xn ocupar um
espaço dxn , podemos evalidar a integral, de forma aproximada, fazendo

5
Rb N
P
I(f ) = f (x)dx ≈ f (xn )dxn
a n=1
(6)

É claro que para uma distribuição uniforme podemos fazer a identi-


ficação dxn = b−a
N , de modo que

Rb b−a
N
P
f (x)dx ≈ N f (xn )
a n=1
(7)

Ou seja, tranformamos o problema de calcular a integral de f (x) em


calcular a média de f (x) no conjunto {xn }.

Podemos tornar o algorı́timo mais eficaz a partir do estudo das pro-


priedades de f (x). Olhando para nossa função exemplo vemos que ela exibe
uma mudança de comportamento em x = 1, isto nos motiva a dividir nossa
atenção em valores de x abaixo e acima deste ponto. Para tal, vamos definir
os operadores

R1 R2
I1 (f ) = f (x)dx e I2 (f ) = f (x)dx
0 1

(8)

Através do algorı́timo descrito acima, calculamos o valor de cada um


dos operadores. O valor para I(f ) é dado pela soma destes dois operadores.
A partir das simlulações vemos que I1 (f ) converge muito mais rapidamente
do que I2 (f ). Se escolhermos um número de sorteios N1 e N2 , com N1 ¿ N2 ,
para calcularmos I1 (f ) e I2 (f ), respectivamente , precisaremos de um tempo
computacional menor para a calcular a integral I(f ) com a mesma preciso

6
N I σ I1 σ1 I2 σ2
1 2.000000 0.000000 1.000000 0.000000 1.000000 0.000000
2 2.000000 0.000000 1.000000 0.000000 1.000986 0.000484
4 2.000000 0.000000 1.000000 0.000000 1.117864 0.048137
8 2.000000 0.000000 1.000000 0.000000 1.366191 0.132228
16 2.609284 0.277006 1.000000 0.000000 1.872894 0.319662
32 3.218003 0.440895 1.000000 0.000000 2.174680 0.383804
64 3.267384 0.453601 1.000000 0.000000 2.267497 0.357891
128 3.384559 0.380138 1.000000 0.000000 2.334187 0.297313
256 3.316419 0.298924 1.000000 0.000000 2.307835 0.230882
512 3.281257 0.216785 1.000000 0.000000 2.287041 0.166886
1024 3.313491 0.154862 1.000000 0.000000 2.309410 0.119841
2048 3.349640 0.113943 1.000000 0.000000 2.333497 0.088075
4096 3.320305 0.083050 1.000000 0.000000 2.320595 0.063823
8192 3.318071 0.058567 1.000000 0.000000 2.324123 0.045587
16384 3.313480 0.042227 1.000000 0.000000 2.325878 0.027900
32768 3.322556 0.062104 1.000000 0.000000 2.330123 0.028826
65536 3.324231 0.091367 1.000000 0.000000 2.329540 0.083290

Table 2:

anterior ou, de outra forma, para o mesmo total de sorteios N = N1 + N2


garantimos uma precisão maior. Em nosso caso I1 (f ) é exato para N1 = 1.
Na tabela asseguir est o resumo dos dados obtidos para I, I1 , e I2 .

Este resultado nos conduz a seguinte generalização: Divida o intervalo


a ≤ x ≤ b em L subintervalos dijuntos ∆xl , (l = 1, 2, 3...L). Em cada
R
subintervalo ∆xl , podemos definir o operador Il (f ) = ∆xl f (x)dx, de modo
L
P
que I(f ) = Il (f ). Realizamos para cada integral o mesmo algorı́timo
l=1
descrito acima realizando Nl sorteios para cada subintervalo. O valor de
I(f ) é dado por

7
L
P L
P Nl
∆xl P
I(f ) = Il (f ) = N l
f (xnl )
l=1 l=1 nl =1

(9)

Vemos reler a equação acima da seguinte maneira: Se ao invés de


tomarmos uma distribuição uniforme, tomassemos uma distribuição w(x)
tal que a probabilidade de encontarmos x em ∆xl seja dada por w(x ∈
∆xl )∆xl = N N , onde N é o número total de sorteios realizados dentro de
l

todo o intervalo a ≤ x ≤ b. Escolhendo a distribuição desta forma não


precisariamos mais nos preocupar com a soma nos subintervalos, apenas
com uma soma em todos os sorteios. De fato, é possı́vel reorganizar os
PP
somatórios, trocando as variáveis de soma {l, nl } → {n} e usando N =
l nl
para obtermos:

à ! à !
P Nl
L P N
P
∆xl 1
N f (xnl )
l
= N w−1 (xn )f (xn )
l=1 nl =1 unif orme n=1 w(x)

(10)

Nl
Onde usamos N w(xn ) = ∆xl se xn ∈ ∆xl .

Se agora tomarmos o limite L → ∞ e o tamanho de cada intervalo de


tal forma que a probabilidade de sortearmos dois valores para x no mesmo
intervalo seja muito pequena, isto é, (w(xl )∆xl )2 → 0, teremos w(xn ) =
w(xn ∈ ∆xl ), de forma que cada intervalo é sorteado apenas uma vez.
Podemos identificar w−1 (xn ) como sendo o ”peso” de cada valor xn para o
somatório: intervalos no com menos chance de serem sorteados contribuem
de forma mais significativa para o cálculo de I(f ).

Resumindo:

8
Rb 1
N
P
I(f ) = f (x)dx = N f (xn )w−1 (xn )
a n=1

(11)

Onde x obedece a distribuição w(x) nesta equação.

Uma conseqüência direta do resultado acima é que se quisermos cal-


cular o valor médio de f (x) em a ≤ x ≤ b, teremos

Rb 1
N
P 1
N
P
hf (x)i = f (x)w(x)dx = N f (xn )w(xn )w−1 (xn ) = N f (xn )
a n=1 n=0

(12)

Para o nosso exemplo, a escolha de w(x) feita com um toque de


esperteza, motivado pelos resultados obtidos no cálculo dos operadores I1 (f )
e I2 (f ). Nos intervalo do eixo x onde a função f (x) apresenta maiores
variações tem convergência mais lenta. Assim vamos calcular I1 (f ) usando
uma distribuição uniforme, pois a convergência se mostrou muito boa (note
f 0 (x) 2x
que f 0 (x) = 0 neste intervalo), para I2 (f ) usaremos w(x) = f (2)−f (1) = 3 ,
de tal sorte que quanto maior a variação de f (x) em um dado intervalo
maior a densidade de pontos sorteados dentro dele. Para obter uma variável
aleatória x com uma distribuição w(x) em [x0 , x1 ] basta ver que a y = W (x)
é uma variável aleatória uinformemente distribuı́da em [0, 1], onde W (x) é
a distribuição acumulada de x. Tomamos então:

Rx
W (x) = w(x0 )dx0 e fazemos x = W −1 (y)
x0

(13)

9
-4
2×10

-4
2×10
w(x)

-4
1×10

-5
5×10

0
0,5 0,75 1 1,25 1,5 1,75 2 2,25 2,5
x

Figure 2: Freqüência relativa de x. Foram realizados 109 sorteios e o inter-


valo ∆x = 10−4 .


Para a w(x) desejada usamos x = 3y + 1 onde y é uma varável
aleaória uniformemente distribuida em [0,1]. A freqüência relativa dos valres
sorteados para x obtidos através da descrição acima estão na figura 2. A
tabela a seguir resume os resultados para I2 .

Exemplo 3: Da porta de saı́da se ve o portão de entrada

Neste último exemplo iremos mostrar como uma variável estocástica


regida por uma determinada dinâmica, como o Random Walker por exemplo,
está relacionada a uma distribuição e como usá-la para calcular I(f ).

Vamos dividir o intervalo a ≤ x ≤ b em L subintervalos dijuntos


∆xl , (l = 1, 2, 3...L) e chamar genéricamente de xl qualquer ponto dentro
do subintervalo ∆xl . Vamos definir também uma dinâmica local para para
a variável x, por exemplo, a dinâmica do Randon Walker (RW) determina
que a cada instante de tempo t ocorra uma das duas transições: xl ⇒ xl+1

10
N I2 σ2
1 1.500000 0.000000
2 1.501108 0.000639
4 1.612121 0.045640
8 1.795062 0.108627
16 2.080287 0.207458
32 2.229768 0.230724
64 2.289200 0.209037
128 2.324709 0.172461
256 2.314852 0.133523
512 2.303915 0.096504
1024 2.317794 0.069463
2048 2.330987 0.051096
4096 2.325517 0.036492
8192 2.328328 0.024051
16384 2.329859 0.034173
32768 2.331912 0.055338
65536 2.331487 0.076801

Table 3:

11
com probabilidade p ou xl ⇒ xl−1 com probabilidade 1 − p, com condições
de contorno propriadas. Esta evolução no tempo é chamada de caminhada.

Podemos construir a seqüência {xt } de T pontos, onde xt é o valor


da variável x no instante de tempo t. Os valores possı́veis para xt per-
tencem ao conjunto {xl }. Para T suficientemente grande, podemos con-
struir a freqüência relativa do ponto xl no conjunto {xt }, isto é, a fração
de vezes um dado ponto é vizitado ao longo aa caminhada. Assim temos
a distribuição de probabilidade da variável {xl }, a partir do conjunto {xt }
formado pela variável estocástica xt .

Se relermos as afirmações do prarágrafo acima no sentido contrário


veremos que {xt } é um conjunto de valores sorteados para a variável x que
assume o valor xl com probabilidade w(xl )∆xl . Sendo assim, segundo os
resultados do exemplo anterior,

Rb 1
T
P
I(f ) = f (x)dx = T f (xt )w−1 (xt )
a t=1

(14)

Para o RW w(xt ) → distribuição Gaussiana.

Precisamos tomar alguns cuidados para evitar “vı́cios” na estatı́stica


do conjunto {xt }. É importante realizarmos o mesmo experimento partindo
de valores diferentes de xt=0 , e realizar uma média sobre estes experimento,
de modo que nenhum estado seja privilegiado. É também importante re-
lizarmos medias espacadas no tempo, ou seja, ao invés de guardarmos o valor
da variável x para todo t, guardamos os valores em intervalos de tempo τ , for-
mando o conjunto {xt0 , xt0 +τ , xt0 +2τ , xt0 +3τ , xt0 +4τ ...}, de modo a diminuir
a correlação entre os estados. A tabela a seguir mostra o resultados obitidos
por esse algorı́timo.

É claro que a construção de w(xt ) não é simples e por si só pode


constituir um problema bem maior que o de calcular I(f ) por outro método.

12
N I2 σ2
1 1.740107 0.937136
2 1.553043 0.766028
4 1.646441 0.726434
8 1.505007 0.632295
16 1.597376 0.592383
32 1.536335 0.596323
64 1.541496 0.545564
128 1.616335 0.570253
256 1.728196 0.604595
512 2.073321 0.605721
1024 2.213573 0.660169
2048 2.397759 0.733637
4096 2.425619 0.726349
8192 2.376566 0.691343
16384 2.424335 0.661774
32768 2.389643 0.612018
65536 2.308398 0.513939
131072 2.260757 0.420794
262144 2.314683 0.326960
524288 2.322845 0.246980

Table 4:

13
Estamos interessados aqui nas conseqüéncias deste resultado. Suponha que
por algum motivo não conheçamos a w(x), mas apenas uma regra para a
dinâmica da variável x, como a definida para o RW. Se estivermos interes-
sados em calcular o valor médio de f (x), não precisamos conhecer a forma
de w(x), como foi mostrado no exemplo anterior,

Rb 1
T
P
hf (x)i = f (x)w(x)dx = T f (xt )
a t=0

(15)

14

Vous aimerez peut-être aussi