Sistemas Aleat ´orios
Um sistema ´e aleat´orio quando seu estado futuro s ´o pode ser conhecido pela realizac¸˜ao de uma experiˆencia.
❒ jogar uma moeda ou um dado
❒ decaimento de uma part´ıcula
❒ trajet´oria de uma part´ıcula ao passar num certo meio
❒ se um embri˜ao vai ser masculino ou feminino
❒ formac¸˜ao das esp´ecies
❒ bolsa de valores
A descric¸˜ao anal´ıtica desses problemas n˜ao ´e poss´ıvel.
☞
simulamos os processos ou trajet ´orias usando regras que achamos que sejam corretas - modelo.Essas regras envolvem aleatoriedade de alguma forma.
O que podemos saber s˜ao grandezas probabil´ısticas. Qual a probabilidade de um certo evento ocorrer.
Calculamos m´edias e desvios padr˜oes.
A comparac¸˜ao com o resultado experimental nos dir´a se o modelo est´a correto ou n˜ao.
Probabilidade - Distribuic¸ ˜oes discretas
x ´e uma vari´avel aleat´oria que pode ter m valores diferentes xi com i variando de
1 a m. (dado: m = 6, x1 = 1, x2 = 2, ..., x6 = 6)
Definimos a frequˆencia de ocorrˆencia do evento xi como o n´umero de vezes
N(xi) que ocorre xi quando repetimos o experimento N vezes.
Temos ent˜ao que
m X
i=1
N(xi) = N
A frequˆencia relativa do evento xi e definida como´ F(xi) =
N(xi) N
Se o experimento ´e repetido N → ∞, F(xi) se torna um n´umero cada vez mais
definido que ´e a probabilidade de ocorrˆencia do evento xi P(xi) = lim
N →∞
N(xi)
N
que est´a entre 0 e 1. e temos
m X
i=1
Distribuic¸˜ao Discreta Uniforme
Se as probabilidades para cada valor s˜ao iguais:P (x1) = P (x2) = . . . = p m X i=1 P (xi) = p m X i=1 1 = pm = 1 p = 1/m N 10 100 1000 104 105 106 N (x4) 3 12 163 1698 16605 166753 F (x4) 0.3 0.12 0.163 0.1698 0.1660 0.16675 P (x4) = p = 1/6 = 0, 166666...
Distribuic¸˜oes discretas
Se conseguirmos determinar a func¸˜ao P (xi) passamos a conhecer bem o sistema.
Em geral, o que conseguimos determinar s˜ao as m´edias e desvios padr˜oes:
¯ x = X i xiN (xi) N = X i xiP (xi) σ2 = X i (xi − ¯x)2P (xi)
No caso de uma moeda, a probabilidade de tirar N1 caras em N jogadas ´e
dada pela distribuic¸˜ao binomial
P (N, N 1) = N !
N1!(N − N 1)!
pN1qN −N1, (1)
onde p ´e a probabilidade de tirar cara em uma jogada, e q de tirar coroa.
Distribuic¸˜oes Cont´ınuas
Se X ´e uma vari´avel 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´a o valor num´erico de dP (x) para um mesmo x
Neste caso ´e mais significativa
a definic¸˜ao de densidade de probabilidade
dP (x)
dx = fX(x) ou seja,
A func¸˜aofX(x) define a distribuic¸˜ao da vari´avel aleat´oria X
se queremos saber qual a probabilidade de ter x entre os valores a e b,
temos
P (a ≤ x ≤ b) = Z b
a
P (x)dx. (2)
P (x) deve ser tal que R P (x)dx = 1
A m´edia e desvio padr˜ao s˜ao definidas como:
¯ x = Z xP (x)dx σ2 = Z (x − ¯x)2P (x)dx
Gerac¸˜ao de n ´umeros aleat´orios
Problema determin´ıstico: conhecer a trajet ´oria ou a evoluc¸˜ao temporal de uma determinada vari´avel.
Sistema ´e aleat´orio: cada trajet´oria ser´a diferente, mesmo partindo de uma ´unica condic¸˜ao inicial. O que tem sentido ´e conhecer o comportamento m´edio.
Usamos o computador para simular processos usando regras
pr´e-determinadas, que em geral envolver˜ao aleatoriedade em alguma forma. Essas regras formam o modelo, e saberemos se s˜ao adequadas a
posteriori, ou seja, depois que calcularmos as m´edias e flutuac¸ ˜oes e
compararmos com um sistema real.
Devemos escolher corretamente a distribuic¸˜ao utilizada. Na simulac¸˜ao computacional isso ´e feito sempre a partir de um gerador de n ´umeros aleat´orios. O C vem com a func¸˜ao rand() que gera n´umeros inteiros entre 0 e RAND MAX que est´a definida em stdlib.h
#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);
}
Para gerar n´umeros entre 0 e 1:
x = ((double)rand())/RAND MAX Para gerar n´umeros entre a e b:
x = a + (b-a)*((double)rand())/RAND MAX
Modifique o programa anterior para gerar n´umeros aleat´orios entre 2
n´umeros `a sua escolha. Calcule e imprima a m´edia e o desvio padr˜ao (σ):
xm = 1 N N X i=1 xi σ2 = 1 N N X i=1 x2i ! − x2m Preencha um histograma.
Gerac¸˜ao de Distribuic¸˜ao N˜ao Uniforme
M´etodo da Transformada
Suponha X seja distribu´ıda de acordo com PX(x). Ou seja, a
probabilidade de encontrar X com valor entre x e x + dx ´e PX(x)dx. Seja y uma outra vari´avel aleat´oria, tal que y = f (x).
A distribuic¸˜ao PY (y) pode ser obtida a partir de PX(x) usando-se a lei fundamental de transformac¸˜ao de probabilidades:
|PX(x)dx| = |PY (y)dy| ou PY (y) = PX(x) dx dy (3)
Queremos gerar uma distribuic¸˜ao de Poisson, descrita por
PY (y) = exp(−y) a partir da distribuic¸˜ao uniforme PX(x) = 1. Usando PY (y) = dx dy temos exp(−y) = dx dy =⇒ x = R y 0 exp(−y)dy = 1 − exp(−y) Invertendo, temos: x − 1 = − exp(−y) =⇒ ln(1 − x) = −y =⇒ y = − ln(1 − x)
Assim, usamos o gerador de n´umeros padr˜ao para conseguir valores de x
e calculamos y usando y = − ln(1 − x). ´
E importante notar que em geral isso envolve manipular os n ´umeros gerados de alguma forma, ajustando normalizac¸˜ao e deslocamento.
0 x 1 y p(y) Ry 0 p(y)dy
M´etodo da rejeic¸ ˜ao
P(y1) ymax ymin pteste y1 1Queremos gerar uma distribuic¸˜ao de
acordo com PY (y), definida no intervalo
[ymin, ymax], cujo valor m´aximo ´e 1. Sorteamos um n´umero
y1 uniformemente entre ymin e ymax. Geramos um
outro n´umero aleat´orio entre 0 e 1 (pteste) Aceitamos
Tarefa 12
1. Use o m´etodo da transformada para gerar uma sequˆencia de n´umeros entre 0 e 10, distribu´ıdos de acordo com
P (y) = exp (−y)
2. Use o m´etodo da rejeic¸˜ao para gerar uma sequˆencia de n´umeros distribu´ıdos de acordo com a distribuic¸˜ao gaussiana:
P (y) = σ√1
2π exp [−(y − ym)
2/(2σ2)]
com Pmax = 1. Experimente os valores σ = 2.0 ym = 0.0,
σ = 2.0 ym = 5.0,σ = 4.0 ym = 0.0. O que acontece com a
distribuic¸˜ao quando ym ´e aumentado? E quando σ ´e 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 ´udo do histograma deve ser normalizado por