Você está na página 1de 4

37.

TCNICAS MONTE CARLO


Tcnicas de Monte Carlo so muitas vezes a nica forma prtica de avaliar integrais difceis ou para provar variveis aleatrias regidas por funes de densidade de probabilidade complicadas. Aqui descrevemos uma variedade de mtodos para testar alguns comumente ocorrem densidade funes de probabilidade. 37.1. Amostragem da distribuio uniforme Monte Carlo amostragem mais ou tcnicas de integrao assumir um nmero "aleatrio gerador, que gera uniformes valores estatisticamente independentes no aberto meio intervalo [0, 1); para revises ver, por exemplo, [1,2]. Uniformes geradores de nmeros aleatrios esto disponveis em bibliotecas de software, tais como CERNLIB [3], CLHEP [4], e ROOT [5]. Por exemplo, para alm de um gerador de base congruential Trandom (ver abaixo), raiz fornece mais trs rotinas sofisticadas: TRandom1 implementa o gerador RANLUX [6] com base no mtodo por L uscher, e permite ao usurio selecionar diferentes nveis de qualidade, trocando qualidade com velocidade; TRandom2 baseado no gerador Tausworthe maximamente equidistributed combinados por L'Ecuyer [7]; o gerador TRandom3 implementa o algoritmo de Mersenne twister de Matsumoto e Nishimura [8]. Todos os algoritmos produzir uma sequncia peridica de nmeros, e obter valores efetivamente aleatrios, no se deve usar mais do que um pequeno subconjunto de um nico perodo. O algoritmo de Mersenne twister tem um perodo extremamente longo de 219937-1. O desempenho dos geradores pode ser investigada com testes como DIEHARD [9] ou TestU01 [10]. Muitos comumente disponveis geradores congruentes falhar estes testes e muitas vezes tm sequncias (tipicamente com menos de 232 perodos), que podem ser facilmente esgotada em computadores modernos. Um perodo curto um problema para o gerador Trandom na raiz, que, no entanto, tem a vantagem de que o seu estado armazenado em uma palavra de 32 bits nica. O geradores TRandom1, TRandom2, ou TRandom3 tm perodos muito mais longos, com TRandom3 sendo recomendado pelos autores raiz como proporcionar a melhor combinao de velocidade e boas propriedades aleatrias. Para mais informaes consulte, por exemplo, ref. 11. 37.2. Mtodo de transformao inversa Se a funo de densidade de probabilidade desejada f (x) no intervalo de - <x <, sua funo de distribuio cumulativa (expressando a probabilidade de que x a) dada por Eq. (35,6). Se for escolhida uma densidade de probabilidade com f (a), ento a probabilidade integrada at um ponto, F (a), ele prprio uma varivel aleatria que ir ocorrer com probabilidade uniforme densidade em [0, 1]. Suponhamos que u gerado de acordo com um uniformemente distribudo em (0, 1). Se x pode assumir qualquer valor, e ignorando os pontos finais, podemos encontrar um nico x escolhido do p.d.f. f (x) para um dado u se definir u = F (x) (37,1) Desde que possamos encontrar uma inversa de F, definida por x = F-1 (u). (37.2)

37. Tcnicas de Monte Carlo


Este mtodo apresentado na Fig. 37.1a. mais conveniente quando se pode calcular atravs mo da funo inversa da integral indefinida de f. Este o caso por algumas comuns funes f(x) tal como exp (x), (1 - x) n, e de 1 / (1 + x2) (Cauchy ou Breit-Wigner), embora no necessariamente produzir o mais rpido gerador. Bibliotecas padro contm software para programar este mtodo numericamente, trabalhando a partir de funes ou em histogramas uma ou mais dimenses, por exemplo, o pacote de UNU. RAN [12], disponvel em ROOT. FIg. 37.1... A utilizao de um nmero aleatrio u escolhido a partir de uma distribuio uniforme (0,1) para encontrar um x nmero aleatrio de uma distribuio com funo de distribuio cumulativa F (x). Para uma distribuio discreta, F (x) tm um salto descontnuo de tamanho f (xk) em cada xk permitido, k = 1, 2, . Escolha u a partir de uma distribuio uniforme em (0,1), como antes. Encontrar tal que xk Eq (37.3) ento xk o valor que buscamos (nota: F (x0) 0). Este algoritmo est ilustrado na fig. 37.1b. 37.3. Aceitao-rejeio mtodo (Von Neumann) Muito comumente uma forma analtica para F (x) desconhecida ou complexa demais para trabalhar, de modo que a obteno de uma relao inversa como na Eq.. (37.2) impraticvel. Supomos que, para qualquer dado valor de x, a probabilidade funo densidade f (x) pode ser calculada, e ainda que se sabe o suficiente sobre f (x) que podemos coloc-lo inteiramente dentro de uma forma que uma distribuio de tempos de C facilmente gerados h (x), como se ilustra na fig. 37.2. Isto , Ch (x) f (x) deve manter para todo x. Fig.37.2 Ilustrao do mtodo de aceitao-rejeio. Pontos aleatrios so escolhido dentro da figura superior delimitadora e rejeitado se a ordenada excede f (x). A figura inferior ilustra um mtodo para aumentar a eficincia (ver texto). Freqentemente h (x) uniforme ou uma soma normalizada de distribuies uniformes. Note-se que tanto a f (x) e h (x) deve ser normalizada para a unidade de rea, e, por conseguinte, o constante de proporcionalidade C> 1. Para gerar f (x), em primeiro lugar gerar um segundo candidato x de h (x). Calcular f (x) e da altura do envelope C h (x); produza u e teste se uC h (x) f (x). Se assim for, aceitar x, se no rejeitar x e tente novamente. Se considerarmos x e uC h (x) como abscissa e ordenada de um ponto num grfico bidimensional, estes pontos sero preencher toda a rea de C h (x) de uma maneira suave, ento aceitamos aqueles que caem por f (x). A eficincia a razo entre as reas, o que deve ser igual a 1 / C, pelo que devemos C manter to prximo quanto possvel para 1,0. Portanto, tente escolher C h (x) para ser o mais prximo f (x) como convenincia dita, como na parte inferior da fig. 37.2.

