View
116
Download
1
Category
Preview:
DESCRIPTION
Geração de Números pseudo aleatórios utilizando MATLAB.
Citation preview
Universidade de Brasília
Departamento de Engenharia Elétrica
Redes de Telecomunicações I
Exercício de Simulação I
Autores:
Márcia Manuela M. Nunes 09/0138821
Rodrigo Rozário Bezerra 09/0131622
Sávio Oliveira de Almeida Neves 09/013X26
Professor:
Darli Mello
Brasília
Dezembro de 2012
Fundamentação Teórica
Números pseudo-aleatórios
Sabendo que o resíduo de sucessivas potências de um número possui boas
propriedades aleatórias, a fórmula para geradores lineares congruentes multiplicativos
foi generalizada (1).
Os números pseudo-aleatórios gerados possuem um período, nele os números
gerados irão repetir. O tamanho máximo desse período é dado por 2𝑘−2 para geradores
com 𝑚 = 2𝑘 , e período máximo de 𝑚 para 𝑚 = 2𝑘 − 1.
𝑥𝑛 = 𝑎. 𝑥𝑛−1 𝑚𝑜𝑑 𝑚 (1)
Geração de uma variável aleatória
Um dos métodos utilizados para a obtenção de uma variável aleatória a partir de
outra, é a inversão. Neste método, a função densidade cumulativa da variável a ser
gerada é invertida e aplicada nesta função uma variável aleatória uniforme, gerando
assim a variável aleatória com a pdf desejada.
No caso de uma função exponencial negativa, a função inversa encontrada é (2).
𝑥 = −1
λ. ln(1 − 𝑢) (2)
Outro método utilizado é a caracterização, onde características especiais de
algumas distribuições permitem que suas variáveis sejam geradas usando algoritmos
especialmente adaptados para ela.
Sistemas M/M/1
Sistemas M/M/1 são formados por uma fila única e um servidor, as mensagens
que chegam ao buffer são armazenadas em fila e esperam pelo serviço de um único
elemento de processamento.
A chegada de elementos é determinada por uma distribuição de Poisson com
taxa λ e a tempo médio de serviço é de 1/µ. O número médio de usuário no servidor é
dado por λ/µ e a intensidade do tráfego ρ = λ/µ.
Resultados
1ª Questão
A fórmula para geradores lineares congruentes multiplicativos (1), com 𝑎 = 75,
𝑚 = 231 − 1 e semente X0 = 0, nos fornece os número pseudo-aleatórios mostrados no
gráfico da figura 1.
Figura 1 – Números pseudo-aleatórios gerados na questão 1
0 0.5 1 1.5 2
x 105
0
0.2
0.4
0.6
0.8
1
Amostra
Valo
r A
mo
stra
Amostra x Valor
Figura 2 – Auto-correlação na questão 1
Percebe-se um bom espalhamento dos 200.000 números gerados na figura 1. O
gráfico da figura 2 mostra a auto-correlação entre os números obtidos.
2ª Questão
Novamente utilizando a fórmula para geradores lineares congruentes
multiplicativos (1) com semente X0 = 7, mas alterando as constantes m e a para 231 e
75 − 1, respectivamente. Foi obtido o gráfico referente aos números pseudo-aleatórios
gerados, mostrado na figura 3.
Percebe-se no gráfico que em um determinado instante, o gerador apenas retorna
o número 0. Este comportamento é conseqüência da periodicidade do gerador, que
quando obtêm o valor 0, entra em um loop retornando sempre o mesmo valor 0.
O gráfico da figura 4 mostra auto- correlação entre os números obtidos.
0 1 2 3 4
x 105
0
1
2
3
4
5
6
7x 10
4
Amostra
Au
to-C
orr
ela
ção
Amostra x Auto-Correlação
Figura 3 - Números pseudo-aleatórios gerados na questão 2
Figura 4 - Auto-correlação na questão 2
3ª Questão
O gerador referente à primeira questão é a melhor escolha entre as duas questões
anteriores. Este fato se deve à maior periodicidade encontrada no primeiro gerador, e ao
0 0.5 1 1.5 2
x 105
0
0.2
0.4
0.6
0.8
1
Amostra
Valo
r A
mo
stra
Amostra x Valor
0 0.5 1 1.5 2 2.5 3 3.5 4
x 105
-2
0
2
4
6
8
10
12
Amostra
Au
to-C
orr
ela
ção
Amostra x Auto-Correlação
melhor espalhamento entre os números pseudo-aleatórios gerados, comportamentos
consequentes da escolha dos parâmetros a e m, onde 𝑚 = 231 − 1 fornece um maior
período (máximo período encontrado igual a m).
4ª Questão
Usando o método de inversão (2) foi gerada uma sequência de 200.000 tempos
entre chegadas com distribuição exponencial negativa.
O gráfico da figura 5 mostra o histograma dos tempos entre chegadas, onde é
possível observar o comportamento de uma variável aleatória que segue a função
densidade de probabilidade de uma exponencial negativa, mostrada no mesmo gráfico
por uma linha vermelha.
Figura 5 – Histograma tempo entre chegadas e PDF da exponencial negativa
5ª Questão
Cascateando os tempos de chegadas gerados na questão anterior, e analisando a
quantidade de chegadas a cada 500 janelas com 100 unidades de tempo foi gerado o
gráfico mostrado na figura 6. Utilizando a relação (3) pôde-se encontrar probabilidade
aproximada de X chegadas por unidade de tempo, já que é conhecida a quantidade de
quantas janelas em que ocorreram X chegadas.
𝑃 𝑋 = 𝑥 ≈𝑁𝑎
𝑁 (3)
0 2 4 6 8 100
0.5
1
1.5
2
2.5
Exp PDF e Histograma Normalizado
x
g(x
)
Histograma
No gráfico da figura 6, é possível observar o comportamento da função de
probabilidade Poissoniana, exaltada na linha vermelha do gráfico.
Figura 6 - Gráfico chegadas por unidade de tempo e PMF da Poisson
6ª Questão
É o método da caracterização.
7ª Questão
Utilizando as funções das questões anteriores, foi formado um sistema M/M/1
com 1 fila e 1 servidor. O gráfico do número médio de usuários no servidor em função
da intensidade do gráfico está mostrado na figura 7.
O número de usuário no servidor é dado por λ/µ, a intensidade do tráfego é dada
por ρ = λ/µ. Logo o número médio de usuários no servidor deve ser igual a ρ,
N=intensidade do tráfego. Espera-se teoricamente uma reta, o que é comprovado pelos
dados obtidos e mostrados na figura 7.
0 50 100 150 200 2500
0.01
0.02
0.03
0.04
0.05
Chegadas
Pro
bab
ilid
ad
e d
e C
heg
ad
as
PDF Poisson e Frequência Relativa
Frequência Relativa
Conclusão
A qualidade de funções geradoras de número pseudo-aleatórios foi observada e
comparada para dois casos distintos, mostrando assim, a importância da escolha dos
parâmetros.
A ferramenta Matlab para a simulação permitiu a visualização de eventos
probabilísticos tratados teoricamente, tais como o comportamento de eventos que
obedecem a uma função densidade de probabilidade (questão 4) ou função de
probabilidade (questão 5).
E por último, como as taxas aplicadas a um sistema de M/M/1 na quantidade de
usuários no sistema.
Código fonte
1ª Questão
clear all; close all;
a = 7^5; m = (2^31)-1; x = zeros(1,200000);
x(1) = 7; %semente
for n = drange(2:200000) x(n) = (mod (a*x(n-1) ,m)); end x=x/m; figure(1); plot(x,'.'); xlabel('Amostra'); ylabel('Valor Amostra'); title('Amostra x Valor');
figure(2); [R,lag] = xcorr (x); plot(R); xlabel('Amostra'); ylabel('Auto-Correlação'); title('Amostra x Auto-Correlação');
2ª Questão
clear all; close all;
a = (7^5)-1; m = (2^31); x = zeros(1,200000);
x(1) = 7; %semente
for n = drange(2:200000) x(n) = (mod (a*x(n-1) ,m)); end x=x/m; figure(1); plot(x,'.'); xlabel('Amostra'); ylabel('Valor Amostra'); title('Amostra x Valor');
figure(2); [R,lag] = xcorr (x); plot(R); xlabel('Amostra'); ylabel('Auto-Correlação'); title('Amostra x Auto-Correlação');
4ª Questão
clear all; close all;
% Gerador
a = 7^5; m = (2^31)-1; x = zeros(1,200000); x(1) = 7; %semente for n = drange(2:200000) x(n) = (mod (a*x(n-1) ,m)); end x=x/m;
%--------------------------
e = zeros(1,200000); for i = 1:200000 e(i) = -(1/2)*log(x(i)); end figure(1); [H,I]=hist(e,100); bar(I,H/trapz(I,H)); hold on; s = 0:0.0001:10; pdf=exppdf(s,1/2);
plot(s,pdf,'r'); hold off; title('Exp PDF e Histograma Normalizado') xlabel('x'); ylabel('g(x)'); legend('Histograma','PDF');
5ª Questão
clc; clear all; close all;
a = 7^5; m = (2^31)-1; x = zeros(1,200000); x(1) = 7; %semente for n = drange(2:200000) x(n) = (mod (a*x(n-1) ,m)); end x=x/m;
e = zeros(1,200000); for i = 1:200000 e(i) = -(1/2)*log(x(i)); end
elemento=0; tempo=zeros(1,200000); for i=1:200000 elemento=elemento+e(i); tempo(i)=elemento; end janela = zeros(1,500); soma =0; for i=1:500 utempo=100; for k=1:200000 if i==1 if tempo(k) <= utempo*i soma=soma+1; end end if i>1 if ((tempo(k) > utempo*(i-1))&&(tempo(k) <= utempo*i)) soma=soma+1; end end end janela(i)=soma; soma=0; end maxim=max(janela); freqrel = zeros(1,maxim); cont = 0; for i = 1:maxim for j= 1:500 if i == janela(j)
cont=cont+1; end end freqrel(i)=cont/500; cont=0; end area =sum(freqrel); freqrel=freqrel/area; bar(freqrel); hold on; axisx = 1:maxim; plot(poisspdf(axisx,200),'r'); hold off; xlabel('Chegadas'); ylabel('Probabilidade de Chegadas'); title('PDF Poisson e Frequência Relativa'); legend('Frequência Relativa','PDF');
7ª Questão
clc; clear all; close all; tempserv=0.1; usuamedios = zeros(1,41); intensidade = zeros(1,41);
for gira=1:41 a = 7^5; m = (2^31)-1; x = zeros(1,200000); x(1) = 7; for n = drange(2:200000) x(n) = (mod (a*x(n-1) ,m)); end x=x/m;
e = zeros(1,200000); for i = 1:200000 e(i) = -(1/2)*log(x(i)); end
elemento=0; chegada=zeros(1,200000); saida=zeros(1,200000); for i=1:200000 elemento=elemento+e(i); if i==1 chegada(i)=elemento; saida(i)=chegada(i)+tempserv; end if i>1 chegada(i)=elemento; if saida(i-1) > chegada(i) saida(i)=saida(i-1)+tempserv; end if saida(i-1)<= chegada(i) saida(i)=chegada(i)+tempserv;
end end end usuarios=zeros(1,50000); servidor=zeros(1,50000); fila=0; for i=1:50000 for j=1:200000 if chegada(j)<=i fila=fila+1; end if saida(j)<=i fila=fila-1; end end usuarios(i)=fila; if fila ~=0 servidor(i)=1; end fila=0; i end usuamedios(gira)=((sum(servidor))/50000); intensidade(gira)=2*tempserv; tempserv=tempserv+0.01; gira end plot(intensidade,usuamedios); hold on; intenteoric = 0.2:0.02:1; usuarteoric = intenteoric; plot(intenteoric,usuarteoric,'r'); hold off; title('Usuários x Tráfego') xlabel('Intensidade do Tráfego'); ylabel('Nº Médio de Usuários no Servidor'); legend('Simulação','Teórico');
Recommended