Métodos Computacionais em Física - if.ufrj.brhelder/MetComp/2017-1/Aula12/Aula12.pdf · 8...

97
et Comp C: Divis ˜ ao do Programa em Arquivos Sistemas Aleat ´ orios Dist Discretas Dist Cont´ ınuas umeros Pseudo- Aleat ´ orios etodos Computacionais em F´ ısica Jos ´ e Helder Lopes e Sandra Amato Instituto de F´ ısica Universidade Federal do Rio de Janeiro Primeiro Semestre de 2017

Transcript of Métodos Computacionais em Física - if.ufrj.brhelder/MetComp/2017-1/Aula12/Aula12.pdf · 8...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodos Computacionais em Fısica

Jose Helder Lopes e Sandra Amato

Instituto de FısicaUniversidade Federal do Rio de Janeiro

Primeiro Semestre de 2017

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao do Programa em Varios Arquivos

8 Ja vimos como estruturar a logica de um programa -atraves de funcoes e macros

8 Um programa grande, com varios includes,prototipos de funcoes, macros e constantes simbolicas,torna-se rapidamente sujo, de difıcil leitura.

Regra de ouro da boa programacao

Um programa deve caber na tela do computador

Um programa grande deve ser dividido em varios arquivos:8 Nao precisamos ter uma copia da funcao em todos os

programas principais8 Podemos compilar apenas o arquivo modificado8 Funcoes genericas (p.ex. raiz de uma funcao) podem

ser usadas em outros codigos8 Evitamos que sejam modificadas por engano

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao do Programa em Varios Arquivos

Arquivos de cabecalho (headers)8 Contem declaracoes de funcoes e de variaveis globais,

constantes simbolicas, macros, ... , como os jaconhecidos stdio.h e math.h.

8 A extensao do arquivo deve ser .h.8 Os headers devem ser incluıdos em cada arquivo em

que as definicoes neles contidas sejam usadas.

Ü Observe:#include ‘‘nome do header.h’’

Aspas “ . . . ” para cabecalhos do usuario#include <math.h>

< · · · > para cabecalhos do sistema

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao do Programa em Varios Arquivos

Arquivos de implementacao

8 Contem a implementacao de funcoes.8 Contem os headers necessarios.8 Podem ser adicionados na hora da compilacao

(arquivo fonte .c)

8 Ou podem ser compilados separadamente(arquivos .o, .a ou .sl)e anexados aos outros na hora da montagem doprograma (linker).

O programa principal, com a funcao main (.c).

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao do Programa em Varios Arquivos

Arquivos de implementacao

8 Contem a implementacao de funcoes.8 Contem os headers necessarios.8 Podem ser adicionados na hora da compilacao

(arquivo fonte .c)8 Ou podem ser compilados separadamente

(arquivos .o, .a ou .sl)e anexados aos outros na hora da montagem doprograma (linker).

O programa principal, com a funcao main (.c).

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao do Programa em Varios Arquivos

Arquivos de implementacao

8 Contem a implementacao de funcoes.8 Contem os headers necessarios.8 Podem ser adicionados na hora da compilacao

(arquivo fonte .c)8 Ou podem ser compilados separadamente

(arquivos .o, .a ou .sl)e anexados aos outros na hora da montagem doprograma (linker).

O programa principal, com a funcao main (.c).

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Compilacao do programa executavel

Ü Compilando em um passo:gcc -o executavel principal.c implementacao1.c implementacao2.c . . .

Ü Compilando em varios passos:Para compilar um arquivo de implementacao isoladamente(util para achar erros):gcc -c implementacao1.c

sera criado um arquivo chamado implementacao1.o

Ü Para compilar o programa main e criar o executavel:gcc -o executavel principal.c implementacao1.o implementacao2.c . . .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Compilacao do programa executavel

Ü Compilando em um passo:gcc -o executavel principal.c implementacao1.c implementacao2.c . . .

Ü Compilando em varios passos:Para compilar um arquivo de implementacao isoladamente(util para achar erros):gcc -c implementacao1.c

