Sistemas Aleatórios Um sistema é aleatório quando seu estado futuro só pode ser conhecido pela realização de uma experiência. jogar uma moeda ou um dado decaimento de uma partícula trajetória de uma partícula ao passar num certo meio se um embrião vai ser masculino ou feminino formação das espécies bolsa de valores sistema de trânsito Page 1
A descrição analítica desses problemas não é possível. simulamos os processos ou trajetórias usando regras que achamos que sejam corretas - modelo. Essas regras envolvem aleatoriedade de alguma forma. O que podemos saber são grandezas probabilísticas. Qual a probabilidade de um certo evento ocorrer. Calculamos médias e desvios padrões. A comparação com o resultado experimental nos dirá se o modelo está correto ou não. Page 2
Probabilidade - Distribuições discretas x é uma variável aleatória que pode ter m valores diferentes x i com i variando de 1 a m. (dado: m = 6, x 1 = 1, x 2 = 2,..., x 6 = 6) Definimos a frequência de ocorrência do evento x i como o número de vezes N(x i ) que ocorre x i quando repetimos o experimento N vezes. Temos então que m i=1 N(x i ) = N A frequência relativa do evento x i é definida como F (x i ) = N(x i) N Se o experimento é repetido N, F (x i ) se torna um número cada vez mais definido que é a probabilidade de ocorrência do evento x i que está entre 0 e 1. e temos P (x i ) = lim N m i=1 P (x i ) = 1 N(x i ) N Page 3
Distribuição Discreta Uniforme Se as probabilidades para cada valor são iguais: P (x 1 ) = P (x 2 ) =... = p m m P (x i ) = p 1 = pm = 1 i=1 i=1 p = 1/m N 10 100 1000 10 4 10 5 10 6 N(x 4 ) 3 12 163 1698 16605 166753 F (x 4 ) 0.3 0.12 0.163 0.1698 0.1660 0.16675 P (x 4 ) = p = 1/6 = 0, 166666... Page 4
Distribuições discretas Se conseguirmos determinar a função P (x i ) passamos a conhecer bem o sistema. Em geral, o que conseguimos determinar são as médias e desvios padrões: x = i x i N(x i ) N = i x i P (x i ) σ 2 = i (x i x) 2 P (x i ) Page 5
No caso de uma moeda, a probabilidade de tirar N 1 caras em N jogadas é dada pela distribuição binomial P (N, N1) = N! N 1!(N N1)! pn 1 q N N 1, (1) onde p é a probabilidade de tirar cara em uma jogada, e q de tirar coroa. Para uma moeda simétrica, p = q = 0.5. Page 6
Distribuições Contínuas Se X é uma variável contínua, fica sem sentido falar na probabilidade de ter x como resultado. Definimos um intervalo dx e dp (x) como a probabilidade de encontrar o resultado entre x e x + dx. dp (x) depende de x e do tamanho de dx. Quanto maior for o intervalo considerado, maior será o valor numérico de dp (x) para um mesmo x Neste caso é mais significativa a definição de densidade de probabilidade ou seja, dp (x) dx = f X (x) dp (x) = P (x)dx = f X (x)dx Page 7
A funçãof X (x) define a distribuição da variável aleatória X se queremos saber qual a probabilidade de ter x entre os valores a e b, temos P (a x b) = P (x) deve ser tal que P (x)dx = 1 b A média e desvio padrão são definidas como: a P (x)dx. (2) x = xp (x)dx σ 2 = (x x) 2 P (x)dx Page 8
Geração de números aleatórios Problema determinístico: conhecer a trajetória ou a evolução temporal de uma determinada variável. Sistema é aleatório: cada trajetória será diferente, mesmo partindo de uma única condição inicial. O que tem sentido é conhecer o comportamento médio. Usamos o computador para simular processos usando regras pré-determinadas, que em geral envolverão aleatoriedade em alguma forma. Essas regras formam o modelo, e saberemos se são adequadas a posteriori, ou seja, depois que calcularmos as médias e flutuações e compararmos com um sistema real. Devemos escolher corretamente a distribuição utilizada. Na simulação computacional isso é feito sempre a partir de um gerador de números aleatórios. O C vem com a função rand() que gera números inteiros entre 0 e RAND MAX que está definida em stdlib.h Page 9
#include <stdio.h> #include <stdlib.h> int main() { int s, i, N, x, a, b; printf("digite um numero inteiro e pressione enter\n\n"); scanf("%d", &s); printf("informe o numero de sorteios\n\n"); scanf("%d", &N); a = 0; b = RAND_MAX; printf("\nsorteia %d inteiros entre %d e %d:\n\n", N, a, b ); srand(s); // inicializa a semente for(i = 1; i <= N; i++){ x = rand(); printf("%d %d\n\n",i,x); } return 0; } Page 10
Para gerar números entre 0 e 1: x = ((double)rand())/rand MAX Para gerar números entre a e b: x = a + (b-a)*((double)rand())/rand MAX Modifique o programa anterior para gerar números aleatórios entre 2 números à sua escolha. Calcule e imprima a média e o desvio padrão (σ): x m = 1 N N x i σ 2 = i=1 ( 1 N N i=1 x 2 i ) x 2 m Preencha um histograma. Salve o resultado do histograma em um arquivo e visualize-o no gnuplot. Page 11
Geração de Distribuição Não Uniforme Método da Transformada Suponha X seja distribuída de acordo com P X (x). Ou seja, a probabilidade de encontrar X com valor entre x e x + dx é P X (x)dx. Seja y uma outra variável aleatória, tal que y = f(x). A distribuição P Y (y) pode ser obtida a partir de P X (x) usando-se a lei fundamental de transformação de probabilidades: P X (x)dx = P Y (y)dy ou P Y (y) = P X (x) dx dy (3) Page 12
Queremos gerar uma distribuição de Poisson, descrita por P Y (y) = exp( y) a partir da distribuição uniforme P X (x) = 1. Usando P Y (y) = dx temos exp( y) = Invertendo, temos: dy dx dy = x = y 0 exp( y)dy = 1 exp( y) x 1 = exp( y) = ln(1 x) = y = y = ln(1 x) Assim, usamos o gerador de números padrão para conseguir valores de x e calculamos y usando y = ln(1 x). É importante notar que em geral isso envolve manipular os números gerados de alguma forma, ajustando normalização e deslocamento. Page 13
1 y 0 p(y)dy x p(y) 0 y Page 14
Método da rejeição Queremos gerar uma distribuição de acordo com P Y (y), definida no intervalo [y min, y max ], cujo valor máximo é 1. Sorteamos um número y 1 uniformemente entre y min e y max. Geramos um outro número aleatório entre 0 e 1 (p teste ) 1 P(y 1 ) p teste Aceitamos se P Y (y 1 ) > p teste. Senão y 1 é rejeitado. y min y 1 y max Page 15
Tarefa 12 1. Use o método da transformada para gerar uma sequência de números entre 0 e 10, distribuídos de acordo com P (y) = exp ( y) 2. Use o método da rejeição para gerar uma sequência de números distribuídos de acordo com a distribuição gaussiana: P (y) = 1 σ 2π exp [ (y y m) 2 /(2σ 2 )] com P max = 1. Experimente os valores σ = 2.0 y m = 0.0, σ = 2.0 y m = 5.0,σ = 4.0 y m = 0.0. O que acontece com a distribuição quando y m é aumentado? E quando σ é aumentado? Nos dois exercícios, guarde o resultado em um histograma. Salve o resultado do histograma em um arquivo para ser visualizado no gnuplot. O eixo x deve ser o valor do centro do bin e o conteúdo do histograma deve ser normalizado por N dx. No gnuplot superponha à essa distribuição a função desejada Page 16
Page 17
Page 18