Professional Documents
Culture Documents
Exerccio de Simulao I
Autores: Mrcia Manuela M. Nunes 09/0138821 Rodrigo Rozrio Bezerra 09/0131622 Svio Oliveira de Almeida Neves 09/013X26 Professor: Darli Mello
Fundamentao Terica
Nmeros pseudo-aleatrios
Sabendo que o resduo de sucessivas potncias de um nmero possui boas propriedades aleatrias, a frmula para geradores lineares congruentes multiplicativos foi generalizada (1). Os nmeros pseudo-aleatrios gerados possuem um perodo, nele os nmeros gerados iro repetir. O tamanho mximo desse perodo dado por 22 para geradores com = 2 , e perodo mximo de para = 2 1. = . 1 (1)
(2)
Sistemas M/M/1
Sistemas M/M/1 so formados por uma fila nica e um servidor, as mensagens que chegam ao buffer so armazenadas em fila e esperam pelo servio de um nico elemento de processamento. A chegada de elementos determinada por uma distribuio de Poisson com taxa e a tempo mdio de servio de 1/. O nmero mdio de usurio no servidor dado por / e a intensidade do trfego = /.
Resultados
1 Questo
A frmula para geradores lineares congruentes multiplicativos (1), com = 75 , = 231 1 e semente X0 = 0, nos fornece os nmero pseudo-aleatrios mostrados no grfico da figura 1.
Amostra x Valor
1
0.8
Valor Amostra
0.6
0.4
0.2
0.5
1.5 x 10
2
5
Amostra
Figura 1 Nmeros pseudo-aleatrios gerados na questo 1
7 6
x 10
Amostra x Auto-Correlao
Auto-Correlao
5 4 3 2 1 0 0 1 2 Amostra 3 x 10 4
5
Percebe-se um bom espalhamento dos 200.000 nmeros gerados na figura 1. O grfico da figura 2 mostra a auto-correlao entre os nmeros obtidos.
2 Questo
Novamente utilizando a frmula 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 grfico referente aos nmeros pseudo-aleatrios gerados, mostrado na figura 3. Percebe-se no grfico que em um determinado instante, o gerador apenas retorna o nmero 0. Este comportamento conseqncia da periodicidade do gerador, que quando obtm o valor 0, entra em um loop retornando sempre o mesmo valor 0. O grfico da figura 4 mostra auto- correlao entre os nmeros obtidos.
Amostra x Valor
1
0.8
Valor Amostra
0.6
0.4
0.2
0.5
1.5 x 10
2
5
Amostra
Figura 3 - Nmeros pseudo-aleatrios gerados na questo 2
Amostra x Auto-Correlao
12 10
Auto-Correlao
8 6 4 2 0 -2 0
0.5
1.5
2.5
3.5 x 10
4
5
Amostra
Figura 4 - Auto-correlao na questo 2
3 Questo
O gerador referente primeira questo a melhor escolha entre as duas questes anteriores. Este fato se deve maior periodicidade encontrada no primeiro gerador, e ao
melhor espalhamento entre os nmeros pseudo-aleatrios gerados, comportamentos consequentes da escolha dos parmetros a e m, onde = 231 1 fornece um maior perodo (mximo perodo encontrado igual a m).
4 Questo
Usando o mtodo de inverso (2) foi gerada uma sequncia de 200.000 tempos entre chegadas com distribuio exponencial negativa. O grfico da figura 5 mostra o histograma dos tempos entre chegadas, onde possvel observar o comportamento de uma varivel aleatria que segue a funo densidade de probabilidade de uma exponencial negativa, mostrada no mesmo grfico por uma linha vermelha.
1.5
g(x)
1 0.5 0 0
10
x
Figura 5 Histograma tempo entre chegadas e PDF da exponencial negativa
5 Questo
Cascateando os tempos de chegadas gerados na questo anterior, e analisando a quantidade de chegadas a cada 500 janelas com 100 unidades de tempo foi gerado o grfico mostrado na figura 6. Utilizando a relao (3) pde-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)
No grfico da figura 6, possvel observar o comportamento da funo de probabilidade Poissoniana, exaltada na linha vermelha do grfico.
Probabilidade de Chegadas
0.02
0.01
50
100
150
200
250
Chegadas
Figura 6 - Grfico chegadas por unidade de tempo e PMF da Poisson
6 Questo
o mtodo da caracterizao.
7 Questo
Utilizando as funes das questes anteriores, foi formado um sistema M/M/1 com 1 fila e 1 servidor. O grfico do nmero mdio de usurios no servidor em funo da intensidade do grfico est mostrado na figura 7. O nmero de usurio no servidor dado por /, a intensidade do trfego dada por = /. Logo o nmero mdio de usurios no servidor deve ser igual a , N=intensidade do trfego. Espera-se teoricamente uma reta, o que comprovado pelos dados obtidos e mostrados na figura 7.
Concluso
A qualidade de funes geradoras de nmero pseudo-aleatrios foi observada e comparada para dois casos distintos, mostrando assim, a importncia da escolha dos parmetros. A ferramenta Matlab para a simulao permitiu a visualizao de eventos probabilsticos tratados teoricamente, tais como o comportamento de eventos que obedecem a uma funo densidade de probabilidade (questo 4) ou funo de probabilidade (questo 5). E por ltimo, como as taxas aplicadas a um sistema de M/M/1 na quantidade de usurios no sistema.
Cdigo fonte
1 Questo
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-Correlao'); title('Amostra x Auto-Correlao');
2 Questo
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-Correlao'); title('Amostra x Auto-Correlao');
4 Questo
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 Questo
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 Frequncia Relativa'); legend('Frequncia Relativa','PDF');
7 Questo
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('Usurios x Trfego') xlabel('Intensidade do Trfego'); ylabel('N Mdio de Usurios no Servidor'); legend('Simulao','Terico');