sera criado um arquivo chamado implementacao1.o

Ü Para compilar o programa main e criar o executavel:gcc -o executavel principal.c implementacao1.o implementacao2.c . . .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Compilacao do programa executavel

Ü Compilando em um passo:gcc -o executavel principal.c implementacao1.c implementacao2.c . . .

Ü Compilando em varios passos:Para compilar um arquivo de implementacao isoladamente(util para achar erros):gcc -c implementacao1.c

sera criado um arquivo chamado implementacao1.o

Ü Para compilar o programa main e criar o executavel:gcc -o executavel principal.c implementacao1.o implementacao2.c . . .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Compilacao do programa executavel

Ü Compilando em um passo:gcc -o executavel principal.c implementacao1.c implementacao2.c . . .

Ü Compilando em varios passos:Para compilar um arquivo de implementacao isoladamente(util para achar erros):gcc -c implementacao1.c

sera criado um arquivo chamado implementacao1.o

Ü Para compilar o programa main e criar o executavel:gcc -o executavel principal.c implementacao1.o implementacao2.c . . .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Preparacao de um Programa

Editor:programa

*.c

Pre-processador:includes

*.i

Compilador:arquivo

*.o

Linker:bibliotecasexecutavel

8 Resolver o problema: Preparar algoritmos

8 Escrever o programa: vi, gedit . . .8 Pre-compilacao: instrucoes com #8 gcc -c funcao1.c

8 gcc -o programa programa.c funcao1.cfuncao2.c -lm ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Preparacao de um Programa

Editor:programa

*.c

Pre-processador:includes

*.i

Compilador:arquivo

*.o

Linker:bibliotecasexecutavel

8 Resolver o problema: Preparar algoritmos8 Escrever o programa: vi, gedit . . .

8 Pre-compilacao: instrucoes com #8 gcc -c funcao1.c

8 gcc -o programa programa.c funcao1.cfuncao2.c -lm ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Preparacao de um Programa

Editor:programa

*.c

Pre-processador:includes

*.i

Compilador:arquivo

*.o

Linker:bibliotecasexecutavel

8 Resolver o problema: Preparar algoritmos8 Escrever o programa: vi, gedit . . .8 Pre-compilacao: instrucoes com #

8 gcc -c funcao1.c

8 gcc -o programa programa.c funcao1.cfuncao2.c -lm ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Preparacao de um Programa

Editor:programa

*.c

Pre-processador:includes

*.i

Compilador:arquivo

*.o

Linker:bibliotecasexecutavel

8 Resolver o problema: Preparar algoritmos8 Escrever o programa: vi, gedit . . .8 Pre-compilacao: instrucoes com #8 gcc -c funcao1.c

8 gcc -o programa programa.c funcao1.cfuncao2.c -lm ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Preparacao de um Programa

Editor:programa

*.c

Pre-processador:includes

*.i

Compilador:arquivo

*.o

Linker:bibliotecasexecutavel

8 Resolver o problema: Preparar algoritmos8 Escrever o programa: vi, gedit . . .8 Pre-compilacao: instrucoes com #8 gcc -c funcao1.c

8 gcc -o programa programa.c funcao1.cfuncao2.c -lm ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Divisao em arquivos e variaveis globais

Ü Variaveis globais vao no sentido oposto damodularizacao. Usar so quando a alternativa for pior.

Ü O uso “correto” e um pouco complicado e usa ocomando extern. Veja o linkhttp://stackoverflow.com/questions/1433204/how-do-i-share-a-variable-

between-source-files-in-c-with-extern-but-how

Ü Receita pratica:8 Declare a variavel no header, sem inicializa-la,

para nao ocorrer multiplas inicializacoes.8 Use a variavel normalmente no arquivos de

implementacao.

Ü Observacao:Lembre-se que uma redeclaracao local “esconde” umavariavel global

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplo

8 Analise o arquivo fatorial1.c

8 Analise os arquivos usaFatorial.c, usaFatorial.h,entrada.c, cfatorial.c e saida.c.

