O documento discute métodos de Monte Carlo e suas implementações em C, incluindo limitações como erro estatístico. É apresentado um exemplo de estimar área aleatoriamente e implementação de cadeias de Markov para modelar mudança social.
1. Métodos de Monte Carlo (Implementações)
Autor: Ângelo Polotto – Aluno de Iniciação
Científica
Professor orientador: Rafael Frigori Bertolini
2. Sumário
Introdução
Limitações
Exemplo 1
Implementação em Linguagem C
Pré-Definições
Cadeias de Markov
Exemplo 2
Implementação em Linguagem C
3. Introdução:
O intuido da simulação de monte carlo é
trabalhar com modelos (físicos e/ou
matemáticos) que possuem, em alguma de
suas definições, indeterminações, as quais
são definidas aleatoriamente durante a
simulação. Por exemplo, a posição espacial
de uma molécula em um determinado
instante de tempo, em um gás.
4. Um fato que vale ressaltar é que esse tipo de
simulação é totalmente dependente dos
pulsos de clock do computador, já que os
números aleatórios são gerados dessa
forma.
Apesar parecer estranho obtermos resultados
conclusivos usando numeros aleatórios, nós
conseguimos obtê-los tratando as
sequências aleatórias por equações, seja ela
de probabilidade ou de proporcionalidade.
5. Limitações
Nas simulações de Monte Carlo temos o
problema de o valor estimado se aproximar
muito lentamente do exato.
Esse fato acarreta um aumento muito grande
do tempo execução para se conseguir
pequenas diminuições no valor do erro.
Para determinados problemas podemos ter um
tempo maior que 1000 anos!!!
6. Exemplo 1
Uma gama de problemas físicos podem ser
resolvidos usando o Método de Monte Carlo.
Podemos citar a estimativa de quanto tempo irá
durar uma máquina sabendo apenas o tempo
de duração das peças. Tabém é de grande
importância a solução de problemas ligados à
mecânica estatística.
A seguir será mostrado a implementação em
linguagem C para encontrar a área de uma
figura.
7. Problema da Área
Temos a área de um quadrado conhecido (em
azul claro) e a de um desconhecido que
desejamos descobrir a área:
8. Primeiramente dividiremos o quadrado em
pequenos pedaços de forma que podemos
sortear duas coordenadas em x e y:
9. Após o sorteio de cara coordenada, temos que
contar a quantidade de coordenadas que está
contida na figura que queremos descobrir a
área e o numero de pontos total:
10. Com essas informações, vamos aplicar a
seguinte relação de proporcionalidade (Regra
de três):
ÁreaTotal⇔NúmeroTotaldePontos
ÁreaDesconhecida⇔NúmeroContidos
12. Como consequência do fato de, muitas vezes,
não conseguirmos preencher todos os pontos
da área, já que isso tem um custo
computacional muito grande, geramos sempre
um erro estatístico junto com os nossos
resultados.
Para o nosso exemplo anterior, temos que o
erro é dado por:
σ=1/√NúmerodeTotaldePontos
13. Pela fómula anterior é fácil estimar que a
diminuição do erro implica em um aumento
significativo no número de pontos sorteados.
Há uma relação quadrática entre ambos.
Essa análise de erro não se limita a esse
exemplo, extende-se para todos problemas
resolvidos com MC.
Isso é um fato de grande limitação no Método
de Monte Carlo, já que, em certos casos, trazer
o erro para um valor considerável custa um
tempo de simulação muito grande.
14. Implementação em Linguagem C
O exemplo anterior foi implementado em
linguagem C. O procedimento e a figura foram
exatamente as mesmas descritas
anteriormente.
As figuras foram desenhadas em uma matriz
300x400.
A toda a matriz foi preenchida com zero,
sinalização de área fora da figura, e um,
sinalização de área interna à figura.
15.
16.
17.
18.
19. Compilando o código, obtemos na saida :
Vale ressaltar que os valores obtidos para a
Área da figura mudarão a cada execução do
código.
20. Pré-Definições
Antes de iniciar com as Cadeias de Markov
vale definir duas características importantes
para funções aleatórias.
A primeira é o fato destas poderem ser
contínuas, por exemplo, um termômetro que
pudesse ser capaz de medir temperaturas em
todos os periodos de tempo.
A segunda é o fato destas porderem ser
discretas, por exemplo, um termômetro que
medisse a temperatura de 10 em 10 minutos.
21. Cadeias de Markov
As cadeias de Markov são sistemas
estocásticos em que o futuro depende somente
do estado presente e não do passado
As Markovianas são válidas somente para:
o parâmetro n é discreto (ex: tempo)
o espaço de estados E é discreto (coleção de
estados possíveis)
O espaço pode ser finito ou infinito e enumerável.
Vamos considerar o mesmo finito.
O estado inicial do processo ou o espaço de
estados é conhecido.
22. Exemplo 2
Imaginemos uma cidade que possui somente
três classes sociais (A, B e C), em que de
tempos em tempos a probabilidade de alguém
passar de uma classe para outra é constante e
só depende da classe atual.
Para esse problema, consideraremos a
seguintes matrizes:
Pinicial=
[3/8
4/8
1/8] T=
[1/2 1/4 0
1/2 1/2 1/2
0 1/4 1/2] Pfinal=
[?
?
?]
23. Onde Pinicial é a distribuição da população
entre as três classes inicialmente, T é a matriz
de transição, ou seja, armazena a
probabilidade de transição entre as classes, e
Pfinal é a matriz a ser calcula.
Para impletar visualizar a mudança da
distribuição da população entre as classes em
cada preriodo de tempo, a matriz Pfinal ganhou
uma dimensão a mais para armazenar os
valores antigos.
27. Compilando o código, obtemos na saida :
É de se observar que após um determinado
tempo a os valores não se altera, ou seja,
chegamos no ponto de equilíbrio da equação.
29. Referências
Landau, David P. - Guide to Monte Carlo
Simulations in Statistical Physics.
www.mec.ita.br/~denise/teaching/.../aula03-Ca
deias_de_Markov.pdf
- Instituto Tecnológico de Aeronáutica Divisão
de Engenharia Mecânica-Aeronáutica MOQ-12
Cadeias de Markov, - acesso em 02/11/2011.
Santos, Reginaldo J. - Cadeias de Markov,
Departamento de Matemática-ICEx,
Universidade Federal de Minas Gerais.