37.4. Algoritmos Algoritmos para a gerao de nmeros aleatrios pertencentes a muitas distribuies diferentes so dados, por exemplo, por Press [13], Ahrens e Dieter [14], Rubinstein [15], Devroye [16], Walck [17] e Gentil [18]. Para muitas distribuies, existem algoritmos alternativos, variando em complexidade, preciso, velocidade e. Para o tempo de aplicaes crticas, esses algoritmos podem ser codificado em linha para remover a sobrecarga significativa frequentemente encontrados em fazer funo chamadas. Nos exemplos abaixo, usamos a notao para as variveis e parmetros apresentados na Tabela 35.1. Variveis chamadas de "u" so consideradas independentes e uniforme em [0,1). Denominadores deve ser verificado para ser diferente de zero quando relevante. 37.4.1. Decaimento exponencial: Esta uma aplicao comum do mtodo de transformao inversa, e utiliza o fato de que se u for distribuda uniformemente no intervalo [0, 1], em seguida, (1 - u) tambm. Considere um exponencial f(t) =1/tauexp(-t/tau) que est truncado, de modo a situar-se entre dois valores, a e b,e normalizada para a rea de unidade. Para gerar tempo de decaimento t de acordo com este pdf, primeiro vamos alfa=exp(-a/tau) e beta=(-b/tau) ento geramos u e temos t=(-tauln(beta+u(alfa-beta))). Para (a,b) = (0,infinito), teremos simplesmente t=-tau.ln(u) 37.4.2. Direo isotrpico em 3D: Isotropia, a densidade proporcional ao ngulo slido, o elemento diferencial de que d(omega)=d(cos teta) dfi. Da cos teta uniforme (2u1 - 1) e um uniforme (2 pi u2). Para gerao alternativa de um seno A e cos A, ver prxima subseo. 37.4.3. Seno e co-seno do ngulo aleatrio em 2D: Gerar U1 e U2. Ento v1 = 2u1 - 1 uniforme em (-1,1) e v2 = u2 uniforme em (0,1). Calcular r2 = v21 + v22. Se r2> 1, comear de novo. Caso contrrio, o seno (S) e cosseno (C) de um ngulo aleatrio (isto , uniformemente distribudo entre zero e 2 pi) so dadas por S = 2v1v2/r2 e C = (v21 - v22) r2 /. (37.5) 37.4.4. Distribuio de Gauss: Se u1 e u2 so uniformes em (0,1), ento z1 = sin (2 pi u1) Raiz (-2 ln u2) e z2 = cos (2 pi u1) Raiz (-2 ln u2) (37,6) so independentes e Gaussian distribudo com mdia 0 e sigma = 1. Existem muitas variantes deste algoritmo bsico, que pode ser mais rpido. Por exemplo, a construir v1 = 2u1 - 1 e v2 = 2u2 - 1, que so uniformes em (-1,1). Calcule r2 = v21 + v22, e se r2> 1 recomear. Se r2 <1, uniforme em (0,1). Ento, z1 = v1raiz (-2 ln r2 / r2) e z2 = v2raiz (-2 ln r2/r2) (37,7) so nmeros independentes escolhidos a partir de uma distribuio normal com mdia 0 e varincia 1. z'i = + sigmazi distribui com mdia e varincia sigma2. Para uma gaussiana multivariada com uma n n matriz de covarincia V, pode-se comear pela gerao de n variveis independentes gaussianos, { nablaj }, com mdia 0 e varincia 1 cpom feito acima.

Ento, o novo conjunto {xi} obtido como xi = mii + SOMAj (LijNABLAj), onde mii a mdia de xi, e Lij so os componentes de L, a matriz inferior triangular nico que satisfaz V = LLT. A matriz L pode ser facilmente calculada pela seguinte relao recursiva (mtodo de Cholesky): EQ. 37.8, 37.8b 37.9 e, portanto, as variveis correlacionadas gaussianos so gerados como x1 = 1 + sigma1nabla1, x2 = 2 + + rhosigma2nabla1 Raiz (1 - rho2) sigma2nabla2. 37.4.5. ETA2 distribuio (n): Para gerar uma varivel aps a distribuio ETA2 para n grau de liberdade, use a distribuio Gama com k = n / 2 e lambida = 1/2, utilizando o mtodo de Sec. 37.4.6. 37.4.6. Distribuio gama: Todos os algoritmos so dados os seguintes lambida = 1. Para lambida Diferente de 1, dividir o nmero x resultante aleatoriamente por lambida Se k = 1 (a distribuio exponencial), aceite -ln x = u. (Veja tambm Sec. 37.4.1.) Se 0 <k <1, inicializar com v1 = (e + k) / e (e = 2,71828 com ... sendo o log natural base). Gerar u1, u2. Definir v2 = v1u1. Caso 1: v2 1. Define x = v21 / k. Se u2 e-x, ceitar x a e parar, seno reiniciar gerando novo u1, u2. Caso 2: v2> 1. Define x = -ln ([v1 - v2] / k). Se u2 xk-1, aceitar x e parar, seno reiniciar gerando nova u1, u2. Note-se que, para k <1, a densidade de probabilidade tem um plo em x = 0, de modo que os valores de retorno de zero, devido a estouro deve ser aceito ou no tratada.

Você também pode gostar