8 Compile as funcoes separadamente:gcc -c cfatorial.cgcc -c entrada.cgcc -c saida.cgcc -o usaFatorial usaFatorial.c entrada.osaida.o cfatorial.o -lm

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplo

8 Analise e execute o programa raiz 0.c (nao usa funcao)

8 Analise e execute o programa raiz 1.c(usa funcao, mas tudo em um

unico arquivo)

8 Analise os arquivos raiz main.c, raiz func.c,NewtonRaphson.c e NewtonRaphson.h.

8 Compile as funcoes separadamente:gcc -c raiz func.cgcc -c NewtonRaphson.c

8 Compile o programa main, “linkando” com as funcoes jacompiladas e com a biblioteca do sistema, criado oexecutavel:gcc -o raiz raiz main.c raiz func.oNewtonRaphson.o -lmExecute-o.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:

Ü Sistemas determinısticosÜ Sistemas aleatorios

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:Ü Sistemas determinısticos:

A evolucao de um sistema e conhecida univocamentepelas leis que o governam e pelo seu estado inicial.

r A trajetoria de uma partıcula

Ü Sistemas aleatorios

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:Ü Sistemas determinısticosÜ Sistemas aleatorios:

Nao se pode prever o resultado de um experimento.O estado futuro so pode ser conhecido pela realizacaode uma experiencia.Mas podemos saber suas caracterısticas atraves deleis probabilısticas.

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:Ü Sistemas determinısticosÜ Sistemas aleatorios

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:Ü Sistemas determinısticosÜ Sistemas aleatorios

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.

Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

Os sistemas Fısicos podem ser:Ü Sistemas determinısticosÜ Sistemas aleatorios

r Decaimento de um nucleo ou de uma partıcular Movimento brownianor Se um embriao vai ser masculino ou femininor Bolsa de valoresr Sistema de transitor Jogar uma moeda ou um dado

Muitos sistemas determinısticos se comportam comoaleatorios quando sua evolucao depende de um numerogrande de fatores.Processos quanticos sao intrinsecamente probabilısticos ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Sistemas Aleatorios

r Para estudarmos os sistemas aleatorios utilizamossimulacoes computacionais - Metodo de Monte Carlo -gerando numeros aleatorios de acordo com umadistribuicao esperada

r e estudamos suas caracterısticas, como as medias,variancias, correlacoes etc.

r Uma das primeiras aplicacoes foi no design dereatores nucleares - Quanto de shielding material enecessario para parar os neutrons?

r Simulacao: Um experimento computacionalr Mas nao e um experimento de fato!

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplo 1: Raios Cosmicos

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplo 2: Colisoes de Partıculas

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Probabilidade - senso comum

r A necessidade de usar o conceito de probabilidade surge dofato de nao sabermos prever o resultado Ex - cara ou coroa?

r Podemos modelar a probabilidade de se obter um resultado.Mas primeiro devemos definir quais os resultados possıveis- espaco de amostragem: cara, coroa. E se cair em pe?

r Uma definicao razoavel seria P(cara) = P(coroa) = 12 onde

consideramos uma distribuicao de massa uniforme edesprezamos um evento raro

r Como comprovar o modelo? Realizando o experimento Nvezes, obtendo uma amostra com N resultados ( “eventos”).

r Mas quantas vezes (N) devemos lancar a moeda para que oresultado de 1

2 ?P(cara) = lim

N→∞

N(cara)

N

r Quao grande deve ser N?

r Que erro estamos cometendo ao usar um certo N finito?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.(jogo de dados: m = 6, x1 = 1, x2 = 2, ..., x6 = 6)ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X :Para a frequencia relativa F (xi) = N(xi )

N ,m∑

i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.(jogo de dados: m = 6, x1 = 1, x2 = 2, ..., x6 = 6)ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X :

Para a frequencia relativa F (xi) = N(xi )N ,

m∑i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.(jogo de dados: m = 6, x1 = 1, x2 = 2, ..., x6 = 6)ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X : Se o valor xi e medidocom frequencia N(xi) temos

