Você está na página 1de 64

Método de Monte Carlo e Aplicações

Fernando Andrade

Instituto de Biociências de Botucatu


Universidade Estadual Paulista

. . . .... .... .... . . . . .


1 Introdução
Incentivos
Histórico
2 Geração de Números Aleatórios
Distribuição Uniforme
3 Alguns Métodos para GNA’s
4 Método de Monte Carlo
5 Um pouco sobre Python
Script do Método Congruencial Linear
6 Aplicações do Método de Monte Carlo
Simulação através do Python
7 Outras áreas de aplicação do método
Computação Gráfica
Financias
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 2 / 34
Introdução Incentivos

“Muitas vezes, mesmo construindo um modelo probabilístico, certas ques-


tões não podem ser resolvidas analiticamente e necessitaremos de recor-
rer a estudos de simulação para obter aproximações de quantidades de
interesse.
De modo bastante amplo, estudos de simulação tentam reproduzir num
ambiente controlado o que se passa com um problema real.
Para os propósitos dessa apresentação, a solução de um problema real
consistirá na na simulação de variáveis aleatórias”
Morettin, P.A; Bussab, W.O.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 3 / 34
Introdução Histórico

Um pouco sobre o surgimento


O método de Monte Carlo apareceu, pela primeira vez no artigo de
autoria conjunta de John Von Neuman e Stanislaw Ulam “Statistical
methods in neutron diffusion” em 1947, no qual propuseram simulações
computacionais dentro do projeto Manhattan, durante a Segunda Guerra
Mundial.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 4 / 34
Introdução Histórico

Um pouco sobre o surgimento


O método de Monte Carlo apareceu, pela primeira vez no artigo de
autoria conjunta de John Von Neuman e Stanislaw Ulam “Statistical
methods in neutron diffusion” em 1947, no qual propuseram simulações
computacionais dentro do projeto Manhattan, durante a Segunda Guerra
Mundial.

Figura: John Von Neuman (à esquerda) e Stanislaw


.
Ulam (à direita)
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 4 / 34
Introdução Histórico

Tal projeto, era responsável pela criação das primeiras bombas nucleares.
O objetivo, diante do processo da criação das armas nucleares em ques-
tão, era simular probabilidades relacionadas com o coeficiente de difusão
do nêutron em certos materiais.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 5 / 34
Introdução Histórico

Tal projeto, era responsável pela criação das primeiras bombas nucleares.
O objetivo, diante do processo da criação das armas nucleares em ques-
tão, era simular probabilidades relacionadas com o coeficiente de difusão
do nêutron em certos materiais.
Após a extinção do projeto Manhattan, Ulam e Neuman, com inspiração
aos cassinos de Monte Carlo em Mônaco, que por sua vez, tinham a
natureza da aleatoriedade e repetitiva, formalizaram, em 1949, o nome
“Método de Monte Carlo”.

Figura: Cassino de Monte Carlo em Mônaco


. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 5 / 34
Geração de Números Aleatórios

Geração de Números Aleatórios

Para qualquer simulação de Monte Carlo é necessário gerar números ale-


atórios. Um número aleatório representa o valor de uma variável aleatória
uniformemente distribuída.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 6 / 34
Geração de Números Aleatórios Distribuição Uniforme

Apenas relembrando...
Distribuição Uniforme: Seja X uma variável aleatória. Dizemos que
X possui distribuição uniforme contínua entre a e b e, denotamos por
X ∼ U(a, b), se sua função densidade de probabilidade for

 1 , a⩽x ⩽b
f (x, a, b) = b − a

0, caso contrário
e, por consequência, sua função de probabilidade é


 0, x ⩽a

x − a
F (x) = P(X ⩽ x) = , a⩽x <b

 b−a

1, x ⩾b
E seus momentos são:
a+b (b − a)2
E (X ) = e Var (X ) =
2 12 . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 7 / 34
Geração de Números Aleatórios Distribuição Uniforme

Do ponto de vista modelador, a distribuição uniforme não é tão