m∑i=1

N(xi) = N

Para a frequencia relativa F (xi) = N(xi )N ,

m∑i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X : Se o valor xi e medidocom frequencia N(xi) temos

m∑i=1

N(xi) = N

Para a frequencia relativa F (xi) = N(xi )N ,

m∑i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X :Para a frequencia relativa F (xi) = N(xi )

N ,

m∑i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas

Ü O evento X e uma grandeza contavel, que no caso finitopode ser associada a m valores diferentes xi com i variandode 1 a m.ÜPode ser tambem uma distribuicao infinita, como porexemplo, o numero de fragmentos numa explosao.

Se sao realizadas N medidas de X :Para a frequencia relativa F (xi) = N(xi )

N ,

m∑i=1

F (xi) = 1

Uma definicao empırica de probabilidade e

P(xi) = limN→∞

N(xi)

N= lim

N→∞F (xi)

F (xi ) e uma estimativa de P(xi ), tao melhor quanto maior for N.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Probabilidades Discretas

6 Uma distribuicao de probabilidade discreta satisfaz a:Ü 0 ≤ P(xi) ≤ 1

Ü

m∑i=1

P(xi) = 1

6 O objetivo de uma experiencia e, em geral, determinarP(xi) e comparar o valor com alguma previsao -Estatıstica

6 Exemplo: qual e a probabilidade de se obter cara comuma moeda?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p

= 1/m7 Fazendo uma experiencia com um dado:

⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p = 1/m

7 Fazendo uma experiencia com um dado:⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p = 1/m7 Fazendo uma experiencia com um dado:

⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p = 1/m7 Fazendo uma experiencia com um dado:

⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p = 1/m7 Fazendo uma experiencia com um dado:

⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?

7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Discretas Uniformes

Os m resultados sao igualmente provaveis7 P(x1) = P(x2) = · · · = P(xm) = p = 1/m7 Fazendo uma experiencia com um dado:

⇒ P(x4) = p = 1/6 = 0,166666...

Usando amostras com N eventos, poderıamos obter:N 10 100 1000 104 105 106

N(x4) 3 12 163 1698 16605 166753F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675

7 Quantas vezes e necessario repetir um experimento?7 Quantas vezes e possıvel repetir o experimento?

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Caracterısticas de Distribuicoes Discretas

Ü O objetivo costuma ser determinar a distribuicao deprobabilidade P(xi), mas com frequencia isso nao epossıvel ou necessario.

Ü Mas pode-se determinar os momentos da distribuicao:ã Primeiro Momento (media ou valor esperado)

< X >= x = limN→∞

∑i

xiN(xi)

N=∑

i

xiP(xi)

ã Segundo Momento< X 2 >=

∑i

x2i P(xi)

ou varianciaσ2 =

∑i

(xi − x)2P(xi) =< X 2 > − < X >2

σ: Desvio padrao ou dispersao dos valoresÜ < X >, σ, . . . calculados para uma amostra com N eventos

sao uma estimativa dos respectivos valores “verdadeiros”

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplo

Para uma distribuicao tal quen 0 1 2 3 4 5

P(n) 0,0498 0,1494 0,2240 0,2240 0,1680 0,1008n 6 7 8 9 10 > 10

P(n) 0,0504 0,0216 0,0081 0,0027 0,0008 . . .Considere a amostra com resultados de 20 experimentos:

{8,4,3,3,2,6,6,4,4,2,2,0,5,2,2,3,3,3,0,5}

Media da amostra:x = (8 + 4 + 3 + 3 + 2 + 6 + 6 + 4 + 4 + 2 + 2 + 0 + 5

+2 + 2 + 3 + 3 + 3 + 0 + 5)/20 = 3,35 oux = (2x0 + 0x1 + 5x2 + 5x3 + 3x4 + 2x5 + 2x6 + 0x7 + 1x8 + 0x9)/20 = 3, 35

x = (0, 10x0 + 0x1 + 0, 25x2 + 0, 25x3 + 0, 15x4 + 0, 10x5 + 0, 10x6 + 0x7 +0, 05x8 + 0x9) = 3, 35

Mas a media “verdadeira” e:x =0, 0498x0+0, 1494x1+0, 2240x2+0, 2240x3+0, 1680x4+0, 1008x5+0, 0504x6+0, 0216x7 + 0, 0081x8 + 0, 0027x9 + ... = 2, 988 + ...

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Contınuas

Ü X e uma variavel contınua→ Fica sem sentido falar deP(x)

Ü Mas se x ∈ [a,b], podemos dividir esta regiao em Mintervalos de largura ∆x = (b − a)/M.Podemos entao falar na probabilidadeP(xi < x < xi + ∆x)

Discretizamos o problema !

Esta probabilidade depende da escolha de ∆x e de umadensidade de probabilidade fX (x)

caracterıstica do processo:

P(xi < x < xi + ∆x) ∝ f (x)∆x

Ü Com M →∞, dP = fX (x)dxÜ fX (x)dx e a probabilidade de X estar entre x e x + dx .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Contınuas

Ü X e uma variavel contınua→ Fica sem sentido falar deP(x)

Ü Mas se x ∈ [a,b], podemos dividir esta regiao em Mintervalos de largura ∆x = (b − a)/M.Podemos entao falar na probabilidadeP(xi < x < xi + ∆x) Discretizamos o problema !

Esta probabilidade depende da escolha de ∆x e de umadensidade de probabilidade fX (x)

caracterıstica do processo:

P(xi < x < xi + ∆x) ∝ f (x)∆x

Ü Com M →∞, dP = fX (x)dxÜ fX (x)dx e a probabilidade de X estar entre x e x + dx .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes Contınuas

Ü X e uma variavel contınua→ Fica sem sentido falar deP(x)

Ü Mas se x ∈ [a,b], podemos dividir esta regiao em Mintervalos de largura ∆x = (b − a)/M.Podemos entao falar na probabilidadeP(xi < x < xi + ∆x) Discretizamos o problema !

Esta probabilidade depende da escolha de ∆x e de umadensidade de probabilidade fX (x)

caracterıstica do processo:

P(xi < x < xi + ∆x) ∝ f (x)∆x

Ü Com M →∞, dP = fX (x)dxÜ fX (x)dx e a probabilidade de X estar entre x e x + dx .

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Propriedades de Distribuicoes Contınuas

6 Probabilidade de X estar em um intervalo:P(a ≤ x ≤ b) =

∫ ba fX (x)dx

6 Condicao de normalizacao:∫ +∞−∞ fX (x)dx = 1

6 Media< X >= x =

∫xfX (x)dx

6 Varianciaσ2 =

∫(x − x)2fX (x)dx =< X 2 > − < X >2

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplos de Distribuicoes Contınuas

6 Distribuicao Uniforme: fX (x) = C

∫ b

afX (x)dx = 1⇒ C =

1b − a

6 Distribuicao Gaussiana:

fX (x) =1√

2π σexp

[(x − µ)2

2σ2

]

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplos de Distribuicoes Contınuas

6 Distribuicao Uniforme: fX (x) = C∫ b

afX (x)dx = 1⇒ C =

1b − a

6 Distribuicao Gaussiana:

fX (x) =1√

2π σexp

[(x − µ)2

2σ2

]

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplos de Distribuicoes Contınuas

6 Distribuicao Uniforme: fX (x) = C∫ b

afX (x)dx = 1⇒ C =

1b − a

6 Distribuicao Gaussiana:

fX (x) =1√

2π σexp

[(x − µ)2

2σ2

]

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Exemplos de Distribuicoes Contınuas

6 Distribuicao Uniforme: fX (x) = C∫ b

afX (x)dx = 1⇒ C =

1b − a

6 Distribuicao Gaussiana:

fX (x) =1√

2π σexp

[(x − µ)2

2σ2

]

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Histogramas - Normalizacao