relevante. Entretanto, do ponto de vista da simulação
computacional, tem seu valor, significantemente, reconhecido.
NA’s da distribuição Uniforme são
Usados em diversas aplicações de Monte Carlo;
Empregados em otimização estocástica;
Aplicados em Jogos digitais.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 8 / 34
Geração de Números Aleatórios Observações

EXEMPLO
Lancemos uma moeda honesta três vezes e consideremos f (x) tal que
{
1, ocorrer CARA
f (x) =
0, ocorrer COROA

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 9 / 34
Geração de Números Aleatórios Observações

EXEMPLO
Lancemos uma moeda honesta três vezes e consideremos f (x) tal que
{
1, ocorrer CARA
f (x) =
0, ocorrer COROA

Pelo Princípio Fundamental da Contagem, o total de resultados é igual


a 8, sendo eles
000 001 010 011 100 101 110 111

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 9 / 34
Geração de Números Aleatórios Observações

EXEMPLO
Lancemos uma moeda honesta três vezes e consideremos f (x) tal que
{
1, ocorrer CARA
f (x) =
0, ocorrer COROA

Pelo Princípio Fundamental da Contagem, o total de resultados é igual


a 8, sendo eles
000 001 010 011 100 101 110 111

Cada número acima, pode ser visto como um número binário e,


portanto, conseguimos converto-los para o sistema decimal.
Tomemos 111, então
(111)2 = 1 × 22 + 1 × 21 + 1 × 20 = (7)10
Donde, conseguimos tomar a sequência de números aleatórios
0, 1/7, 2/7, 3/7, 4/7, . . . , 1 . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 9 / 34
Geração de Números Aleatórios Observações

Agora, consideremos o lançamento da moeda efetuado 10 vezes. Como


a moeda é honesta, então segue que a probabilidade de cada sequência
binária distinta ocorra é 1/210 = 1/1024.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 10 / 34
Geração de Números Aleatórios Observações

Agora, consideremos o lançamento da moeda efetuado 10 vezes. Como


a moeda é honesta, então segue que a probabilidade de cada sequência
binária distinta ocorra é 1/210 = 1/1024.
Por intuição, dizemos que a sequência

1111111111

aparenta ser menos aleatória em relação, quando tomamos

1010101010

que, de maneira análoga, aparenta ser menos aleatória do que a sequência

0110111001

Algo que é um absurdo, pois todas as sequências têm a mesma probabi-


lidade de ocorrência.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 10 / 34
Geração de Números Aleatórios Observações

Agora, consideremos o lançamento da moeda efetuado 10 vezes. Como


a moeda é honesta, então segue que a probabilidade de cada sequência
binária distinta ocorra é 1/210 = 1/1024.
Por intuição, dizemos que a sequência

1111111111

aparenta ser menos aleatória em relação, quando tomamos

1010101010

que, de maneira análoga, aparenta ser menos aleatória do que a sequência

0110111001

Algo que é um absurdo, pois todas as sequências têm a mesma probabi-


lidade de ocorrência.
Desta maneira, a noção de aleatoriedade está ligada com a
dificuldade de descrever algo em palavras.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 10 / 34
Geração de Números Aleatórios Observações

Tendo em vista o exemplo anterior, quando tratamos de Números Alea-


tórios (NA) há dois tipos principais envolvidos
NA reais
são gerados por dispositivos via processos físicos, tais como
Globo de sorteio da Mega-Sena;
Lançamentos de Moedas (igual ao do exemplo) e Dados;
Roletas de cassino.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 11 / 34
Geração de Números Aleatórios Observações

Tendo em vista o exemplo anterior, quando tratamos de Números Alea-


tórios (NA) há dois tipos principais envolvidos
NA reais
são gerados por dispositivos via processos físicos, tais como
Globo de sorteio da Mega-Sena;
Lançamentos de Moedas (igual ao do exemplo) e Dados;
Roletas de cassino.
Números Pseudo-Aleatórios reais
são gerados por programas de computador, isto é, por algoritmos.
podem ser gerados com Python, R, MATLAB, JavaScipt, Excel,
etc.
não são, de fato, aleatórios, pois dado o algoritmo, é possível
efetuar a previsão dos números.
do ponto de vista estatístico, são imprevisíveis e, ocasionalmente,
têm propriedades interessantes para aplicações Estatísticas.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 11 / 34
Alguns Métodos para GNA’s

Gerador Congruente Linear

É o algoritmo mais conhecido/popular para geração de números


pseudo-aleatórios no campo da simulação computacional.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 12 / 34
Alguns Métodos para GNA’s

Gerador Congruente Linear

É o algoritmo mais conhecido/popular para geração de números


pseudo-aleatórios no campo da simulação computacional.
É definido através de seguinte equação de recorrência

Xi = (aXi−1 + c) (mod m)

i = 1, 2, · · ·;
X0 é denominado por SEMENTE do gerador;
os valores a, c, X0 são convenientemente escolhidos.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 12 / 34
Alguns Métodos para GNA’s

Gerador Congruente Linear

É o algoritmo mais conhecido/popular para geração de números


pseudo-aleatórios no campo da simulação computacional.
É definido através de seguinte equação de recorrência

Xi = (aXi−1 + c) (mod m)

i = 1, 2, · · ·;
X0 é denominado por SEMENTE do gerador;
os valores a, c, X0 são convenientemente escolhidos.
Note que, neste método, há geração de m números, donde,
0 ⩽ Xi ⩽ m − 1.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 12 / 34
Alguns Métodos para GNA’s

Gerador Congruente Linear

É o algoritmo mais conhecido/popular para geração de números


pseudo-aleatórios no campo da simulação computacional.
É definido através de seguinte equação de recorrência

Xi = (aXi−1 + c) (mod m)

i = 1, 2, · · ·;
X0 é denominado por SEMENTE do gerador;
os valores a, c, X0 são convenientemente escolhidos.
Note que, neste método, há geração de m números, donde,
0 ⩽ Xi ⩽ m − 1.
Observação
Se c = 0, o método é denominado por Congruencial Multiplicativo.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 12 / 34
Alguns Métodos para GNA’s

EXEMPLO
Considerando o Método Congruencial Linear, tome a = 3, c = 0 e
X0 = 4, m = 5. Daí,

Xi = (3 × Xi−1 + 0) (mod 5)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 13 / 34
Alguns Métodos para GNA’s

EXEMPLO
Considerando o Método Congruencial Linear, tome a = 3, c = 0 e
X0 = 4, m = 5. Daí,

Xi = (3 × Xi−1 + 0) (mod 5)

Logo encontraremos os seguintes valores


X0 = 4;
X1 = 12 (mod 5) = 2;
X2 = 6 (mod 5) = 1;
X3 = 1 (mod 5) = 3;

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 13 / 34
Alguns Métodos para GNA’s

EXEMPLO
Considerando o Método Congruencial Linear, tome a = 3, c = 0 e
X0 = 4, m = 5. Daí,

Xi = (3 × Xi−1 + 0) (mod 5)

Logo encontraremos os seguintes valores


X0 = 4;
X1 = 12 (mod 5) = 2;
X2 = 6 (mod 5) = 1;
X3 = 1 (mod 5) = 3;

Observação
Para n = 10 resultados, encontraremos a seguinte sequência de
números
4213421342
Daí, observamos que há uma repetição da sequência 4 2 1 3, que por
sua vez, denominaremos de PERÍODO do gerador. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 13 / 34
Alguns Métodos para GNA’s

Um teorema importante para o Método Congruencial Linear é dito a


seguir
Teorema
O método congruencial linear tem período máximo se, e somente se,
(a) c e m forem primos entre si;
(b) a ≡ 1 (mod p) para todo divisor primo p de m;
(c) a ≡ 1 (mod 4) se 4 for um dividor de m.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 14 / 34
Alguns Métodos para GNA’s

Um teorema importante para o Método Congruencial Linear é dito a


seguir
Teorema
O método congruencial linear tem período máximo se, e somente se,
(a) c e m forem primos entre si;
(b) a ≡ 1 (mod p) para todo divisor primo p de m;
(c) a ≡ 1 (mod 4) se 4 for um dividor de m.

Observação
Em geral, tomamos m como sendo o maior número inteiro positivo do
computador..

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 14 / 34
Alguns Métodos para GNA’s

Gerador de Mersenne Twister

É, de longe, o algoritmo mais utilizado quando se trata da geração


de números pseudo-aleatórios;
Foi desenvolvido em 1997 por Makoto Matsumoto e Takuji
Naishimura.
O nome é devido o fato do longo período do gerador, que é
escolhido como o número primo de Marsenne, isto é, um número
da forma Mp = 2p − 1 tal que p ∈ P = conj. dos números primos.
Nos algoritmos mais utilizados, tem-se que M19937 = 219937 − 1 e,
notemos que, tal gerador possui um período suficientemente
grande.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 15 / 34
Método de Monte Carlo

Método de Monte Carlo

Também conhecido por Simulação de Monte Carlo, é uma série


de cálculos de probabilidades que estimam a chance de um evento
futuro acontecer. Assim, são feitas diversas simulações para
calcular probabilidades de um “ganho” ou “perda”.
Para tais simulações, utiliza-se amostra aleatória simples para
modelar os caminhos que variáveis aleatórias possam tomar.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 16 / 34
Método de Monte Carlo

Método de Monte Carlo

Também conhecido por Simulação de Monte Carlo, é uma série


de cálculos de probabilidades que estimam a chance de um evento
futuro acontecer. Assim, são feitas diversas simulações para
calcular probabilidades de um “ganho” ou “perda”.
Para tais simulações, utiliza-se amostra aleatória simples para
modelar os caminhos que variáveis aleatórias possam tomar.
Acontece que, às vezes, é muito mais prático efetuar simulações
aleatórias diversas vezes para avaliar os resultados, do que traçar
uma solução analítica.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 16 / 34
Método de Monte Carlo

Método de Monte Carlo

Também conhecido por Simulação de Monte Carlo, é uma série


de cálculos de probabilidades que estimam a chance de um evento
futuro acontecer. Assim, são feitas diversas simulações para
calcular probabilidades de um “ganho” ou “perda”.
Para tais simulações, utiliza-se amostra aleatória simples para
modelar os caminhos que variáveis aleatórias possam tomar.
Acontece que, às vezes, é muito mais prático efetuar simulações
aleatórias diversas vezes para avaliar os resultados, do que traçar
uma solução analítica. E devido a Lei dos Grandes Números,
conforme o número de amostras aumentam, as observações se
aproximarão da solução teórica.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 16 / 34
Método de Monte Carlo

TEOREMA – Lei dos Grandes Números


Consideremos X uma V.A. que representa o valor numérico de um
experimento aleatório e seja X1 , X2 , · · · , Xn uma amostra aleatória de
X de tamanho n suficientemente grande. A Lei Grande dos Números
afirma que a média aritmética dos n valores observados é
aproximadamente igual à média de X .

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 17 / 34
Método de Monte Carlo

Razões para utilizar Monte Carlo

Problemas de natureza complexa, onde nenhuma técnica de


solução é conhecida.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 18 / 34
Método de Monte Carlo

Razões para utilizar Monte Carlo

Problemas de natureza complexa, onde nenhuma técnica de


solução é conhecida. (ex. quando não é conhecido nenhuma
técnica analítica para resolver uma integral);

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 18 / 34
Método de Monte Carlo

Razões para utilizar Monte Carlo

Problemas de natureza complexa, onde nenhuma técnica de


solução é conhecida. (ex. quando não é conhecido nenhuma
técnica analítica para resolver uma integral);
Obtenção de uma estimativa inicial em uma técnica iterativa.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 18 / 34
Método de Monte Carlo

MC primitiva (por simulação direta)

Objetivo calcular o valor da integral


∫ b
θ= g(x)dx
a

Procedimento Geramos X1 , X2 , · · · , Xn uma amostra aleatória de X tal


que X ∼ U(a, b), sendo a função de probabilidade dada por
{
1
, a<x <b
f (x) = b−a
0, caso contrário

Donde a esperança é dada por


∫ b
1
E (g(x)) = g(x)dx =⇒ θ = (b − a)E (g(x))
a b − a

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 19 / 34
Método de Monte Carlo

E, por fim, diremos que


n
g(xi )
θ̂ = (b − a)g, onde g =
n
i=1

é uma estimativa para o valor da integral θ.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 20 / 34
Método de Monte Carlo

E, por fim, diremos que


n
g(xi )
θ̂ = (b − a)g, onde g =
n
i=1

é uma estimativa para o valor da integral θ.


Exemplo
Calcule, utilizando MC Primitiva, o caso em que g(x) = 2x e
(a, b) = (4, 6).

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 20 / 34
Método de Monte Carlo

E, por fim, diremos que


n
g(xi )
θ̂ = (b − a)g, onde g =
n
i=1

é uma estimativa para o valor da integral θ.


Exemplo
Calcule, utilizando MC Primitiva, o caso em que g(x) = 2x e
(a, b) = (4, 6).

Sejam os números gerados no intervalo (4, 6) abaixo

i xi g(xi )
1 4,46 8,92
2 5,99 11,98
3 5,01 10,02
4 4,21 8,42
5 4,98 9,96
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 20 / 34
Método de Monte Carlo

Daí, segue que



5
g(xi )
g= = 9, 86
n
i=1

donde, por sua vez

θ̂ = (6 − 4)g = 2 × 9, 98 = 19, 72

Observação
Para aumentarmos a precisão do resultado, é necessário aumentar a
quantidade de números aleatórios gerados.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 21 / 34
Um pouco sobre Python

O que é o Python?

Linguagem de programação de alto nível, interpretada, tipagem


dinâmica e entre algumas outras características.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 22 / 34
Um pouco sobre Python

O que é o Python?

Linguagem de programação de alto nível, interpretada, tipagem


dinâmica e entre algumas outras características.
É open source, isto é, possui licença de uso público. Desta
maneira, possui comunidades que contribuem na
manutenção/atualização da linguagem.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 22 / 34
Um pouco sobre Python

Fonte: Soul Code Academy. . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 23 / 34
Um pouco sobre Python

Quem usa e quais são as principais


aplicações do Python?
Por ser uma linguagem de sintaxe simples e fácil compreensão,
ganhou uma notoriedade e é muito utilizada, além dos
programadores (desenvolvedores de software), por
estatísticos
engenheiros
matemáticos
cientistas de dados
etc

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 24 / 34
Um pouco sobre Python

Quem usa e quais são as principais


aplicações do Python?
Por ser uma linguagem de sintaxe simples e fácil compreensão,
ganhou uma notoriedade e é muito utilizada, além dos
programadores (desenvolvedores de software), por
estatísticos
engenheiros
matemáticos
cientistas de dados
etc
Contém inúmeras bibliotecas (ferramentas semelhantes aos
pacotes que são utilizados no LATEX) tornando bastante útil em
áreas tais quais
desenvolvimento web
análise de dados
machine learning
automação
computação gráfica
. . . . . . . . . . . . . . . . . . . .
inteligência artificial (IA) . . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 24 / 34
Um pouco sobre Python Script do Método Congruencial Linear

Congruencial Linear
O Script em Python a seguir é utilizado para gerar números aleatórios.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 25 / 34
Um pouco sobre Python Script do Método Congruencial Linear

Congruencial Linear
O Script em Python a seguir é utilizado para gerar números aleatórios.
1 d e f l c g ( Xo , m, a , c , randomNums , noOfRandomNums ) :
2 randomNums [ 0 ] = Xo # I n i t i a l i z e t h e s e e d s t a t e
3 # Traverse to g e n e r a t e r e q u i r e d
4 # n u m b e r s o f random n u m b e r s
5 f o r i i n r a n g e ( 1 , noOfRandomNums ) :
6 # F o l l o w t h e l i n e a r c o n g r u e n t i a l method
7 randomNums [ i ] = ( ( randomNums [ i − 1 ] ∗ a ) +
8 c) % m
9# D r i v e r Code
10 i f __name__ == ’__main__ ’ :
11 Xo = 4 # S e e d v a l u e
12 m = 5 # Modulus p a r a m e t e r
13 a = 3 # M u l t i p l i e r term
14 c = 0 # I n c r e m e n t term
15 noOfRandomNums = 10 # Number o f Random n u m b e r s
16 # t o be g e n e r a t e d
17 randomNums = [ 0 ] ∗ ( noOfRandomNums ) # To s t o r e
18 # random n u m b e r s
19 # Function Call
20 l c g ( Xo , m, a , c , randomNums , noOfRandomNums )
21 # P r i n t t h e g e n e r a t e d random n u m b e r s
22 f o r i i n randomNums :
23 p r i n t ( i , end = " " )

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 25 / 34
Um pouco sobre Python Script do Método Congruencial Linear

Congruencial Linear
O Script em Python a seguir é utilizado para gerar números aleatórios.
1 d e f l c g ( Xo , m, a , c , randomNums , noOfRandomNums ) :
2 randomNums [ 0 ] = Xo # I n i t i a l i z e t h e s e e d s t a t e
3 # Traverse to g e n e r a t e r e q u i r e d
4 # n u m b e r s o f random n u m b e r s
5 f o r i i n r a n g e ( 1 , noOfRandomNums ) :
6 # F o l l o w t h e l i n e a r c o n g r u e n t i a l method
7 randomNums [ i ] = ( ( randomNums [ i − 1 ] ∗ a ) +
8 c) % m
9# D r i v e r Code
10 i f __name__ == ’__main__ ’ :
11 Xo = 4 # S e e d v a l u e
12 m = 5 # Modulus p a r a m e t e r
13 a = 3 # M u l t i p l i e r term
14 c = 0 # I n c r e m e n t term
15 noOfRandomNums = 10 # Number o f Random n u m b e r s
16 # t o be g e n e r a t e d
17 randomNums = [ 0 ] ∗ ( noOfRandomNums ) # To s t o r e
18 # random n u m b e r s
19 # Function Call
20 l c g ( Xo , m, a , c , randomNums , noOfRandomNums )
21 # P r i n t t h e g e n e r a t e d random n u m b e r s
22 f o r i i n randomNums :
23 p r i n t ( i , end = " " )

Gera os números 4 2 1 3 4 2 1 3 4 2. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 25 / 34
Um pouco sobre Python Script do Método Congruencial Linear

No Script anterior, se tomarmos

X0 = 5, m = 7, a = 3 e c = 3

A sequência gerada será

5416035416

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 26 / 34
Aplicações do Método de Monte Carlo Simulação através do Python

Simulação através do Python


Exemplo – Passeio Casual
Consideremos a seguinte situação: "Você joga uma moeda, se cair
cara, você ganha +1 ponto, caso contrário, isto é, caia coroa, você
ganha −1 ponto. Qual será sua pontuação ao final de (a) 100 jogadas
e (b) 500 jogadas?

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 27 / 34
Aplicações do Método de Monte Carlo Simulação através do Python

Simulação através do Python


Exemplo – Passeio Casual
Consideremos a seguinte situação: "Você joga uma moeda, se cair
cara, você ganha +1 ponto, caso contrário, isto é, caia coroa, você
ganha −1 ponto. Qual será sua pontuação ao final de (a) 100 jogadas
e (b) 500 jogadas?

Seja Xi o valor de cada jogada representado no i -ésimo arremesso, com


i ∈ {1, 2, · · · }, ou seja, a variável aleatória é dada por
{
1, se der cara
Xi =
−1 se der coroa

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 27 / 34
Aplicações do Método de Monte Carlo Simulação através do Python

Simulação através do Python


Exemplo – Passeio Casual
Consideremos a seguinte situação: "Você joga uma moeda, se cair
cara, você ganha +1 ponto, caso contrário, isto é, caia coroa, você
ganha −1 ponto. Qual será sua pontuação ao final de (a) 100 jogadas
e (b) 500 jogadas?

Seja Xi o valor de cada jogada representado no i -ésimo arremesso, com


i ∈ {1, 2, · · · }, ou seja, a variável aleatória é dada por
{
1, se der cara
Xi =
−1 se der coroa
∑n
Desta forma, Si = S0 + i=1 Xi é a pontuação acumulada do jogador
em questão. Uma vez que Xi , i ∈ {1, 2, · · · } são independentes, observa-
mos que dada pontuação atual do jogador, a sua pontuação na próxima
rodada não depende das anteriores e, portanto, vemos que é uma Cadeia
de Markov, isto é, um Processo estocástico. .
.
.
.
.
. . . . .
. . . .
. . . .
. . . .
. . . .
. . . . .
.
.
.
.
.
.
.
.
.

Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 27 / 34


Aplicações do Método de Monte Carlo Simulação através do Python

Assim, vamos utilizar um script em Python para simular uma possível


ocasião após n = 100 e n = 500 rodadas para a pontuação acumulada
do jogador.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 28 / 34
Aplicações do Método de Monte Carlo Simulação através do Python

Assim, vamos utilizar um script em Python para simular uma possível


ocasião após n = 100 e n = 500 rodadas para a pontuação acumulada
do jogador.
Para tanto, utilizaremos 3 bibliotecas importantes
Numpy – Geração de Números Aleatórios. utiliza o algoritmo de
Mersenne Twister;
Plotly Express – Plotagem de gráficos;
Pandas – Análise de dados.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 28 / 34
Aplicações do Método de Monte Carlo Simulação através do Python

1 from numpy . random import default_rng


2 import numpy as np
3 import plotly . express as px
4 import pandas as pd
5
6 coin = pd . DataFrame ([0] , columns =[ ’ Score ’ ])
7 num = 0
8
9 for i in range (100) :
10 num += np . random . choice ([ -1 ,1] , p =[0.5 , 0.5])
11 y = pd . DataFrame ([ num ] , columns =[ ’ Score ’ ])
12 coin = coin . append (y , ignore_index = True )
13
14 fig = px . line ( coin , x = coin . index , y = ’ Score ’)
15 fig . update_layout ( title = ’ 100 Coin Flips Score ’ ,
16 xaxis_title = ’ Flip Number ’)
17 fig . show ()
18

Executar o código no Google Colab para obtermos a resposta para (a)


e (b).
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 29 / 34
Outras áreas de aplicação do método Computação Gráfica

Computação Gráfica
Dentro da computação gráfica, o método de Monte Carlo é
amplamente utilizado no processo de Ray-Tracing, donde, até
recebe o nome de Método Ray-Tracing de Monte Carlo

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 30 / 34
Outras áreas de aplicação do método Computação Gráfica

Computação Gráfica
Dentro da computação gráfica, o método de Monte Carlo é
amplamente utilizado no processo de Ray-Tracing, donde, até
recebe o nome de Método Ray-Tracing de Monte Carlo
Tal técnica consiste, de maneira simplificada, em traçar raios de
luz para renderizar uma imagem, ou ainda, os algoritmos de
transporte de luz são designados para simular a propagação da luz
em um espaço com interação de objetos.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 30 / 34
Outras áreas de aplicação do método Computação Gráfica

Computação Gráfica
Dentro da computação gráfica, o método de Monte Carlo é
amplamente utilizado no processo de Ray-Tracing, donde, até
recebe o nome de Método Ray-Tracing de Monte Carlo
Tal técnica consiste, de maneira simplificada, em traçar raios de
luz para renderizar uma imagem, ou ainda, os algoritmos de
transporte de luz são designados para simular a propagação da luz
em um espaço com interação de objetos.
EXEMPLO
Vejamos a seguinte comparação com Ray-Tracing ativado e desativado
em uma renderização de imagens.
Imagem: Ray-Tracing on × off .

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 30 / 34
Outras áreas de aplicação do método Computação Gráfica

Computação Gráfica
Dentro da computação gráfica, o método de Monte Carlo é
amplamente utilizado no processo de Ray-Tracing, donde, até
recebe o nome de Método Ray-Tracing de Monte Carlo
Tal técnica consiste, de maneira simplificada, em traçar raios de
luz para renderizar uma imagem, ou ainda, os algoritmos de
transporte de luz são designados para simular a propagação da luz
em um espaço com interação de objetos.
EXEMPLO
Vejamos a seguinte comparação com Ray-Tracing ativado e desativado
em uma renderização de imagens.
Imagem: Ray-Tracing on × off .

EXEMPLO
Vejamos um pequeno trecho do vídeo a seguir:
Video: Ray-Tracing on × off . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 30 / 34
Outras áreas de aplicação do método Financias

Financias

A simulação de Monte Carlo em finanças é extremamente útil para


efetuar modelagem de simulação de mercado de opção.
Mercado de opções – “O mercado de opções é aquele formado
pelo conjunto de operações que utilizam derivativos financeiros
para negociar o direito de compra, no caso das calls, ou de venda,
no caso das puts, de determinado ativo por um certo preço em
uma data futura.”
“Vale destacar, ainda, que uma das principais funcionalidades do
mercado de opções é ser capaz de servir como uma espécie de
seguro para investidores. No entanto, muitas pessoas negociam
neste mercado de maneira especulativa, com o objetivo de obter
ganhos extraordinários no curto prazo.”

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 31 / 34
Outras áreas de aplicação do método Financias

Daí, outro ponto que favorece o uso da teoria em Financias, é o


fato que é possível solucionar problemas que não possíveis
analiticamente

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 32 / 34
Outras áreas de aplicação do método Financias

Daí, outro ponto que favorece o uso da teoria em Financias, é o


fato que é possível solucionar problemas que não possíveis
analiticamente
Dentro de Financias, o método de Monte Carlo se mostra
vantajoso para calcular Riscos em Investimentos
Pois simula-se perdas ou ganhos em casos de aumento de inflação,
juros, taxações, desvalorização e mudanças nas políticas
monetárias.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 32 / 34
Outras áreas de aplicação do método Financias

Bibliografia I

[1] De Paula, R. R., Método de Monte Carlo e Aplicações, UFF, 2014


[2] Nasser, R. B., McCloud Service Framework: Arcabouço para
desenvolvimento de serviços baseados na simulalçao de Monte
Carlo na Cloud, MAXWELL, PUC-RIO, 2012
[3] Mayer, F. P., Método de Monte Carlo, UFPR
[4] Morettin, P.A; Bussab, W.O., Estatística Básica - 6. ed. - São
Paulo: Saraiva, 2010
[5] Geek For Geeks Website
[6] Govone, J. S., Notas de Aula – Processos Estocásticos 2021
[7] Harrison, R. L., Introduction To Monte Carlo Simulation, 2010
[8] Simulação de Monte Carlos em Financias
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 33 / 34
Outras áreas de aplicação do método Financias

Bibliografia II

[9] O que é Mercado de Opção?


[10] Júnior, D. P. F., Conceitos e simulação de cadeias de Markov,
UFG
[11] Introduction to Ray Tracing: a Simple Method for Creating 3D
Images
[12] An Overview of the Ray-Tracing Rendering Technique
[13] Global Illumination and Path Tracing

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Fernando Andrade (UNESP) Método de Monte Carlo e Aplicações 34 / 34

Você também pode gostar