6 Histogramas sao usados para visualizar ocomportamento de dados que se distribuem emdeterminados valores

6 Para variaveis discretas cada bin corresponde a umresultado possıvel (eixo x) e o seu valor (eixo y ) indicao numero de ocorrencias Ni daquele resultado naamostra em questao.

6 Para variaveis contınuas, cada bin tem uma largura ∆xe o bin i indica quantas ocorrencias Ni tem valoresentre xi e xi + ∆x .

Suponha que queiramos comparar os dados numhistograma com uma certa densidade de probabilidade f (x)Mas os valores no histograma dependem do numero totalde eventos N e, no caso contınuo, da largura ∆x do bin.

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Histogramas - Normalizacao

Precisamos normalizar, isto e, mudar a escala ou dohistograma ou da funcao.

6 No caso discreto, como

P(xi ) = limN→∞

N(xi )

N= lim

N→∞F (xi ) e

m∑i=1

P(xi ) =m∑

i=1

F (xi ) = 1,

basta usar F (xi) no lugar de Ni no histograma.6 No caso contınuo a relacao e∫ b

afX (x)dx = lim

m→∞

m∑i=1

fX (xi )∆x =⇒ F (xi ) = fX (xi )∆x

Ou seja, devemos usar F (xi )/∆x no histograma, paracompararmos com fX (xi ). ( A area do histograma deveficar igual a area abaixo da curva fX (x), que e 1).

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Histogramas - Normalizacao

Com estas normalizacoes, se os dados de fatocorrespondem a uma distribuicao f (x), o histograma tendepara a curva a medida que N →∞.

��

�����

�����

�����

�����

����

�����

�����

�����

�����

����

�� �� �� �� �� �� �� �� ��

����������

���������������������������������������������������������������������

∆x = 0.24 ((6− (−6)/50bins)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü Estudo de sistemas aleatorios⇒ Geracao desequencia aleatoria de numeros (amostra)

Ü O computador so pode gerar uma sequenciadeterminıstica!

Ü Numeros Pseudo-Aleatorios: uma sequencia deperıodo muito longo e sem ordenacao aparente.

Ü Cada sequencia independente comeca com umasemente

Se um numero se repete, toda a sequencia se repete !!O gerador deve passar um serie de testes estatısticos!

Exemplo: sequencia de numeros entre 0 e 2m − 1

xn+1 = resto((axn + b)/2m)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?

Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Geracao de Numeros Aleatorios

Ü A funcao rand( ) gera numeros inteirosuniformemente entre 0 e RAND MAX (stdlib.h).n = rand();

Ü A semente seed (inteiro) pode ser inicializada pelafuncao srand(seed)

Como obter uma amostra com N eventos de umadistribuicao contınua uniforme com valores entre a e b?Geramos uma sequencia uniforme de N numeros reais entre a eb chamando N vezes:

x = a + rand() ∗ (b − a)/RAND MAX

Note que so teremos RAND MAX valores reais, sendo o menor∆x entre eles de (b − a)/RAND MAX !!

Estude os programas uniforme.c , gera uniforme.c egera uniforme histo.c

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?

Ü Usando uma outra variavel aleatoria X ,y = g(x), tal que

Ü |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal que

Ü |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |

Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)

Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcaog(x)?

Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?

Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx |

⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′

⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x

⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes nao UniformesMetodo da Transformada

Como gerar uma sequencia segundo fY (y)?Ü Usando uma outra variavel aleatoria X ,

y = g(x), tal queÜ |fY (y)dy | = |fX (x)dx |Ü Gera-se a sequencia segundo fX (x) (por ex., uniforme)Ü Obtem-se fY (y) usando y = g(x), mas qual e a funcao

g(x)?Ü Exemplo: fY (y) = exp(−y) e fX (x) = 1

|fY (y)dy | = |fX (x)dx | ⇒ |exp(−y)dy | = |dx |

⇒∫ y

0exp(−y ′)dy ′ =

∫ x

0dx ′ ⇒ 1− exp(−y) = x

⇒ exp(−y) = 1− x ⇒ y = − ln(1− x)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se YÜ Atencao: Os limites da distribuicao em X devem ser

calculados para a distribuicao em YPara que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se Y

Ü Atencao: Os limites da distribuicao em X devem sercalculados para a distribuicao em YPara que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se YÜ Atencao: Os limites da distribuicao em X devem ser

calculados para a distribuicao em Y

Para que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se YÜ Atencao: Os limites da distribuicao em X devem ser

calculados para a distribuicao em YPara que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se YÜ Atencao: Os limites da distribuicao em X devem ser

calculados para a distribuicao em YPara que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Distribuicoes ao Uniformes - Metodo daTransformada

Como gerar uma sequencia segundo fY (y)?Ü y = − ln(1− x)

Ü Sorteia-se X uniforme e calcula-se YÜ Atencao: Os limites da distribuicao em X devem ser

calculados para a distribuicao em YPara que 0 ≤ y ≤ 10 a distribuicao uniforme deve sergerada entre:0 = − ln(1− x)⇒ e0 = 1− x ⇒ x = 010 = − ln(1− x)⇒ e−10 = 1− x ⇒ x = 1− e−10

Ü Este metodo envolve o calculo de funcoes inversas, o quepode ser um problema serio

Ü Estude o programa gera exp.c que sorteia numerospseudo-aleatorios segundo uma distribuicao exponencialpara 0 ≤ y ≤ 10

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]

tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z

6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü A ideia e simples: com dois sorteios e possıvelreproduzir uma curva em duas dimensoes

6 DadafY (y), y ∈ [ymin, ymax ]tal que fY (y) < Fsup

6 Sorteia-se um numerouniforme ymin < y < ymax

6 Sorteia-se um numerouniforme 0 < z < Fsup

6 y e rejeitado se fY (y) < z6 y e aceito se fY (y) > z

f (y)

yymin ymax

Fsup

y

z

y

Repete-se o processo ate obtermos uma amostra com o numerode eventos necessarios (N y ’s aceitos)

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü ... um metodo que sempre pode ser aplicadoÜ O metodo tem dois pontos fracos:

ä Se Fsup for muito maior que o valor maximo defY (y)

ä Se fY (y) tiver um pico muito pronunciadoÜ O segundo sorteio sera muito ineficiente

Fsup

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü ... um metodo que sempre pode ser aplicadoÜ O metodo tem dois pontos fracos:

ä Se Fsup for muito maior que o valor maximo defY (y)

ä Se fY (y) tiver um pico muito pronunciado

Ü O segundo sorteio sera muito ineficiente

Fsup

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü ... um metodo que sempre pode ser aplicadoÜ O metodo tem dois pontos fracos:

ä Se Fsup for muito maior que o valor maximo defY (y)

ä Se fY (y) tiver um pico muito pronunciadoÜ O segundo sorteio sera muito ineficiente

Fsup

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü ... um metodo que sempre pode ser aplicadoÜ O metodo tem dois pontos fracos:

ä Se Fsup for muito maior que o valor maximo defY (y)

ä Se fY (y) tiver um pico muito pronunciadoÜ O segundo sorteio sera muito ineficienteÜ ... importante estimar bem Fsup e o intervalo [ymin, ymax ]

antes de aplicar o metodo

Met Comp

C: Divisao doPrograma emArquivos

SistemasAleatorios

DistDiscretas

DistContınuas

NumerosPseudo-Aleatorios

Metodo da Rejeicao

Ü ... um metodo que sempre pode ser aplicadoÜ O metodo tem dois pontos fracos:

ä Se Fsup for muito maior que o valor maximo defY (y)

ä Se fY (y) tiver um pico muito pronunciadoÜ O segundo sorteio sera muito ineficienteÜ ... importante estimar bem Fsup e o intervalo [ymin, ymax ]

antes de aplicar o metodoÜ Estude o programa gera gauss.c que sorteia

numeros pseudo-aleatorios segundo uma distribuicaogaussiana e gera gauss histo.c que preencheum histograma