Professional Documents
Culture Documents
Sobre o autor
Professor do Colegiado de Engenharia da Computao
Universidade Federal do Vale do So Francisco
Avenida Antnio Carlos Magalhes, 510 Santo Antnio
48.902-300 Juazeiro - BA - Brasil
e-mail: brauliro.leal@univasf.edu.br
site: www.univasf.edu.br/~brauliro.leal
Primeira Edio Eletrnica: Abril de 2016
ISBN: a ser feito
Tabela de Smbolos
Smbolo
Descrio
fdp, f, pdf
FDA, F, CDF
GVA
GNA
X
iid
E(X), m
IC
n
N
Sumrio
1 Introduo.............................................................................................................................17
1.1 Sistema...............................................................................................................................18
1.2 Modelo...............................................................................................................................19
1.3 Simulao............................................................................................................................20
1.3.1 Simulao Contnua.........................................................................................................20
1.3.2 Simulao Monte Carlo..................................................................................................21
1.3.3 Simulao de Eventos Discretos.....................................................................................21
1.3.4 Simulao de Trace.........................................................................................................21
1.4 Simulao Computacional.................................................................................................22
1.5 Etapas de um Estudo de Simulao...................................................................................22
1.6 Sistemas de Fila.................................................................................................................24
1.6.1 Notao de Kendall para Sistemas de Fila......................................................................25
1.6.2 Variveis Aleatrias dos Sistemas de Fila........................................................................27
1.6.3 Processos de Poisson........................................................................................................30
1.6.4 Probabilidade de Estado para Processos Nascimento Morte...........................................31
1.6.5 Sistemas de Filas M/M/1..................................................................................................32
1.7 Outra Viso para Estudar Modelagem e Simulao............................................................35
1.8 Recursos Didticos Pedaggicos.......................................................................................39
1.9 Questes.............................................................................................................................43
1.10 Exerccios..........................................................................................................................43
2 Simulao de Sistemas de Fila...............................................................................................45
2.1 Modelo Conceitual de Sistemas de Fila..............................................................................46
2.1.1 Valores iniciais da Simulao..........................................................................................48
2.1.2 Clculo de at....................................................................................................................49
2.1.3 Clculo de bs....................................................................................................................49
2.1.4 Clculo de es....................................................................................................................50
2.1.5 Estatsticas de Sistemas de Fila M/M/1..........................................................................50
2.1.5.1 Algoritmo para Calcular nq...........................................................................................51
2.1.5.2 Valores de E(ns)............................................................................................................52
2.1.5.3 Algoritmo para Calcular p0...........................................................................................52
2.1.6 Resumo do Modelo de Sistemas de Filas M/M/1............................................................53
2.2 Modelo Computacional de Sistemas de Fila M/M/1.........................................................54
2.2.1 Software QS.cpp.............................................................................................................57
2.3 Questes..............................................................................................................................67
2.4 Exerccios...........................................................................................................................67
2.5 Recursos Didticos Pedaggicos.......................................................................................68
2.5.1 Classe clQS.....................................................................................................................68
2.5.2 Software QSTable.html...................................................................................................71
2.5.3 Software QSPlot.html.....................................................................................................72
2.5.4 Software Nq.html............................................................................................................76
3 Seleo de Distribuies de Probabilidade............................................................................80
3.1 Independncia de Observaes..........................................................................................82
3.2 Distribuies de Probabilidade teis.................................................................................83
3.3 Estimao de Parmetros...................................................................................................85
3.3.1 Mtodo da Mxima Verossimilhana..............................................................................86
3.3.2 Mtodo dos Mnimos Quadrados....................................................................................87
3.4 Estimativa dos Parmetros das FDP..................................................................................88
3.4.1 Estimativa dos parmetros da fdp Beta...........................................................................89
3.4.2 Estimativa dos parmetros da fdp Gamma.....................................................................90
Modelagem e Simulao Discreta
ndice de figuras
Figura 1 - Esquema dos principais tpicos do livro..................................................................12
Figura 2 - Representao grfica da relao sistema mundo real.............................................15
Figura 3 - Circuito integrado TTL 7400 (fonte: pt.wikipedia.org/wiki/Porta_lgica)..............15
Figura 4 - Representao grfica da relao mundo real-sistema-modelo...............................16
Figura 5 - Modelo do circuito integrado TTL 7400 (fonte:
pt.wikipedia.org/wiki/Porta_lgica)..........................................................................................17
Figura 6 - Representao grfica da relao mundo real-sistema-modelo-simulao..............17
Figura 7 - Representao grfica dos Sistemas de Fila, sua estrutura, parmetros bsicos e
inter-relaes entre seus componentes (Jain, 1991)..................................................................21
Figura 8 - Representao grfica de Sistemas de Fila simples destacando sua estrutura, os
processos de chegada e sada, a formao da Fila com tarefas em espera e o Servidor...........22
Figura 9 - Variveis aleatrias utilizadas na anlise de Sistemas de Fila Simples, adaptado de
Jain (1991).................................................................................................................................24
Figura 10 - Relao entre os processos estocsticos.................................................................27
Figura 11 - Diagrama de transio de estado de Processo Nascimento-Morte.........................29
Figura 12 - Diagrama de transio de estado de Sistemas de Fila M/M/1 destacando os valores
constantes das taxas de transio e .....................................................................................29
Figura 13 - Diagrama com as etapas em um estudo envolvendo modelagem e simulao
segundo Freitas Filho (2008)....................................................................................................33
Figura 14 - Resultados do modelo analtico de Sistema de Filas M/M/1 utilizando o software
MM1Analitico.html..................................................................................................................40
Figura 15 - Modelo de Sistemas de Filas M/M/1 e seus elementos constituintes: a a Fila, o
Servidor e as tarefas aguardando processamento......................................................................43
Figura 16 - Modelo Conceitual de Sistemas de Fila M/M/1 com seus processos, variveis de
entrada e sada, nmeros, eventos e tempos em cinco nveis, adaptado de Jain (1991)...........44
Figura 17 - Tarefa chegando em Sitemas de Fila: a) Servidor ocioso quando at[e] > es[e-1] e
bs[e] = at[e]; b) Servidor ocupado quando at[e] es[e-1] e bs[e] = es[e-1].............................46
Figura 18 - Valor de at da tarefa e em relao aos valores de es das tarefas anteriores,
ilustrando as 5 tarefas na Fila, ou seja, at[e] < es[e-4] que o mesmo que at[e] es[e-5]......49
Figura 19 - Diagrama de classes do software QS.cpp...............................................................59
Figura 20 - Diagrama de atividades do software QS.cpp.........................................................60
Figura 21 - Resultados da execuo do software QSTable.html (Algoritmo 2.7) com entradas
N = 10, l = 0.167 e m = 0.191...................................................................................................69
Figura 22 - Resultado da execuo do software QSPlot.html...................................................73
Figura 23 - Tabelas com os dados calculados pelo software Nq.html para N = 15, l = 1, m = 2
...................................................................................................................................................75
Figura 24 - Modelagem e anlise estatstica (Kroese & Chan, 2014).......................................77
Figura 25 - Grficos de disperso dos pontos (xi,xi+1) do Exemplo 3.2.................................80
Figura 26 - Relacionamento entres as funes densidade de probabilidade, adaptado de
Zwillinger & Kokoska (2000)...................................................................................................81
Figura 27 - Regies de probabilidade de aceitao (verde) ou rejeio (vermelho) da hiptese
H0 ao nvel de significncia ...................................................................................................89
Figura 28 - Grfico de disperso para avaliar graficamente a independncia dos nmeros
aleatrios.................................................................................................................................109
Figura 29 - Grficos de barra para avaliar a independncia de dados amostrais....................110
Figura 30 - Grfico de setores para avaliar a independncia de dados mostrais.....................111
Figura 31 - Transformao de variveis aleatrias U(0,1) em distribuies arbitrrias pelo
mtodo da inversa....................................................................................................................116
Figura 32 - Ilustrao do Mtodo da Aceitao-Rejeio.......................................................119
Modelagem e Simulao Discreta
ndice de tabelas
Tabela 1 - Estgios da construo de modelos para simulao de sistemas segundo Jain (1991)
...................................................................................................................................................21
Tabela 2 - Componentes dos Sistemas de Fila..........................................................................23
Tabela 3 - Os seis parmetros bsicos dos Sistemas de Fila.....................................................23
Tabela 4 - Descrio dos parmetros da notao de Kendall para Sistemas de Fila.................24
Tabela 5 - Valores dos parmetros da notao de Kendall para Sistemas de Fila.....................25
Tabela 6 - Disciplinas de filas de sistemas computacionais......................................................25
Tabela 7 - Variveis aleatrias fundamentais dos Sistemas de Fila Simples (Jain, 1991)........26
Tabela 8 - Resultados analticos de Sistemas de Fila M/M/1 segundo a Teoria das Filas (Jain,
1991).........................................................................................................................................28
Tabela 9 - Descrio das etapas em um estudo envolvendo modelagem e simulao segundo
Freitas Filho (2008)...................................................................................................................35
Tabela 10 - Simulao de um Sistema de Fila M/M/1..............................................................47
Tabela 11 - Valores das variveis aleatrias dos Sistemas de Fila M/M/1 e seus valores mdios
...................................................................................................................................................49
Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1.....................................................52
Tabela 13 - Entrada, parmetros, variveis de estado e sada do Modelo Computacional de
Sistemas de Fila M/M/1............................................................................................................52
Tabela 14 - Entrada, parmetros, variveis de estado e sada do Modelo Computacional de
Sistemas de Fila M/M/1............................................................................................................52
Tabela 15 - Classe clQS do Modelo Computacional dos Sistemas de Fila M/M/1..................54
Tabela 16 - Variveis utilizadas no software QS.cpp................................................................60
Tabela 17 - Etapas para a aplicao de testes de aderncia, adaptada de Jain (1991)..............80
Tabela 18 - Funes densidade de probabilidade mais relevantes com seus parmetros, mdia
e varincia (Forbes et al., 2011)................................................................................................83
Tabela 19 - Definies da fdp Exponencial e seus parmetros.................................................87
Tabela 20 - Linguagens de programao e geradores de nmeros aleatrios.........................105
Tabela 21 - As funes, a constante e as bibliotecas da linguagem C para gerar nmeros
aleatrios.................................................................................................................................106
Tabela 22 - Aplicaes do Mtodo da Inversa da FDA onde u ~ U(0,1), Forbes et al. (2011)
.................................................................................................................................................119
Tabela 23 - Categorias dos modelos relativa a implementao das hipteses e realismo dos
pressupostos............................................................................................................................131
Tabela 24 - Tcnicas para a Verificao de Modelos..............................................................131
Tabela 25 - Mtodos para a remoo de transientes so.........................................................139
Tabela 26 - Quadro com as b rodadas do Mtodo de Replicao Independente, cada rodada
com k eventos e suas respectivas mdias................................................................................142
Tabela 27 - Quadro do Mtodo das Mdias de Lotes com uma rodada com 24 eventos
distribudos em 4 lotes, cada lote com 6 eventos e suas respectivas mdias..........................144
Tabela 28 - Intervalo de confiana da mdia (), da varincia (2) e do desvio padro () de
amostras aleatrias de tamanho n de uma populao normal, com nvel de significncia e
desconhecido...........................................................................................................................151
Tabela 29 - Resultados da execuo do Software AH.html do Algoritmo 7.1........................161
Tabela 30 - Resultado da execuo do software QS-RI.cpp descrito no Algoritmo 7.2, para a
varivel de estado r..................................................................................................................165
Tabela 31 - Resultado parcial da execuo do software QS-ML.cpp descrito no Algoritmo 7.3
.................................................................................................................................................168
Tabela 32 - Valores iniciais de iat, at, bs, es e idt dos SF da primeira sequncia S................174
Tabela 33 - Classe clMM1 do Modelo Computacional dos Sistemas de Fila M/M/1............175
Modelagem e Simulao Discreta
10
Tabela 34 - Descrio das classes do Modelo Computacional dos Sistemas de Fila M/M/1. 175
Tabela 35 - Variveis utilizadas no software QSN.cpp...........................................................182
Tabela 36 - Resultado da execuo do software QSN.cpp descrito na Tabela 8.3..................183
Tabela 37 - Testes de Hiptese e os Erros Tipo I e Tipo II.....................................................206
Tabela 38 - Quantis da Distribuio Normal Unitria............................................................208
Tabela 39 - Quantis da distribuio 2....................................................................................211
Tabela 40 - Quantis da Distribuio KS..................................................................................213
Tabela 41 - Quantis da Distribuio Normal Unitria............................................................217
Tabela 42 - Quantis da Distribuio t unilateral......................................................................219
Tabela 43 - Quantis da Distribuio t bilateral........................................................................221
Tabela 44 - Quantis da distribuio 2 bilateral......................................................................223
11
Prefcio
Este livro tem como principal objetivo o de servir de texto para a disciplina
Modelagem e Simulao do curso de Engenharia da Computao do
Colegiado de Engenharia da Computao da Universidade Federal do Vale
do So Francisco. Os grandes temas deste livro so: Sistemas de Fila,
Gerao de Nmeros Aleatrios, Gerao de Variveis Aleatrias,
Verificao de Modelos, Validao de Modelos, Simulao de Sistemas de
Fila e Anlise de Resultados Simulados.
A partir da Teoria de Filas e dos Modelos de Sistemas de Filas foram
construdos os Modelos Conceituais de Sistemas de Fila e seus respectivos
Modelos Conceitual e Computacional. Estes modelos permitem tratar dos
temas deste livro e so os eixos que do suporte teoria e s aplicaes
da Modelagem e Simulao Discreta.
O Modelo Conceitual de Sistemas de Fila e seu respectivo Modelo
Computacional, apresentados neste livro, separam o processo de
simulao da anlise estatstica dos resultados, enfatizando as variveis
de real interesse para a simulao, tornando o modelo mais simples. Esta
abordagem revelou-se assaz didtica.
Os modelos computacionais foram implementados em C++, pelo rigor da
linguagem, e em Javascript com HTML5, que permitir a visualizao
grfica e a dinmica da simulao, viabilizando seu uso em diversos tipos
de computadores, dispositivos mveis, navegadores e sistemas
operacionais. Esta implementao permite a avaliao grfica do
comportamento dos sistemas simulados, dando grande estmulo
aprendizagem, com resultados inspiradores.
Os algoritmos para a Gerao de Variveis Aleatrias tambm so
contribuies relevantes, permitem gerar vrias funes distribuio
acumulada, discretas e contnuas, a partir de nmeros aleatrios, dando
suporte simulao computacional.
Outros algoritmos foram desenvolvidos, destinados aos tpicos relevantes
da Simulao de Sistemas Simples de Fila, para Verificao e Validao de
Modelos e tambm para a Anlise de Resultados Simulados, com destaque
para os mtodos de Replicao Independente e Lotes Mdios.
O autor espera que tenha contribudo com o ensino destes contedos de
modo a torn-los mais atraentes, visuais, dinmicos e aplicados nas
diversas reas de conhecimento, quando cabvel. Na esperana de que os
12
Teorias da Filas
Estatstica
Computadores,
Linguagem e
Tcnicas
Computacionais
Geradores de
Nmeros
Aleatrios e
Gerao de
Variveis
Aleatrias
13
Matemtica
14
GVA
Validao
Simulao
15
16
1 INTRODUO
17
1.1 SISTEMA
O termo sistema pode ser definido como um conjunto estruturado
componentes entre os quais pode-se definir alguma relao
funcionalidade. O valor dos atributos dos seus componentes, variveis
estado e parmetros, em um dado instante de tempo, define o estado
sistema, Figura 2.
de
de
de
do
Figura
3
Circuito
integrado
pt.wikipedia.org/wiki/Porta_lgica)
Modelagem e Simulao Discreta
TTL
7400
(fonte:
18
1.2 MODELO
Modelos so descries de um sistema, concebidos atravs de uma
abstrao da realidade, considerando seus aspectos relevantes, para
permitir uma anlise simplificada sem descartar aspectos importantes da
realidade, de modo que possam ser utilizados com os propsitos de
controle e predio.
A construo de um modelo, em geral, busca viabilizar a soluo de um
problema de um sistema, podendo existir um nmero variado de modelos
para um mesmo sistema, cada um deles considerando aspectos
especficos do mesmo. muito comum ter vrios modelos para resolver o
mesmo problema de um sistema.
A utilidade de um modelo est diretamente relacionada sua capacidade
de incorporar elementos reais de forma simples, contendo seus aspectos
importantes sem que a sua complexidade impossibilite a compreenso e
manipulao do mesmo, Figura 4.
19
integrado
TTL
7400
(fonte:
1.3 SIMULAO
Simulao consiste em manipular um modelo de um sistema, real ou
hipottico, para compreender seu comportamento ou avaliar sua
operao, Figura 6.
1.3.1
SIMULAO CONTNUA
20
1.3.2
1.3.3
1.3.4
SIMULAO DE TRACE
21
Formulao do
Problema
Objetivos
22
Determinao
dos Dados de
Entrada e Sada
Construo do
Modelo
Computacional
Verificao
Validao
Implementao
dos Resultados
Documentao
do Modelo
Relatrio da
Simulao
23
Sistemas de Fila podem ser descritos como tarefas chegando para serem
processadas e saindo do sistema aps serem atendidas. A formao de fila
ocorre quando a procura maior do que a capacidade de atendimento do
Servidor. O fluxo temporal das tarefas nas Filas e no Servidor determina a
dinmica do sistema.
A Figura 7 representa graficamente um Sistema de Fila, nela pode-se ver
ainda a estrutura destes modelos, seus parmetros e as inter-relaes
entre seus componentes. Nesta figura pode-se identificar seis parmetros
bsicos dos Sistemas de Fila, que so descritos na Tabela 3.
Descrio
o processo de chegada de tarefas ou entrada na fila do sistema,
medido em termos de nmero mdio de chegadas por unidade de
tempo ( taxa mdia de chegada) ou pelo tempo mdio entre
chegadas sucessivas
24
2. Distribuio do
tempo de servio
3. Nmero de
Servidores
4. Capacidade do
Sistema
5. Tamanho da
populao
6. Disciplina de
Servio
O modelo mais simples dos Sistemas de Fila aquele que possui uma
nica fila e apenas um servidor, Figura 8. O modelo Fila+Servidor pode ser
usado para analisar os recursos individuais de sistemas de computao
como, por exemplo, se tarefas a serem processadas por uma CPU so
mantidas em uma memria, a CPU pode ser modelada por um Sistema de
Fila simples, onde a memria a Fila e a CPU o Servidor do sistema.
1.6.1
25
m
Z
B
c
K
m
Distribuio de
tempo entre
chegadas
Distribuio de
tempo de servio
Nmero de
servidores
Capacidade do
sistema
Tamanho da
populao
Disciplina da fila
Valores
M Processo de Poisson
(Markoviano)
D Determinstica
E Erlang ( = 1,2, ...)
GI Geral e Independente
M, D, E, GI
1, 2, ...,
1, 2, ...,
1, 2, ...,
FIFO primeiro que chega
o primeiro a ser atendido
LIFO ltimo que chega o
primeiro a ser atendido
SIRO servio com ordem
aleatria
PRI prioridade
1.1
26
IS (infinite server)
PRTY (nonpreemptive
priority)
1.6.2
27
n
nq
ns
r
w
Descrio
tempo entre chegadas, isto , o tempo entre duas chegadas sucessivas
taxa mdia de chegada por unidade de tempo, = 1/E[]
tempo de servio, tempo requerido para processar tarefas
taxa mdia de servio por Servidor por unidade de tempo, = 1/E[s], a taxa
total de servio para m Servidores m
nmero de tarefas no Sistema, inclui as tarefas sendo atendidas e as que
esperam na Fila
nmero de tarefas esperando na Fila ou comprimento da Fila
nmero de tarefas sendo atendidas
tempo de resposta ou tempo no Sistema, inclui tanto o tempo de espera para
ser atendido quanto o tempo de atendimento
tempo de espera na Fila, intervalo de tempo entre a chegada e o incio do
atendimento da tarefa
Condio de estabilidade:
1.2
1.3
28
nmero mdio de tarefas na Fila=taxa de chegada x tempo mdio de esperana Fila 1.4
E[nq ]= E[w ]
1.5
1.6
1.7
=
< 1
p0=(1)
pn=(1)n , n
E[n]=
1
V [n]=
(1)2
P[nq =k ]=12 , k =0
P[nq =k ]=(1)k+1 , k >0
2
E[nq ]=
1
29
2 (1+2 )
10. Varincia do nmero mdio de tarefas na Fila
V [nq ]=
(1)2
11. FDA do tempo de resposta
F( r)=1e(1)r
1
E[r ]=
12. Tempo mdio de resposta
(1)
1
V [r ]= 2
13. Varincia do tempo de resposta
(1)2
100
w q=E [r ] ln(
)
14. Percentil q do tempo de resposta
100q
w 90=2,3 E[r ]
15. Percentil 90 do tempo de resposta
(1)w
16. FDA do tempo de espera
F( w)=1 e
E[w ]=
= E[r ]
17. Tempo mdio de espera
(1)
(2)
V [w]= 2
18. Varincia do tempo de espera
(1)2
E[w ]
100
19. Percentil q do tempo de espera
max {0, ln(
)}
100q
E[w ]
20. Percentil 90 do tempo de espera
max {0, ln(10)}
21. Probabilidade de n ou mais tarefas no Sistema
n
1 2n2 n1
1
22. Probabilidade de executar n tarefas no perodo
ocupado
n n1
(1+)2 n1
1
23. Nmero mdio de tarefas executadas no perodo
ocupado
1
24. Varincia do nmero mdio de tarefas executadas (1+)
no perodo ocupado
(1)3
1
25. Durao mdia do perodo ocupado
(1)
1
1
2
26. Varincia da mdia do perodo ocupado
2
3
(1) (1)2
1.6.3
PROCESSOS DE POISSON
30
k i
um Processo de Poisson com taxa mdia pode ser divido em n processos com
= p11 + p22 + ... + pnn, em que pi = 1
a sada de um sistema de filas M/M/1 em que < um Processo de Poisson
a sada de um sistema de filas M/M/m com taxas de servios 1, 2, ..., n, em que
< i, so Processos de Poisson
1.6.4
PROBABILIDADE DE ESTADO PARA PROCESSOS
NASCIMENTO MORTE
A Figura 11 apresenta o diagrama de transio de estado de um Processo
Nascimento-Morte. Este o sistema mais simples de fila no qual as tarefas
Modelagem e Simulao Discreta
31
1.8
1.6.5
32
pn= p0 n
1.9
1.10
1.11
Uma vez que a soma de todas probabilidades deve ser igual a 1, tem-se a
seguinte expresso para a probabilidade de zero tarefas na Fila do
sistema:
p0=1
1.12
Demonstrao:
i=0
i=0
i =0
1+
1+
i=1
=1
1
x
,|x|<1 , soma da progresso geomtrica infinita (Polyanin &
Nota: x =
1x
n=1
n
1.13
1.14
n=1
n=1
1.15
33
d n
n
n
n
(1)
=(1)
n
=(1)
d =(1)
n=1
n=1
n=1
d
n=1
d(
=(1)
)
1
=
d
1
(1)2
1.16
1.17
k=n
O tempo mdio de resposta pode ser calculado usando a Lei de Little, que
estabelece que
nmero mdio de tarefas no sistema=taxa de chegadatempo mdio de resposta
1.18
isto
E[n]= E [r ] E[r ]=
E [n ]
E [r ]=
E [r ]=
(1)
(1)
1.19
F( r)=1e
1.20
q
q
1
100
1e(1)r =
r q =
ln (
)
100
100
100q
(1)
1.21
1.22
34
w q=
100
1
ln(
)
(1)
100q
1.23
1.24
n=1
n=1
2
1
1.25
35
Planejamento
do Projeto
Formulao do
Modelo
Conceitual
36
ps-simulao?
4. Que nvel de personalizao de cenrios e recursos deve ser
implementado?
5. Que nvel de agregao dos processos (ou de alguns) deve ser
implementado?
6. Como os dados sero colocados no modelo? Manualmente?
Leitura de arquivos?
Macro-informaes so fatos, informaes e estatsticas fundamentais,
derivados de observaes, experincias pessoais ou de arquivos
histricos. Em geral, macro-informaes servem para conduzir os
futuros esforos de coleta de dados voltados a alimentao de
parmetros do sistema modelado. Algumas questes que se
apresentam so:
Coleta de Macro
Informaes
Coleta de
Dados
Traduo do
Modelo
Verificao e
Validao do
Modelo
Projeto
Experimental
37
Interpretao e
Anlise
Estatstica dos
Resultados
1 - transio
Modelagem e Simulao Discreta
38
experimentao adotado;
5. Resultados obtidos e descrio dos mtodos de anlise
adotados;
6. Concluses e recomendaes. Nesta ltima etapa
fundamental tentar descrever os ganhos obtidos na forma
monetria.
A apresentao dos resultados do estudo de simulao deve ser
realizada por toda a equipe participante. Os resultados do projeto
devem refletir os esforos coletivos e individuais realizados,
considerando os seus diversos aspectos, isto , levantamento do
problema, coleta de dados, construo do modelo etc. Durante todo o
desenvolvimento e implementao do projeto, o processo de
comunicao, entre a equipe e os usurios finais, deve ser total e,
portanto, durante a apresentao final no devem ocorrer surpresas de
ltima hora. Os itens abaixo devem estar presentes como forma de
encaminhamento das questes tcnicas, operacionais e financeiras no
que diz respeito aos objetivos da organizao:
Apresentao
dos Resultados
e
Implementao
1.
2.
3.
4.
5.
6.
7.
39
function clMM1Analitico(){
this.f = function(n){
var p = 1;
for( var i = n; i > 1; i-- )
p *= i;
return p;
}
this.C = function(n,p){
return this.f(n)/this.f(n-p)/this.f(p);
}
this.Calculate = function(l,m,n,q){
var r = l/m, P = [27];
for( var i = 0; i < 27; i++ )
P[i] = -1.0;
P[2] = r;
P[3] = "r >= 1";
if( r < 1.0 ){
P[ 3] = "r < 1";
P[ 4] = 1-r;
P[ 5] = (1-r)*Math.pow(r,n);
P[ 6] = r/(1-r);
P[ 7] = r/Math.pow(1-r,2);
P[ 8] = n > 0 ? (1-r)*Math.pow(r,n+1) : 1-r*r;
P[ 9] = r*r/(1-r);
P[10] = r*r*(1+r-r*r)/Math.pow(1-r,2);
P[11] = 1-Math.exp(-m*r*(1-r));
P[12] = (1/m)/(1-r);
P[13] = (1/Math.pow(m,2))/Math.pow(1-r,2);
P[14] = (1/m)/(1-r)*Math.log(100/(100-q));
P[15] = 2.3*(1/m)/(1-r);
P[16] = 1-r*Math.exp(-m*r*(1-r));
P[17] = r*(1/m)/(1-r);
P[18] = (2-r)*r/(m*m*(1-r)*(1-r));
P[19] = (P[17]/r)*Math.log(100*r/(100-q));
P[20] = (P[17]/r)*Math.log(10*r);
P[21] = Math.pow(r,n);
P[22] = this.C(2*n-2,n-1)*Math.pow(r,n-1)/n/Math.pow(1+r,2*n-1);
P[23] = 1/(1-r);
P[24] = r*(1+r)/Math.pow(1-r,3);
P[25] = 1/(m*(1-r));
P[26] = 1/(m*m*Math.pow(1-r,3))-1/(m*m*(1-r)*(1-r));
if( P[19] < 0 ) P[19] = 0;
if( P[20] < 0 ) P[20] = 0;
}
return P;
}
}
40
41
42
1.9 QUESTES
1)
2)
3)
4)
1.10
1)
1)
um
sistema
EXERCCIOS
43
2)
3)
4)
44
45
46
E( x )= f (x )dx
2.1
E( x )= p(x i )x i
2.2
i=1
47
Exemplo 2.1: Sejam N = 10 eventos que chegam em um Sistema de Fila M/M/1 com
intervalo entre chegadas iat = { 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 } e tempos de servio st
= { 11, 10, 9, 12, 9, 11, 14, 8, 9, 10 }, iat e st em unidades de tempo (tu - time unit). A
simulao do sistema feita conforme mostrado na Tabela 10.
2.1.1
48
2.1.2
CLCULO DE AT
2.1.3
CLCULO DE BS
49
2.1.4
CLCULO DE ES
2.1.5
Descrio
Estatstica
tempo da simulao
T =es [N ]
tempo de espera da tarefa e na Fila
w [ e]=bs [ e]at [e]
tempo de servio da tarefa e no Servidor
s [e ]=es [e ]bs [e ]
tempo de espera da tarefa e no Sistema de Fila r [e ]=es [e ]at[e ]
Equao
2.3
2.4
2.5
2.6
p0
utilizao do Servidor
1
E(n q )= nq [e ]
N e=1
N
1
E(n s )= n s [e]
N e=1
N
1
E(n)= n[e ]
N e=1
N
1
E( w)= w [e]
N e=1
N
1
E( s)= s [e]
N e=1
N
1
E(r )= r [e]
N e=1
N
1
p0= (1ns [e ])r [e]
T e=1
N
1
U= n s [e]r [e ]
T e=1
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
50
2.1.5.1
nq [e ]= 1, at[e ]<es [c ]
2.15
c=1
51
Valores de E(ns)
2.16
Desta forma, o valor de E(ns), Equao 2.17, pode ser estimado pela soma
do tempo em que o Servidor ficou ocupado dividido pelo tempo da
simulao, logo igual Utilizao do Servidor (U) ou seja, E(ns) = U.
Considerando a Equao 2.16, o produto ns[e]s[e] indicado na Equao
2.17 igual ao prprio s[e] quando o Servidor estiver ocupado e 0
(zero)caso contrrio.
N
n s [e]s [e ]
E[n s ]= e=1
2.17
p0= e=1
2.18
n s [e] s [e ]
U= e=1
U=1p 0
2.1.5.3
2.19
T
2.20
52
p0=
2.21
, at [e ]>es [e1]
2.1.6
RESUMO DO MODELO DE SISTEMAS DE FILAS
M/M/1
As Tabela 12, Tabela 13 e Tabela 14 resumem o Modelo Conceitual dos
Sistemas de Fila M/M/1.
Tabela 12 - Modelo Conceitual de Sistemas de Fila M/M/1
Smbolo Descrio
A
Distribuio de tempo entre chegadas
B
Distribuio de tempo de servio
c
Nmero de canais de servios
K
Capacidade do sistema
m
Tamanho da populao
Z
Disciplina da fila
Valores
M - Processo de Poisson (Markoviano)
M - Processo de Poisson (Markoviano)
1
V ( x )=E( x )[ E(x )]
2.22
53
Exemplo 2.2: No Sistema de Fila M/M/1 simulado abaixo, com N = 10 eventos, iat = {3,
5, 4, 3, 8, 5, 9, 8, 7, 6 } e st = { 12, 12, 10, 9, 2, 2, 1, 3, 2, 5 }:
e iat st at bs es nq w
p0 es-at
1 3
12 3 3 15 0
0
3 12
2 5
12 8 15 27 1
7
0 19
3 4
10 12 27 37 2
15
0 25
4 3
9 15 37 46 2
22
0 31
5 8
2 23 46 48 3
23
0 25
6 5
2 28 48 50 3
20
0 22
7 9
1 37 50 51 3
13
0 14
8 8
3 45 51 54 4
6
0 9
9 7
2 52 54 56 1
2
0 4
10 6
5 58 58 63 0
0
2 5
58 58
19 108 5 166
Tem-se que T = es[10] = 63 tu.
Ser calculado o valor de nq[8] a ttulo de exemplo, neste caso nq[8] = 4:
54
55
e ){
at[e-1];
es[e-1] ? at[e] : es[e-1];
st[e];
56
Enq,
Ew ,
Es ,
Er ,
2.0);
2.0);
2.0);
2.0);
T = es[N-1];
p0 = bs[0];
for( var e = 1; e < N; e++ )
if( at[e] > es[e-1] ) p0 += at[e]-es[e-1];
p0 /= T;
U
= 1.0-p0;
57
}
}
2.2.1
SOFTWARE QS.CPP
<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
58
void
void
void
void
void
void
Start
(
Event
(
Simulate (
Nq
(
Calculate(
Csv
(
void );
int );
void );
void );
void );
void );
};
clQS::clQS( int N, double l, double m ){
this->N = N;
this->l = l;
this->m = m;
iat.resize(N);
st .resize(N);
at .resize(N);
bs .resize(N);
es .resize(N);
nq .resize(N);
srand(time(NULL));
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0); // u in (0,1)
return -p*log(u);
}
void clQS::Start( void ){
iat[0] = F(l);
st [0] = F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
void clQS::Event( int e ){
iat[e] = F(l);
st [e] = F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at [e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs [e] + st[e];
}
void clQS::Simulate( void ){
Start();
for( int e = 1; e < N; e++ )
Event(e);
Nq();
Calculate();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < N; e++ ){
int c = e-1;
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
}
}
void clQS::Calculate( void ){
Eiat = Viat = Enq = Est = Vst = Enq = Vnq = Ew = Vw = Es = Vs =
Er = Vr = p0 = U = T = 0.0;
for( int e = 0; e < N; e++ ){
Eiat += iat[e];
Modelagem e Simulao Discreta
59
}
Eiat
Est
Enq
Ew
Es
Er
Est
Enq
Ew
Es
Er
/=
/=
/=
/=
/=
/=
+=
+=
+=
+=
+=
st
nq
bs
es
es
[e];
[e];
[e] - at[e];
[e] - bs[e];
[e] - at[e];
N;
N;
N;
N;
N;
N;
for( int e = 0; e
Viat += pow(
Vst += pow(
Vnq += pow(
Vw
+= pow(
Vs
+= pow(
Vr
+= pow(
}
Viat /= (N-1);
Vst /= (N-1);
Vnq /= (N-1);
Vw
/= (N-1);
Vs
/= (N-1);
Vr
/= (N-1);
< N; e++ ){
iat[e]
st [e]
nq [e]
bs [e]-at[e]
es [e]-bs[e]
es [e]-at[e]
Eiat,
Est ,
Enq ,
Ew ,
Es ,
Er ,
2.0);
2.0);
2.0);
2.0);
2.0);
2.0);
T = es[N-1];
p0 = bs[0];
for( int e = 1; e < N; e++ )
if( at[e] > es[e-1] ) p0 += at[e] - es[e-1];
p0 /= T;
U
= 1.0-p0;
}
void clQS::Csv( void ){
stringstream csv;
csv << "e;iat;st;at;bs;es;nq;w;s;r" << endl;
for( int e = 0; e < N; e++ ){
csv << e
<< ";"
<< iat[e] << ";"
<< st [e] << ";"
<< at [e] << ";"
<< bs [e] << ";"
<< es [e] << ";"
<< nq [e] << ";"
<< bs[e]-at[e] << ";"
<< es[e]-bs[e] << ";"
<< es[e]-at[e] << endl;
}
csv << "Summary;" << endl
<< "N;"
<< N
<< ";" << endl
<< "T;"
<< T
<< ";" << endl
<< "Eiat;" << Eiat << ";" << endl
<< "Viat;" << Viat << ";" << endl
<< "Est;" << Est << ";" << endl
<< "Vst;" << Vst << ";" << endl
<< "Enq;" << Enq << ";" << endl
<< "Vnq;" << Vnq << ";" << endl
<< "Ew;"
<< Ew
<< ";" << endl
Modelagem e Simulao Discreta
60
<< "Vw;"
<< Vw
<< ";" << endl
<< "Es;"
<< Es
<< ";" << endl
<< "Vs;"
<< Vs
<< ";" << endl
<< "Er;"
<< Er
<< ";" << endl
<< "Vr;"
<< Vr
<< ";" << endl
<< "p0;"
<< p0
<< ";" << endl
<< "U;"
<< U
<< ";" << endl;
string str = csv.str();
ofstream file;
file.open("QS.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();
}
int main( void ){
int
N = 100;
double l = 0.120,
m = 0.150;
clQS *QS = new clQS(N,l,m);
QS->Simulate();
QS->Csv();
delete QS;
return 0;
}
Descrio
Entradas
nmero de eventos simulados
taxa de entrada
taxa de servio
Variveis
intervalo entre chegadas de tarefas na Fila
tempo de servio no Servidor
tempo de chegada de tarefa na Fila
tempo de chegada da tarefa no Servidor
tempo de sada da tarefa do Servidor
comprimento da Fila
tempo na Fila
tempo no Servidor
tempo do Sistema de Fila
durao da simulao
probabilidade de Servidor ocioso
utilizao do Servidor
Modificadores
Esperana da varivel [var]
Varincia da varivel [var]
61
62
No Algoritmo 2.5 foi utilizada a funo F(p), que gera o nmero aleatrio
u (0,1) e que retorna -p ln(u). O termo -p ln(u) a funo inversa da
exponencial e utilizada para gerar valores aleatrios de iat e st
distribudos exponencialmente (esta tcnica ser vista mais adiante).
Ao receber p = l como parmetro, F(p) gera um valor de iat que oscilar
em torno de l devido aleatoriedade na gerao de u. Similarmente, ao
receber p = m como parmetro, F(p) gera um valor de st que oscilar em
torno de m.
Os valores iat e st gerados pela funo F variam para cada simulao que
for realizada pois so obtidas a partir de u, que gerado aleatoriamente.
Desta forma so gerados valores de iat e de st em torno de uma mdia
conhecida.
Podem ser usadas outras funes alm da exponencial, basta incluir a
funo inversa de interesse, que ser visto mais adiante.
63
Exemplo 2.3: Foi executado Algoritmo 2.5, com entradas N = 10, l = 0.167 e m = 0.191,
com os resultados apresentados abaixo:
e
0
1
2
3
4
5
6
7
8
9
iat
0,16
0,10
0,12
0,02
0,40
0,01
0,76
0,07
0,03
0,02
st
0,76
0,10
0,04
0,05
0,03
0,06
0,23
0,02
0,07
0,11
at
0,16
0,26
0,38
0,40
0,80
0,80
1,56
1,63
1,66
1,68
bs
0,16
0,92
1,02
1,06
1,11
1,14
1,56
1,79
1,81
1,88
es
0,92
1,02
1,06
1,11
1,14
1,21
1,79
1,81
1,88
1,99
nq
0,00
1,00
2,00
3,00
4,00
5,00
0,00
1,00
2,00
3,00
w
0,00
0,66
0,64
0,66
0,31
0,34
0,00
0,16
0,15
0,21
s
0,76
0,10
0,04
0,05
0,03
0,06
0,23
0,02
0,07
0,11
r
0,76
0,76
0,68
0,71
0,35
0,41
0,23
0,18
0,22
0,31
Summary
N
10
T
1,991
Eiat
0,168
Viat
0,057
Est
0,148
Vst
0,050
Enq
2,100
Vnq
2,767
Ew
0,313
Vw
0,067
Es
0,148
Vs
0,050
Er
0,461
Vr
0,058
p0
0,257
U
0,743
Valores de iat gerados
Ao receber p = l = = 0.167 como parmetro, so gerados os N = 10 valores de iat a
partir de F(p) conforme listados na tabela acima. O grfico de iat versus e esto no
grfico abaixo. A linha (em cor preta) constante e as colunas de iat (em cor verde)
varia ora acima ora abaixo do valor de , o que denota a aleatoriedade do mtodo.
64
Valores de st gerados
Ao receber p = m = = 0.191 como parmetro, so gerados os N = 10 valores de st a
partir de F(p) conforme listados na tabela acima. O grfico de st versus e esto no
grfico abaixo. A linha (em cor preta) constante e a coluna de st (em cor laranja)
varia em torno de e denota a aleatoriedade do mtodo.
Os valores de iat e st das figuras acima variam para cada simulao que for realizada
pois so obtidas a partir de u, que gerado aleatoriamente. Desta forma so gerados
valores de iat e de st em torno de uma mdia conhecida.
65
Valores de w, s e r gerados
Os valores de w (verde), s (laranja) e r (azul) versus e esto no grfico abaixo. A tarefa e
= 0 tem w = 0 porque no espera na Fila, ao chegar, vai direto para o Servidor. A tarefa
e = 6 tambm no espera na Fila. Quanto maiores os valores das colunas maiores sero
a durao dos eventos.
Valores de nq gerados
Os valores de nq (cinza) versus e est no grfico abaixo. Para e = 0 e e = 6 no tem
tarefa na Fila. Quanto maior o valor das colunas maior ser o tamanha da Fila.
66
2.3 QUESTES
1. Quais as diferenas entre os modelos de Sistemas de Fila M/M/1 e M/M/5.
2. Como um sistema CPU+Memria pode ser simulado pelo Sistemas de Fila M/M/1 se a
memria no tem tamanho infinito?
3. Compare as estimativas dos indicadores obtidos pelos modelos de simulao e
analticos dos Sistemas de Fila M/M/1 dos exemplos 2.1 e 2.2.
2.4 EXERCCIOS
1. Mensagens chegam em um servidor na taxa de 500 pps. O processamento feito na
taxa de 700 pps. Simule este sistema para 5000 e-mail. Compare os indicadores obtidos
por simulao com os do correspondente modelo analtico.
2. Durante um intervalo de 1 hora, observou-se que um servidor de um sistema
distribudo recebeu 10.800 solicitaes. O tempo de resposta mdio destes pedidos foi
observado como sendo igual a um tero de segundo. Simule este sistema para 100, 200 e
300 solicitaes. Qual o efeito do nmero de eventos simulados nos indicadores
estimados? Compare os indicadores, mdias e varicia, obtidos por simulao com os do
correspondente modelo analtico.
3. Eventos que chegam em um Sistema de Fila M/M/1 com intervalo entre chegadas iat =
{ 8, 5, 12, 15, 8, 11, 9, 10, 7, 6 } e tempos de servio st = { 11, 10, 9, 12, 9, 11, 14, 8, 9,
10 }, simule 10 vezes e calcule a mdia e a varincia dos nos indicadores estimados?
Compare os indicadores obtidos por simulao com os do correspondente modelo
analtico.
4. Repita o Exerccio 1 para:
a) = 250 pps e = 500 pps
b) = 350 pps e = 500 pps
Modelagem e Simulao Discreta
67
2.5.1
CLASSE CLQS
68
Enq,
Ew ,
Es ,
Er ,
2.0);
2.0);
2.0);
2.0);
69
Vs
Vr
/= (N-1);
/= (N-1);
T = es[N-1];
p0 = bs[0];
for( var e = 1; e < N; e++ )
if(at[e] > es[e-1]) p0 += at[e]-es[e-1];
p0 /= T;
U
= 1.0-p0;
}
this.Summary = function(){
var html;
html = "<br><table border='1' cellpadding='0' cellspacing='0'>";
html += "<tr><td>e<td>iat<td>st<td>at<td>bs<td>es<td>nq";
for( var e = 0; e < N; e++ ){
html += "<tr>";
html += "<td>" + e
.toFixed(0);
html += "<td>" + iat[e].toFixed(3);
html += "<td>" + st [e].toFixed(3);
html += "<td>" + at [e].toFixed(3);
html += "<td>" + bs [e].toFixed(3);
html += "<td>" + es [e].toFixed(3);
html += "<td>" + nq [e].toFixed(0);
}
html += "</table><br>";
html += "<br> N
= " + N .toFixed(0) ;
html += "<br> T
= " + T .toFixed(3) ;
html += "<br> Enq = " + Enq.toFixed(3) ;
html += "<br> Vnq = " + Vnq.toFixed(3) ;
html += "<br> Ew = " + Ew .toFixed(3) ;
html += "<br> Vw = " + Vw .toFixed(3) ;
html += "<br> Es = " + Es .toFixed(3) ;
html += "<br> Vs = " + Vs .toFixed(3) ;
html += "<br> Er = " + Er .toFixed(3) ;
html += "<br> Vr = " + Vr .toFixed(3) ;
html += "<br> p0 = " + p0 .toFixed(3) ;
html += "<br> U
= " + U .toFixed(3) ;
return html + this.Legend();
}
this.Legend = function(){
var html;
html = "<br><br><br>Legend";
html += "<hr>";
html += " N - nmero de eventos simulados no Sistema de Fila
M/M/1<br>";
html += " e - ordem dos eventos<br>";
html += " iat - intervalo entre chegadas de tarefas na Fila
(interarrival time)<br>";
html += " st - tempo de servio do Servidor (service time)<br>";
html += " at - tempo de chegada da tarefa na Fila (arrival
time)<br>";
html += " bs - tempo de chegada da tarefa no Servidor (begin
service)<br>";
html += " es - tempo de sada da tarefa do Servidor (end
service)<br>";
html += " nq - comprimento da Fila<br>";
html += " w - tempo na Fila<br>";
html += " s - tempo no Servidor<br>";
html += " r - tempo no Sistema de Fila<br>";
html += " T - durao da simulacao<br>";
Modelagem e Simulao Discreta
70
2.5.2
SOFTWARE QSTABLE.HTML
71
2.5.3
SOFTWARE QSPLOT.HTML
72
computacional
de
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Anlise de Sistemas de Fila M/M/1 Grfico de Eventos</title>
<script type="text/javascript" src="jquery.js" ></script>
<script type="text/javascript" src="jquery.flot.js"></script>
<script>
function clQS(l,m){
var iat = [],
st = [],
at = [],
bs = [],
es = [],
nq = [];
var Eiat, Viat, Est, Vst, Enq, Vnq, Ew, Vw, Es, Vs, Er, Vr, p0;
Eiat = Viat = Enq = Est = Vst = Enq = Vnq = Ew = Vw = Es = Vs = Er = Vr
= p0 = 0.0;
this.F = function(x){
var u = Math.random();
return -x*Math.log(u);
}
this.Start = function(){
iat[0] = this.F( l );
st [0] = this.F( m );
at [0] = iat[0];
bs [0] = at [0];
es [0] = at [0] + st[0];
nq [0] = 0;
p0
= bs[0];
}
this.Event = function(e){
iat[e] = this.F( l );
st [e] = this.F( m );
at [e] = at[e-1] + iat[e];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
this.Nq = function(e){
nq[e] = 0;
for( var c = 0; c < e; c++ )
if( at[e] < es[c] ) nq[e] += 1;
}
this.getMean = function(e){
var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
M[0] = Eiat /e;
M[1] = Est /e;
M[2] = Ew
/e;
M[3] = Es
/e;
M[4] = Er
/e;
M[5] = Enq /e;
Modelagem e Simulao Discreta
73
M[6] = p0
/es[e]; // T;
M[7] = 1.0-M[6];
// 1-p0;
return M;
}
this.getVariance = function(e){
var V = [0.0,0.0,0.0,0.0,0.0,0.0];
if( e > 1 ){
V[0] = Viat/(e-1);
V[1] = Vst /(e-1);
V[2] = Vw /(e-1);
V[3] = Vs /(e-1);
V[4] = Vr /(e-1);
V[5] = Vnq /(e-1);
}
return V;
}
this.Calculate = function(e){
Eiat += iat[e];
Est += st [e];
Enq += nq [e];
Ew
+= bs [e] - at[e];
Es
+= es [e] - bs[e];
Er
+= es [e] - at[e];
if( at[e] > es[e-1] ) p0 += at[e] - es[e-1];
Viat
Vst
Vnq
Vw
Vs
Vr
}
+=
+=
+=
+=
+=
+=
Math.pow(
Math.pow(
Math.pow(
Math.pow(
Math.pow(
Math.pow(
iat[e]
st [e]
nq [e]
bs [e]-at[e]
es [e]-bs[e]
es [e]-at[e]
Eiat/e,
Est /e,
Enq /e,
Ew /e,
Es /e,
Er /e,
2.0);
2.0);
2.0);
2.0);
2.0);
2.0);
function clQSTeste(){
var l
= 0.2,
m
= 0.1,
e
= 1 ,
d00 = [],
d01 = [],
d02 = [],
d03 = [],
d04 = [],
d05 = [],
d06 = [],
d07 = [],
d08 = [],
d09 = [],
d10 = [],
d11 = [],
d12 = [],
d13 = [],
G
= [];
var QS = new clQS(l,m);
QS.Start();
$(function(){
var datasets = {
Modelagem e Simulao Discreta
74
"Eiat":
"Est" :
"Ew" :
"Es" :
"Er" :
"Enq" :
"Viat":
"Vst" :
"Vw" :
"Vs" :
"Vr" :
"Vnq" :
"p0" :
"U"
:
{
{
{
{
{
{
{
{
{
{
{
{
{
{
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
label:
"Eiat",
"Est ",
"Ew " ,
"Es " ,
"Er " ,
"Enq ",
"Viat",
"Vst ",
"Vw " ,
"Vs " ,
"Vr " ,
"Vnq ",
"p0 " ,
"U " ,
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
data:
d00
d01
d02
d03
d04
d05
d06
d07
d08
d09
d10
d11
d12
d13
},
},
},
},
},
},
},
},
},
},
},
},
},
},
};
var choiceContainer = $("#choices");
$.each(datasets, function( key,val )
{ choiceContainer.append("<br><input type='checkbox' name='" + key + "'
checked='checked' id='id" + key + "'></input>" + "<label for='id" + key +
"'>" + val.label + "</label>"); });
var i = 0;
$.each(datasets, function(key,val){ val.color = i; ++i; });
choiceContainer.find("input").click(plotAccordingToChoices);
function plotAccordingToChoices(){ var data = [];
choiceContainer.find("input:checked").each( function(){ var key = $
(this).attr("name"); if( key && datasets[key] )
{ data.push(datasets[key]); } }); if( data.length > 0 )
{ $.plot("#placeholder", data, { yaxis: { min: 0.0 }, xaxis:
{ tickDecimals: 0.0 } }); } }
var timer = setInterval(function(n){
QS.Event(e);
QS.Nq(e);
QS.Calculate(e);
G = QS.getMean(e);
d00[e] = []; d00[e][0]
d01[e] = []; d01[e][0]
d02[e] = []; d02[e][0]
d03[e] = []; d03[e][0]
d04[e] = []; d04[e][0]
d05[e] = []; d05[e][0]
d12[e] = []; d12[e][0]
d13[e] = []; d13[e][0]
=
=
=
=
=
=
=
=
e;
e;
e;
e;
e;
e;
e;
e;
d00[e][1]
d01[e][1]
d02[e][1]
d03[e][1]
d04[e][1]
d05[e][1]
d12[e][1]
d13[e][1]
=
=
=
=
=
=
=
=
G[0];
G[1];
G[2];
G[3];
G[4];
G[5];
G[6];
G[7];
//"Eiat"
//"Est "
//"Ew "
//"Es "
//"Er "
//"Enq "
//"p0 "
//"U
"
G = QS.getVariance(e);
d06[e] = []; d06[e][0]
d07[e] = []; d07[e][0]
d08[e] = []; d08[e][0]
d09[e] = []; d09[e][0]
d10[e] = []; d10[e][0]
d11[e] = []; d11[e][0]
=
=
=
=
=
=
e;
e;
e;
e;
e;
e;
d06[e][1]
d07[e][1]
d08[e][1]
d09[e][1]
d10[e][1]
d11[e][1]
=
=
=
=
=
=
G[0];
G[1];
G[2];
G[3];
G[4];
G[5];
//"Viat"
//"Vst "
//"Vw "
//"Vs "
//"Vr "
//"Vnq "
e++;
plotAccordingToChoices();
},200);
$("#footer").prepend("Flot " + $.plot.version + " Copyright:
Brauliro G Leal, 2014" );
});
}
</script>
Modelagem e Simulao Discreta
75
</head>
<body>
<h4>Anlise de Sistemas de Fila M/M/1 Grfico de Eventos</h4>
<hr>
<input type="button" value=" QS Teste >>> " onclick="clQSTeste()"/>
<hr>
<div id="placeholder" style="float:left; height: 450px;
width:875px;"></div>
<p id="choices" style="float:left; height: 450px; width:135px;"></p>
<div id="footer" style="margin-top: 490px;"></div>
</body></html>
2.5.4
SOFTWARE NQ.HTML
76
77
html
html
html
html
html
html
html
+=
+=
+=
+=
+=
+=
+=
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
+
+
+
+
+
+
+
e;
iat[e];
st [e];
at [e];
bs [e];
es [e];
nq [e];
}
html += "</table><br>";
return html;
}
function nqTeste(){
var N = 15, l = 1, m = 2;
var Nq = new clNq(l,m);
Nq.Start();
for( var e = 1; e < N; e++ )
Nq.Event(e);
Nq.Calculate();
document.write( Nq.Html());
}
</script>
</head>
<body onLoad="nqTeste()">
<input type="button" value=">>>" onclick="nqTeste()" />
</body></html>
e
0
1
2
Modelagem e Simulao Discreta
iat st at bs es nq w s
1 2 1 1 3 0 0 2
1 4 2 3 7 1 1 4
3 2 5 7 9 1 2 2
r
2
5
4
78
3
4
5
6
7
8
9
10
2
1
1
1
1
1
2
4
2
1
1
2
2
3
3
4
7
8
9
10
11
12
14
18
9
11
12
13
15
17
20
23
11
12
13
15
17
20
23
27
1
2
2
3
3
3
3
2
2
3
3
3
4
5
6
5
2
1
1
2
2
3
3
4
4
4
4
5
6
8
9
9
79
3 SELEO DE DISTRIBUIES DE
PROBABILIDADE
80
1. Processo de
amostragem
3. Identificao da
distribuio estatstica
4. Estimao dos
parmetros da
distribuio identificada
5. Testes de aderncia
81
(k )=
E[( X i)(X i +k )]
2
nk
1
n
(k )=
( X i )( X i+ k )=
2
nk
(nk ) i =1
3.1
nk
( X i)( X i+k)
i=1
3.2
( X i )
i=1
Exemplo 3.1: Calcule (1) e (2) dos dados referente a ciclos de leitura de 5 unidades de
memria: x = {37,0 54,2 55,1 28,1 24,0}.
n=5
Clculo da mdia amostral m: m = (37,0+54,2+55,1+28,1+24,0)/5 = 198,4/5 = 39,7
Clculo da varincia da amostra s 2: s2 = [(37,0-39,7)2+(54,2-39,7)2+(55,1-39,7)2+(28,139,7)2+(24,0-39,7)2]/(5-1) = 835,7/4 = 208,9
Clculo de (1) = [(37,0-39,7)x(54,2-39,7) + (54,2-39,7)x(55,1-39,7) + (55,139,7)x(28,1-39,7) + (28,1-39,7)x(24,0-39,7)]/(5-1)/208,9 = (188,0/4)/208,9 = 47,0/208,9
= 0,225.
Este valor indica que os dados esto pouco correlacionados.
Clculo de (2) = [(37,0-39,7)x(55,1-39,7) + (54,2-39,7)x(28,1-39,7) + (55,139,7)x(24,0-39,7)]/3/208,9 = (-451,3/3)/208,9 = -150,4/208,9 = -0,72.
Memria de clculo:
i xi
xi-m
(xi-m)x(xi+1-m)
(xi-m)x(xi+2-m)
82
1 37,0
2 54,2
3 55,1
4 28,1
5 24,0
198,4
m39,7
s 14,5
37,0-39,7
54,2-39,7
55,1-39,7
28,1-39,7
24,0-39,7
(37,0-39,7)x(54,2-39,7)
(54,2-39,7)x(55,1-39,7)
(55,1-39,7)x(28,1-39,7)
(28,1-39,7)x(24,0-39,7)
15,7
=
=
=
=
-2,7
14,5
15,4
-11,6
(37,0-39,7)x(55,1-39,7) = -41,3
(54,2-39,7)x(28,1-39,7) = -168,1
(55,1-39,7)x(24,0-39,7) = -241,8
-451,3
83
FDP f(x)
a1
Parmetros E(x)
b1
(1x)
B(a ,b)
, x [0,1]
m x m1 e x
, x0
(m1)!
a>0
b>0
>0
a
a+b
m
V(x)
ab
(a+ b) ( a+b+ 1)
m
2
2
84
ok
Exponencial
ok
Gamma
ok
Normal
ok
Poisson
ok
Uniforme
ok
a x
ae
,x>0
1
2
a
1
a
a>0
x a1 e b
, x> 0
b a (a)
a>0
b>0
ab
ab2
(-,)
>0
>0
1
e
2
( x)
2
2
, x
e
, x0
x!
1
, x [a , b]
ba
a<b
a+b
2
a>0
b>0
a(
(ba)
12
Weibull
bx
ok
b 1
x
( )
a
ab
, x 0
a1 x
em que ( a)= x e dx e B (a , b)=
0
b+1
)
b
a2 [ (
b+2
b+1
)2 (
)]
b
b
(a)(b)
.
(a+b)
f ( x)dx
= 1-e-x
85
3.3.1
Uma amostra aleatria (X1, X2, ..., Xn) retirada de uma populao com uma
funo de densidade de probabilidade f(x,), em que um vetor de
parmetros, tem uma funo densidade de probabilidade conjunta, a
funo de verossimilhana L(x,), definida pelo produto das funes
densidade de cada uma das observaes.
n
L( x ,)= f ( x i , )
3.3
i=1
L( x ,)
=
f ( xi , )
i =1
3.4
=0
ln L(x ,)
=
ln f (x i , )
i=1
3.5
=0
Exemplo 3.3: Seja determinar o parmetro da fdp Exponencial pelo mtodo da Mxima
Verossimilhana a partir de uma amostra aleatria (X1, X2, ..., Xn).
L( x ,)
=0
x
1
f ( x , )= e e ={}
Xi
1
L( x ,)= e
i=1
X1
X2
Xn
1
1 1 (X + X ++ X ) 1 X
L( x ,)= n (e +e ++ e )= n e
= ne
i=1
X
1 X
1
1
1
n
ln L(x ,)=ln( n e
)=ln( n )+ln (e
)=ln ( ) X i=n ln() X i
i=1
i=1
i
i=1
ln L(x ,)
=
i=1
1
[n ln() X i ]
i=1
1
n
ln() n
1
n
=n X i = 2 X i =0
i=1
i =1
86
1
n
1
X i = = X i
2
n i=1
i=1
3.3.2
e i=fo(x i )f ( x i , )
n
i=1
i=1
3.6
3.7
2
i
E
i=1
= =
= {[ fo( x i )f ( x i , )]
i=1
f (xi , )
}=0
3.8
1
f ( x , )= e e ={}
2i
i=1
=0
Xi
X
X
1 2
1 2
1
( X i e )
X
n ( X i e
)
n
( X i e )
i=1
=
=2 (X i e )
=
i=1
i=1
i
87
X
X
X
n
X
X
X
1 1 Xi
1 1
=2 ( X i e )( 2 e 3 e )=2 ( X i e ) 2 e (1 i )=0
i=1
i=1
n
Xi
i=1
Xi
X
1
( X i e )(1 i )=0 no tem soluo analtica, o valor de por ser obtido
Exemplo 3.5: Seja determinar o parmetro p da fdp Poisson pelo mtodo dos Mnimos
Quadrados a partir de uma amostra aleatria (X1, X2, ..., Xn).
x
f (x , )=
e
, ={}
x!
2i
i=1
=0
n
X i 2
i=1
Xi 2
Xi
e
e
e
)
)
(X i
)
n ( X i
n
X
Xi!
Xi !
Xi !
e
=
=2 (X i
)
=0
Xi !
i=1
i=1
( X i
Xi
( X i Xe!
i=1
1
( X e X 1 X i e )=0 , neste caso o valor de por ser obtido
Xi !
i
fdp
Exponencial
bx
f ( x)=be
com
pode
ser
definida
como
parmetros a=E[ x ] e b=
1
f (x)= e a ou
a
1
,
E [x]
respectivamente,
Tabela 19.
Tabela 19 - Definies da fdp Exponencial e seus parmetros
fdp
como
parmetro
88
1
x
n i
1
n
b=
=
E [x ] x i
1
f (x)= e a
a
a=E[ x ]=
f (x)=bebx
3.4.1
v i=
x ia
em que a = min{X} e b = max{X}
ba
2. calcular
3. calcular
4. calcular
5. calcular
1
m 1= v i
n i=1
n
1
m2= v 2i
n i=1
m m 2
p=m1 1
2
m2m 1
1m1
q= p
m1
nova funo
f (v )=
q1
( p+ q) p 1
v (1v )
v (1v )q1=
( p)(q)
B ( p , q)
de parmetros p e q.
89
3.4.2
x
b
x e
so feitas pelas
ba ( a)
1+ 1+
a=
4A
3
4A
n
n
xm
1
1
, b=
, A=ln (x m ) ln ( x i) e x m= x i .
n i=1
n i=1
a
Exemplo 3.7: Calcular os parmetros da fdp Gamma para a amostra X: { 6,91 1,61 4,99
9,11 9,03 9,71 0,05 5,98 5,20 9,83 }
i
1
2
3
4
5
6
7
8
9
10
xm
xi
0,05
1,61 4,99 5,2
5,98 6,91 9,03 9,11 9,71 9,83 62,42 6,242
ln(xi) -2,996 0,476 1,607 1,649 1,788 1,933 2,201 2,209 2,273 2,285 13,425
n = 10
xm = (6,91 + 1,61 + 4,99 + 9,11 + 9,03 + 9,71 + 0,05 + 5,98 + 5,20 + 9,83)/10 = 6,24
ln(x) = ln(6,91) + ln(1,61) + ln(4,99) + ln(9,11) + ln(9,03) + ln(9,71) + ln(0,05) +
ln(5,98) + ln(5,20) + ln(9,83) = 13,43
A = ln(6,24) - 13,43/10 = 0,489
a = [1+(1+4x0,489/3)1/2]/(4x0,489) = [1+(1+0,651)1/2]/1,956 = (1+1,28)/1,956 = 1,17
b = 6,24/1,17 = 5,34
Logo os parmetros da fdb Gamma so a =1,17 e b = 5,34.
3.4.3
ESTIMATIVA DOS PARMETROS DA FDP
WEIBULL
Segundo Hirata(2004), a estimativa dos parmetros da distribuio de
b
Weibull f (x)=
bx
b1
x
( )
a
a=
Exemplo 3.8: Calcular os parmetros da fdp Weibull para a amostra X: { 6,91 1,61 4,99
9,11 9,03 9,71 0,05 5,98 5,20 9,83 }
i 1
2
3
4 5
6
7
8
9
10
m
s
xi 0,05 1,61 4,99 5,2 5,98 6,91 9,03 9,11 9,71 9,83 62,42 6,242 3,397
b = (s/m)-1,086 = (3,397/6,242)-1,086 = (0,544)-1,086 = 1,936
a = m/(1+1/b) = 6,242/(1+1/1,936) = 6,242/(1,516) = 6,242/0,887 = 7,038
90
Vantagens:
Desvantagens:
91
3.5.1
(O iEi )2
calcular a estatstica D=
que tem distribuio 2 com k-1-p graus
Ei
i=1
k
de liberdade
se D < 2(1-;k-1-p) no se pode rejeitar a hiptese H0 ao nvel de significncia ,
caso contrrio rejeita-se a hiptese H0.
A probabilidade limite do teste CQ o termo tcnico p-value = 2(1-;k-1p). Na Figura 27 a regio hachurada em vermelho indica a probabilidade
de se rejeitar a hiptese H 0 ao nvel de significncia , isto , P(D pvalue). Em cinza, a regio de probabilidade em que no se pode rejeitar
a hiptese H0 ao nvel de significncia , ou seja, P(D < p-value).
n
X ={x i }i=1
92
93
Neste caso, 2(0,95;6) = 12,59 e D > 2(0,95;6), isto , 27,5 > 12,59.
Rejeita-se H0 e conclui-se que, pelo menos, um dos dias tem nmero de falhas diferente
dos demais.
Concluso: Pelo menos um dos valores medidos do tempo entre falhas do sistema difere
dos demais segundo o Teste de CQ com 95% de confiana.
1.1.1.
Estatstica de teste: Dn
Regra de deciso: Rejeita H0 se a estatstica de teste Dn maior do que
o quantil 1- do teste de Kolmogorov-Sminorv, Dn > KS(n,1-), veja a
tabela no Anexo.
Passo a passo do teste de Kolmogorov-Sminorv:
n
Exemplo 3.10: Deseja-se verificar a normalidade dos dados abaixo referentes a medio
94
95
3.5.2
1.1.2.
96
97
k
Ri
12
T=
3(n+1)
n(n+1) i=1 n i
k
ni
i=1
j=1
3.9
98
99
n
Modelagem e Simulao Discreta
A
6,5
7,3
8,5
9,9
1,8
9,5
6,9
9,8
5,5
A
9
ARank
14,3
16,6
20,0
24,0
1,0
22,9
15,5
23,7
11,5
149,5
B
8
B
3,4
4,1
5,1
5,6
6
8,3
9,4
6,4
BRank
3,5
7,5
10,4
11,8
12,9
19,3
22,6
14,1
102,1
C
7
C
2,6
6,2
5,1
5,8
8,8
9,2
7,3
CRank
3,3
13,5
10,4
12,4
20,9
22,9
16,6
100,0
24
100
R
R2/n
149,5
102,1
100
2483,36 1303,05 1428,57 5214,98
T = 12*5214,98/[24(24+1)]-3(24+1) = 29,3
2(1-;k-1) = 2(95%,2) = 5,99
Como T > 2(95%,2), ou seja, 29,3 > 5,99, rejeita-se a hiptese de que as amostras
possuem a mesma distribuio de probabilidade com 95% de confiana.
Concluso: as amostras possuem a mesma distribuio de probabilidade com 95% de
confiana segundo o teste de Kruskal-Wallis.
3.9 QUESTES
1. Quais as propriedades matemticas de uma fdp?
2. Qual a importncia das fdp na simulao?
3. Que cuidados devem ser tomados ao usar fdp em simulao?
4. Compare as distribuies de probabilidades apresentadas no texto.
5. Quando usar e quando no usar as distribuies de probabilidades apresentadas no
texto.
6. Que condies devem ser seguidas ao aplicar distribuies de probabilidade?
7. Relacione os parmetros de fdp com os parmetros de modelos de simulao. Faa um
estude caso.
8. Qual o significado matemtico de E(x) e V(x). Como eles se relacionam com os
parmetros da fdp? Como eles so calculados?
9. Qual o significado de autocorrelao? Qual seu uso?
10. Qual o significado estatstico das hipteses H0 e Ha?
11. Qual o significado grfico das hipteses H0 e Ha?
12. Qual o significado matemtico das hipteses H0 e Ha?
13. Quando se deve usar o teste CQ? Qual o procedimento para sua aplicao?
14. Quando se deve usar o teste KS? Qual o procedimento para sua aplicao?
15. O que nvel de significncia? Qual sua importncia prtica? Qual seu significado
grfico?
16. Relacione matematicamente o nvel de significncia com a hiptese H 0?
17. Relacione graficamente o nvel de significncia com hiptese H 0?
18. Compare os testes CQ e KS.
19. Dado o conjunto de valores {a i} estabelea os passos necessrios para verificar se
estes dados se ajustam a uma fdp qualquer utilizando o teste KS.
20. Dado o conjunto de valores {a i} estabelea os passos necessrios para verificar se
estes dados se ajustam a uma fdp qualquer utilizando o teste CQ.
21. Qual o significado matemtico de D no teste CQ?
22. Qual o significado estatstico de D no teste CQ?
23. Qual o significado grfico de D no teste CQ?
24. Qual a relao entre D, teste CQ, e gl?
25. Como se relacionam processo de chegada, filas, estatstica, amostragem e
simulao?
26. Porque necessrio organizar dados em classes? Qual sua importncia estatstica?
Qual sua explicao matemtica?
27. Discuta as aplicaes do teste de Kruskal-Wallis.
28. Proponha outras maneiras de calcular o Rank do teste de Kruskal-Wallis.
101
3.10
EXERCCIOS
B
76,5
101,2
20,3
104,8
58,2
2,1
17,4
38,3
105,1
44,6
106,5
54,3
C
66,7
88,2
17,7
91,3
50,8
1,9
15,1
33,4
91,6
9. Foram medidos valores de iat e st de um sistema que utiliza um Xbee Pro, abaixo
relacionados.
iat(tps): 22 22 31 13 12 29 32 19 17 20 13 23 13 20 27 18 22 1 20 14 19 6 22 17 27 24
st(tps): 33 44 13 19 28 24 35 36 34 27 14 30 23 17 23 5 20 39 37 35 23 34 22 28 42 27
a) Elimine os dados com valores extremos das sries iat e st.
b) Verifique se as sries iat e st so representativas da populao.
c) Verifique se as sries iat e st so independentes.
d) Faa os grficos de barra das sries iat e st e interprete-os.
e) Faa os grficos box-plot das sries iat e st e interprete-os.
f) Calcule os valores da mdia e desvio padro das sries iat e st.
g) Ajuste uma distribuio de probabilidade para a srie iat por meio de testes de
aderncia.
h) Ajuste uma distribuio de probabilidade para a srie st por meio de testes de
aderncia.
102
b) iat (tps): 30 33 27 6 37 15 1 27 15 17 19 19 5 15 18 10 25 16 19 20 2 21 19
st (tps): 9 22 22 31 19 12 12 16 30 14 33 18 13 14 17 8 30 33 22 7 6
103
uniformemente distribudos
estatisticamente independente
no repetio para um comprimento desejado
reprodutvel
rpida obteno de modo a poupar recursos computacionais para as simulaes
em si
104
4.1
an 1
) mod m
a1
4.2
105
Exemplo 4.1: A srie gerada a partir de m = 231-1, a = 75 e c = 0 tem um ciclo igual 2 31-1,
aproximadamente uma sequncia de 2,110 9 nmeros sem repetio, suficientemente
grande para simulaes dos sistemas mais simples.
Exemplo 4.2: A sequncia xn = 6xn-1 + 5 mod 11 tem perodo igual a 10. Para x0 = 0, a
sequncia gerada { 0, 5, 2, 6, 8, 9, 4, 7, 3, 1 }. Dividindo estes valores por 11, obtm-se
U = { 0,0000 0,4545 0,1818 0,5455 0,7273 0,8182 0,3636 0,6364 0,2727 0,0909 }.
Uma observao importante sobre este exemplo que a funo x n determinstica. Dada
a semente, podemos predizer, com certeza, os nmeros da sequncia. No entanto, os
nmeros so aleatrios no sentido de que eles passariam por testes estatsticos para
aleatoriedade.
Exemplo 4.3: A sequncia xn = 6xn-1 + 5 mod 11 tem perodo igual a 10. Na Tabela 20
esto os nmeros aleatrios gerados por esta sequncia para vrios valores de x 0.
Tabela 20 - Nmeros aleatrios gerados a partir de x n = 6xn-1 + 5 mod 11 para x 0 = 0,
1, ..., 14
x0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
x1 5 0 6 1 7 2 8 3 9 4 10 5 0 6 1
x2 2 5 8 0 3 6 9 1 4 7 10 2 5 8 0
x3 6 2 9 5 1 8 4 0 7 3 10 6 2 9 5
x4 8 6 4 2 0 9 7 5 3 1 10 8 6 4 2
x5 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6
x6 4 9 3 8 2 7 1 6 0 5 10 4 9 3 8
x7 7 4 1 9 6 3 0 8 5 2 10 7 4 1 9
106
x8 3 7 0 4 8 1 5 9 2 6 10 3 7 0 4
x9 1 3 5 7 9 0 2 4 6 8 10 1 3 5 7
x10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3
A anlise dos valores gerados apresentados na
concluses:
m
231
231
a
1664525
22695477
c
1013904223
1
107
GCC
Borland Delphi, Pascal
Microsoft Visual C/C++
Microsoft Visual Basic
Apple CarbonLib
MMIX (Donald Knuth)
RANDU
VAX
Java
Forth
231
231
231
224
231-1
264
231
231
248
231-5
1103515245
134775813
214013
1140671485
16807
6364136223846793005
65539
69069
25214903917
232-333333333
12345
1
2531011
12820163
0
1442695040888963407
0
1
11
0
Descrio
constante inteira e igual 32767
atribui semente para o CGL, em geral srand(time(0))
retorna um nmero pseudoaleatrio com valor em [0, RAND_MAX]
bibliotecas da linguagem C
108
4.3
4.4
a+(ba)u [a , b]
4.5
4.6
<random>
<iostream>
<stdio.h>
<time.h>
109
4.7
110
111
112
Teste
Teste
Teste
Teste
Teste
de frequncia
de serial
de autocorrelao
runs
de chi-quadrado
4.9.1
TESTES EMPRICOS
113
para
avaliar
graficamente
114
115
4.9.2
TESTES TERICOS
116
O custo computacional pode ser estimado pelo tempo mdio para se gerar
nmeros aleatrios de uma grande amostra. O Algoritmo 4.10, escrito em
Javascript, calcula o custo computacional do gerador do browser. No
Firefox 38.0.1 o custo unitrio do GNA medido foi de 2,4e-5 s ou 24 ms.
Algoritmo 4.10: Cdigo Javascript para calcular o custo computacional de
gerar nmeros aleatrios
function Custo(){
var N = 1000000, inicio = (new Date()).getTime(), fim;
for( var n = 0; n < N; n++ )
var a = Math.random();
fim = (new Date()).getTime();
return "custo unitrio = " + ((fim-inicio)/N).toExponential(4) + " s";
}
Modelagem e Simulao Discreta
117
4.10
QUESTES
4.11
EXERCCIOS
1. Gerar 10.000 nmeros usando a semente x 0 = 1 do gerador xn = 75xn-1 mod (2311). Classificar os nmeros em 10 clulas de tamanhos iguais e teste a
uniformidade pelo teste CQ com confiana de 95 e 99%.
2. Gerar 15 nmeros usando a semente x 0 = 1 no gerador xn = (5xn-1+1) mod 16.
Verifique se a sequncia passa no teste KS em um nvel de confiana de 95 e 99%.
3. Teste os geradores apresentados no texto em um nvel de confiana de 95% e
99%.
4. Trinta nmeros aleatrios foram gerados usando o GCL x n = 3xn-1 mod 31 com
semente de x0 = 15. Os nmeros foram: 14, 11, 2, 6, 18, 23, 7, 21, 1, 3, 9, 27, 19,
26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28, 22, 4, 12, 5, 15. Verifique se eles so
iid.
5. Teste a frmula recursiva de Krishnan para os GCL's GCC, JAVA e MMIX, para as
sementes 0, 1, 31, 35 e 1000.
6. Refaa a Tabela 4.1 para xn+1 = (5xn+ 1) mod 24.
7. Qual o perodo dos GCL:
a) xn+1 = 5xn mod 25
b) xn+1 = 7xn mod 25
8. Considere os casos descritos por Bandyopadhyay e Bhattacharya para propor e
testar um gerador de nmeros aleatrios para um hardware com palavra de:
a)
b)
c)
8 bits
11 bits
14 bits
118
119
120
5.1.1
MTODO DA INVERSA DA FUNO DENSIDADE
ACUMULADA
O Mtodo da Inversa da Funo Distribuio Acumulada (FDA) um dos
mtodos mais simples de gerao de variveis aleatrias de uma
distribuio F contnua e estritamente crescente. Nessas condies podese gerar uma varivel aleatria utilizando o seguinte algoritmo:
1. Gerar u ~ U(0,1)
2. Calcular x = F-1(u), onde F-1(u) o valor de x quando F(x) = u
Exemplo 5.1: Obtenha a frmula para a gerao de variveis aleatrias com distribuio
Weibull pelo mtodo da transformao inversa.
A fdp de uma varivel aleatria x com distribuio Weibull dada por
x
( )
( )
a
f ( x)= a x a1 e b e F( x)=1e b .
b
x
( )
b
u=1e
x
( )
b
1u=e
x
a
x
a
ln(1u)=( ) ln(1u)= x=b ln (1u)
b
b
Logo x=b ln(u) gera variveis aleatrias x com distribuio Weibull de parmetros
a e b usando nmeros aleatrios com distribuio uniforme.
Uma grande desvantagem deste mtodo o fato de seu uso estar limitado
a distribuies que possuem FDA inversvel como, por exemplo, as
distribuies Exponencial, Weibull, Gumbel ou Valores Extremos, Logstica
e Pareto. A Tabela 23 ilustra a aplicao deste mtodo.
Tabela 23 - Aplicaes do Mtodo da Inversa da FDA onde u ~ U(0,1),
Forbes et al. (2011)
Distribuio
Exponencial
ok
Valores Extremos
??
Geomtrica
??
Modelagem e Simulao Discreta
F(x)
1e
x
x
1e
aln(u)
xa
b
a+ bln[ln (u)]
x
1(1 p)
ln(u)
ln (1u)
121
Logstica
??
Pareto
??
Weibull
ok
5.1.2
1+e
1
1 a
x
(x)
b
1
b ln ( 1)
u
1
u
a
x
( )
a
1e
a ln(u)
MTODO DA CONVOLUO
Este mtodo pode ser aplicado para todas as distribuies que so a soma
de variveis aleatrias.
5.1.3
MTODO DA COMPOSIO
5.1.4
122
123
5.1.5
TRANSFORMAO DE BOX-MULLER
5.1.6
QUALIDADE NA GERAO DE VARIVEIS
ALEATRIAS
importante fazer testes nas amostras geradas para verificar a qualidade
da sequncia aleatria, como os testes de uniformidade e de aderncia
distribuio de interesse. Neste sentido, recomenda-se os testes CQ e KS
como testes de aderncia.
124
125
x=min {
e }
uj
j=0
}
this.UniformeContinua = function(a,b){
var u = GNA.gna();
return a+(b-a)*u; //Law(2007)
Modelagem e Simulao Discreta
126
}
this.UniformeDiscreta = function(i,j){
var u = GNA.gna();
return i+Math.floor((j-i+1)*u); // floor() = piso() Law(2007)
}
this.ValoresExtremos = function(a,b){
var u = GNA.gna();
return a+b*Math.log(-Math.log(u));
}
this.Weibull = function(a,b){
var u = GNA.gna();
return b*Math.pow(-Math.log(u),1.0/a); //Law(2007)
}
127
128
Exemplo 5.3: Elabore um programa para gerar variveis aleatrias com distribuio
uniforme em C++11.
5.5.1
GERAO DE VARIVEIS ALEATRIAS DA
DISTRIBUIO POISSON
129
fazer n = 0 e p =1,
gerar um nmero aleatrio un+1 e fazer p = pun+1,
se p < e- ento aceitar X = n seno fazer n = n+1 e retornar ao procedimento 2
retornar X.
5.5.2
GERAO DE VARIVEIS ALEATRIAS DA
DISTRIBUIO EXPONENCIAL
A fdp de uma varivel aleatria x com distribuio exponencial dada por:
p(x) = e-x, x 0, > 0.
O parmetro o nmero mdio de ocorrncias por unidade de tempo e a
razo 1/ expressa o tempo mdio entre as ocorrncias.
Ao aplicar o mtodo da transformao inversa para a obteno de uma
varivel aleatria x com distribuio exponencial necessrio:
1. obter a distribuio cumulativa de probabilidade F(x) = P(X x), o que resulta em F(x)
= 1-e-x,
2. gerar um nmero aleatrio u e fazer F(x) = u,
3. resolver u = 1-e-x para x, o que resulta em x = -ln(1-u),
4. como 1-u e u possuem distribuio uniforme no intervalo [0,1], pode-se substituir (1-u)
por u
5. logo x = -ln(u) uma varivel aleatria x com distribuio exponencial de parmetro
.
5.6 QUESTES
1. Discutir as fda das Figura 34 e Figura 35.
2. Identificar as fda deste captulo que podem ter variveis aleatrias
geradas pelos mtodos da:
Modelagem e Simulao Discreta
130
a. transformao inversa
b. rejeio
c. composio
d. convoluo
5.7 EXERCCIOS
1. Gere variveis aleatrias utilizando os algoritmos propostos neste
captulo e verifique sua aderncia distribuio com os testes CQ e KS.
Faa o teste para 50, 100 e 200 valores gerados com confiana de 95 e
99%.
2. Compare os resultados de variveis aleatrias geradas pelos algoritmos
propostos neste captulo com os do C++11. Faa o teste para 50, 100 e
200 valores gerados com confiana de 95 e 99%.
3. Implemente um algoritmo para a gerao de variveis aleatrias
Normais padro f(z) pelo Mtodo da Aceitao-Rejeio utilizando a funo
exponencial g(t) = e-t/k para majorar f(z) com z 0 e k = 3, 4, 5, 10.
4. Implemente, em C++11, o algoritmo desenvolvido no Exerccio 3 e
compare o nmero de execues para k = 2, 3, 5 e 10.
5. Gere 100 variveis aleatrias Exponential em C++11 e verifique sua
aderncia a esta distribuio com os testes CQ e KS com confiana de
99%.
6. Gere 100 variveis aleatrias Poisson em C++11 e verifique sua
aderncia a esta distribuio com os testes CQ e KS com confiana de
99%.
131
6 VERIFICAO E VALIDAO DE
MODELOS
132
Implementao das
Hipteses
realistas
validado e verificado
no validado e verificado
correta
incorreta
no realistas
validado e no verificado
no validado e no verificado
Antibugging
Walk-Through
Structured
Modelos
Determinsticos
133
Executar Casos
Simplificados
Rastreio (Trace)
Grficos On-Line
Teste de
Continuidade
Testes de
Degenerescncia
Testes de
Consistncia
Independncia da
Semente
134
Suposies
Valores dos parmetros de entrada e distribuies
Valores de sada e concluses
Medidas
Reais
Sistema
Resultados
Tericos
Isto leva a nove testes de validao possveis. Claro, pode no ser vivel a
utilizao de algumas dessas possibilidades. Por exemplo, medies reais
do sistema podem estar disponveis ou no, resultados tericos podem
estar disponveis ou no. O analista deve, pelo menos, validar o modelo
para configuraes simples.
135
136
137
anlise de sensibilidade
as tcnicas j vistas para validao de modelos
as tcnicas j vistas para verificao de modelos
6.6 QUESTES
1. Proponha uma metodologia para validar o Modelo Conceitual de Sistemas de Filas
M/M/1 apresentado anteriormente.
2. Proponha uma metodologia para verificar o Modelo Computacional de Sistemas de Filas
M/M/1 apresentado anteriormente.
3. Proponha uma metodologia para a anlise do o Modelo Conceitual de Sistemas de Filas
M/M/1 apresentado anteriormente.
4. O que significa "modele simples - pense complicado" na prtica de modelagem. Faa
um estudo de caso.
4. O que significa "o incremento da qualidade obedece a Lei dos Rendimentos
Decrescentes, j os custos crescem exponencialmente" na prtica de modelagem. Faa
um estudo de caso.
6.7 EXERCCIOS
1. Faa testes de continuidade, de degenerescncia e de consistncia nos execcios do
Captulo 2.
2. Faa o teste da independncia da semente nos execcios do Captulo 2.
138
139
140
7.1.1
REMOO DE TRANSIENTES
Antes que uma simulao possa ser executada, devem-se definir valores
iniciais para suas variveis de estado. Como, em princpio, os valores
iniciais apropriados destas variveis de estado no so conhecidos, esses
valores devem ser escolhidos arbitrariamente, utilizando-se de alguns
critrios como, por exemplo, iniciar uma Fila vazia e seu Servidor ocioso
por questes de convenincia. As condies iniciais de uma simulao
podem ter uma influncia significativa nos seus resultados, podendo levar
a erros na anlise da sada de estado estacionrio.
Na maioria das simulaes, apenas o desempenho em estado
estacionrio, isto , o desempenho depois que o sistema tenha atingido
um estado estvel, de interesse. Nesses casos, os resultados da parte
inicial da simulao no devem ser includos nos clculos finais. Essa parte
inicial tambm chamada de estado transiente, Figura 38.
O problema de identificar o fim do regime transiente chamado de
remoo de transientes e sua principal dificuldade que no possvel
definir exatamente o que constitui o estado transiente e quando ele
termina. Todos os mtodos para a remoo de transientes so, portanto,
heursticas. H seis mtodos, a saber:
Tabela 26 - Mtodos para a remoo de transientes
Execues
141
longas
Inicializao
adequada
Truncamento
Eliminao de
dados iniciais
Mdia mvel de
replicaes
independentes
Mdia de Lotes
7.1.2
CRITRIO DE PARADA
142
7.2.1
7.2.2
143
Rodada (i)
Mdia
...
...
x1,1
x1,2
...
x1,j
...
x1,k
z1
x2,1
x2,2
...
x2,j
...
x2,k
z2
...
...
...
...
...
...
...
...
xi,1
xi,2
...
xi,j
...
xi,k
zi
...
...
...
...
...
...
...
...
xb,1
xb,2
...
xb,j
...
xb,k
zb
Evento
Mdia
12,2
14,3
9,7
11,4
13,1
11,3
12,0
11,4
10,2
9,3
13,1
12,0
11,8
11,3
10,7
11,1
13,0
10,4
11,3
11,4
11,3
144
13,2
10,4
10,7
11,5
9,2
10,2
b=4
k=6
Clculo dos zi:
z1 = (12,2 + 14,3 + 9,7 + 11,4 + 13,1 + 11,3)/6 = 72,0/6 = 12,0
z2 = (11,4 + 10,2 + 9,3 + 13,1 + 12,0 + 11,8)/6 = 67,8/6 = 11,3
z3 = (10,7 + 11,1 + 13,0 + 10,4 + 11,3 + 11,4)/6 = 67,9/6 = 11,3
z4 = (13,2 + 10,4 + 10,7 + 11,5 + 9,2 10,2)/6 = 65,2/6 = 10,9
Clculo de mb:
mb = (12,0 + 11,3 + 11,3 + 10,9)/4 = 45,48/4 = 11,4
Clculo de VR:
VR = [(12,0-11,4)2 + (11,3-11,4)2 + (11,3-11,4)2 +
(0,396+0,005+0,003+0,254)/3 = 0,658/3 = 0,219
Clculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)
Clculo do IC:
IC = 3,1824 x (0,219/4)1/2 = 3,1824 x 0,230 = 0,750
Concluso: mdia da populao [10,6;12,12].
10,9
(10,9-11,4)2]/3
7.2.3
ANLISE ESTATSTICA DE PARMETROS
ESTACIONRIOS
Suponha que se tenha uma sada de simulao de estado estacionrio {x 1,
x2, ..., xn} de algum parmetro de interesse como, por exemplo, o nmero
de tarefas numa fila. Como no caso de simulaes terminais, uma boa
anlise estatstica deve fornecer o valor de qualquer estimador
juntamente com uma medida de sua varincia.
Vrias metodologias tm sido propostas na literatura para avaliar a sada
de estado estacionrio, dentre elas, mdias de lotes, replicaes
independentes, sries temporais, anlise espectral e regenerao. Sero
apresentadas as duas mais populares, a saber, mdias de lotes e
replicaes independentes.
7.2.3.1
Mdias de Lotes
145
13,4 9,8 11,6 10,8 9,2 12,0 13,6 9,9 8,9 9,7 10,3 13,0 11,0 12,4 8,8 11,4
1
2
3
4
11,4
11,2
10,5
10,9
b=4
k=4
Clculo dos zi:
z1 = (13,4 + 9,8 + 11,6 + 10,8)/4 = 11,4
z2 = (9,2 + 12,0 + 13,6 + 9,9)/4 = 11,2
z3 = (8,9 + 9,7 + 10,3 + 13,0)/4 = 10,5
z4 = (11,0 + 12,4 + 8,8 + 11,4)/4 = 10,9
Clculo de mb:
mb = (11,4 + 11,2 + 10,5 + 10,9)/4 = 32,6/4 = 11,0
146
Clculo de VR:
VR = [(11,4-11,0)2 + (11,2-11,0)2 + (10,5-11,0)2 + (10,9-11,0)2]/3 = 0,159
Clculo de t1-0,25;3 = t0,975;3 = 3,1824 (valores tabelados no Anexo)
Clculo do IC:
IC = 3,1824 x (0,159/4)1/2 = 3,1824 x 0,199 = 0,634
Concluso: mdia da populao [10,4;11,6].
7.2.3.2
Replicaes Independentes
7.3.1
147
servio. Supor que foram executadas N simulaes destes sistemas, a isima simulao de A produz uma estimativa para E[D] que denotado
por Di,A, similarmente Di,B a estimativa para E[D] para a simulao de B.
Ao final destas N repeties, a mdia (D A) e a varincia (s 2A) da amostra A,
so dadas pelas frmulas clssicas:
N
D A=
1
D
N i=1 i , A
7.1
1
s =
(Di , A D A )2
N 1 i=1
2
A
7.2
1
DB = Di , B
N i=1
s 2B =
7.3
1
(D D B)2
N 1 i=1 i , B
7.4
7.5
7.3.2
VARIVEIS ANTITTICAS
148
Var [m1 ]+Var [m2 ]+2 Cov [m1 , m2 ] Var [ X ]+Cov [m1 , m2 ]
=
4
2
7.6
7.3.3
OBSERVAES
149
7.4.1
MODELOS SAZONAIS
a reta ajustada apresenta pequena declividade - o que indica que no existe uma
dependncia da sazonalidade sobre a tendncia, o que confirma a utilizao de
um modelo aditivo
a reta ajustada apresenta declividade acentuada - o que indica uma dependncia
da sazonalidade sobre a tendncia e confirmando a adequabilidade de um modelo
multiplicativo para o relacionamento dos componentes da srie
150
7.4.2
MODELOS NO-LINEARES
de
regresso
fundamentam-se
em
trs
7.4.3
ANLISE HARMNICA
151
152
153
Parmetro Li
Ls
-t/2,n-1s/n1/2
t/2,n-1s/n1/2
2
2
2
(n-1)s / /2,n-1
(n-1)s2/21-/2,n-1
2
2
1/2
Estatstica
T = (xm- )/(s/n1/2) t-Student com gl = n-1
Q = (n-1)s2/2 2 com gl = n-1
Q = (n-1)s2/2 2 com gl = n-1
em que:
t/2,n-1: ponto crtico da distribuio t-Student, com n-1 graus de liberdade, direita
do qual se encontra a probabilidade (rea) /2
2/2,n-1: ponto crtico da distribuio 2 com n-1 graus de liberdade esquerda do
primeiro ponto de rea /2
21-/2,n-1: ponto crtico da distribuio 2 com n-1 graus de liberdade direita do
primeiro ponto de rea /2
7.6.1
154
Figura 41 - Teste para uma mdia zero, nos casos (a) e (b) os IC incluem
zero e nos casos (c) e (d) os IC no incluem zero.
Exemplo 7.4: A diferena entre os tempos de processamento de duas diferentes
implementaes do mesmo algoritmo foi medida em sete cargas de trabalho
semelhantes. As diferenas entre elas so: {1,5 2,6 -1,8 1,3 -0,5 1,7 2,4}. Podemos dizer
com confiana de 99% que uma aplicao melhor do que a outra?
Tamanho da amostra: n = 7
Mdia: 7,20/7 = 1,03
Varincia da amostra: 2,57
Desvio padro da amostra: 2.571/2= 1,60
Intervalo de confiana: 1.03t1.60/71/2 = 1.03 0.605 t
100(1-) = 99, = 0,01, 1-/2 = 0,995
Do Anexo, o valor de t com seis graus de liberdade t0,995;6 = 3,707.
O intervalo de confiana com 99% = (-1,21; 3,27).
O intervalo de confiana inclui o zero. Portanto, no podemos dizer com confiana de
99% que existem diferenas entre as aplicaes.
155
7.6.2
OBSERVAES PAREADAS
7.6.3
OBSERVAES NO PAREADAS
156
7.6.4
157
7.7.1
TESTES DE HIPTESE
7.8 QUESTES
1. Como os mtodos RI e ML tratam os transientes?
2. Qual a utilidade de combinar os mtodos RI e remoo de transientes?
3. Qual a utilidade de combinar os mtodos ML e remoo de transientes?
7.9 EXERCCIOS
1. Foram realizadas 4 rodadas de simulao, cada uma com 10 eventos. Os dados de En q,
Es e p0 esto listados abaixo. Calcule:
a) Intervalo de Confiana da mdia () de Enq, Es e U para = 10%, = 5% e = 1%.
b) Intervalo de Confiana da varincia (2) de Enq, Es e p0 para = 10%, = 5% e =
1%.
Enq
i/j
1
2
3
4
1
4
7
12
20
2
3
5
18
3
3
2
4
7
13
4
2
5
2
5
5
3
5
8
4
6
3
4
8
12
7
3
4
6
9
8
4
7
9
7
9
3
4
10
8
10
2
4
6
9
Es
i/j
1
2
3
1
1.83
2.13
2.40
2
1.83
2.04
2.52
3
1.83
2.01
2.4
4
1.71
2.16
2.34
5
1.83
2.13
2.34
6
1.98
1.86
2.31
7
1.86
2.07
2.46
8
1.83
2.07
2.25
9
1.71
1.98
2.46
10
1.74
2.07
2.40
158
4 2.64
2.94
2.58
2.88
2.70
2.55
2.85
2.55
2.79
2.58
p0
i/j
1
2
3
4
1
0.373
0.256
0.181
0.116
2
0.346
0.252
0.108
0.008
3
0.385
0.341
0.200
0.165
4
0.374
0.264
0.171
0.033
5
0.362
0.275
0.216
0.022
6
0.347
0.355
0.230
0.134
7
0.397
0.330
0.197
0.078
8
0.340
0.231
0.195
0.116
9
0.408
0.322
0.149
0.031
10
0.475
0.374
0.278
0.190
2. Foi realizada uma rodadas de simulao com 300 eventos de tempo no sistema, abaixo
relacionados. Calcule:
a) Intervalo de Confiana da mdia () de s para = 10%, = 5% e = 1%.
b) Intervalo de Confiana da varincia (2) de s para = 10%, = 5% e = 1%.
e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
s
0,404
1,955
0,271
0,829
0,499
0,208
2,173
2,431
2,904
0,033
3,395
0,026
0,127
0,059
0,098
2,198
0,024
0,010
0,130
0,300
0,145
0,792
0,019
5,175
0,038
0,256
1,411
0,023
0,155
0,195
4,262
1,030
3,494
3,851
0,285
5,334
0,110
0,023
0,747
2,567
0,100
2,170
0,186
2,922
e
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
s
4,476
0,017
0,015
1,373
1,720
2,215
0,281
0,432
0,059
0,391
0,011
0,123
0,160
2,769
2,005
1,549
0,030
0,058
0,015
0,016
0,053
0,136
2,812
4,056
0,010
0,883
1,156
0,074
4,526
0,026
0,088
0,010
0,053
0,014
4,128
0,190
0,092
0,081
0,352
0,901
3,335
3,692
0,129
0,033
e
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
s
0,018
3,169
1,342
0,362
0,961
0,225
0,548
0,017
0,301
3,862
0,090
5,624
1,156
0,044
0,082
1,832
0,018
0,018
0,729
0,049
0,132
0,456
0,112
0,112
0,390
0,014
0,602
2,128
1,431
1,960
0,764
5,004
0,093
0,430
1,163
2,220
1,041
0,011
2,125
0,014
4,777
6,056
0,081
0,418
e
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
s
0,016
3,266
0,720
0,309
0,013
1,066
0,012
0,898
0,067
0,189
0,037
1,260
0,092
0,009
0,038
1,421
0,075
0,051
0,042
0,362
0,809
0,015
0,046
5,506
3,050
3,730
0,559
0,010
2,912
0,143
0,359
6,021
0,236
0,009
0,128
0,055
1,142
0,023
2,876
0,055
2,458
0,429
0,016
5,417
e
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
s
0,017
0,408
1,203
0,018
0,036
1,989
0,205
0,101
0,012
2,285
0,913
0,259
0,554
0,090
0,045
3,903
0,037
0,014
0,891
0,114
0,332
0,245
0,236
0,094
2,759
0,475
6,327
0,010
3,210
0,081
0,061
0,052
0,582
0,016
0,013
0,537
0,018
5,487
0,018
2,864
3,516
4,778
5,460
1,292
e
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
s
1,321
0,716
0,017
0,378
6,478
0,164
0,212
0,057
1,737
0,820
6,078
0,097
0,126
0,137
0,778
0,491
0,029
0,446
0,960
0,101
0,056
2,138
3,339
1,143
0,017
6,556
0,026
0,336
1,251
1,006
3,183
0,091
0,036
0,917
0,013
0,026
0,410
0,009
0,126
0,022
0,009
0,016
0,057
0,022
159
45
46
47
48
49
50
1,588
0,049
0,492
1,356
0,353
0,400
95
96
97
98
99
100
0,016
0,010
1,631
0,304
0,775
0,045
145
146
147
148
149
150
0,146
0,526
0,365
0,021
0,052
0,252
195
196
197
198
199
200
0,126
0,223
0,468
0,230
0,022
0,125
245
246
247
248
249
250
0,507
4,404
0,035
0,115
0,029
0,804
295
296
297
298
299
300
0,422
2,829
0,364
0,020
0,028
0,242
7.10
7.10.1
RECURSOS PEDAGGICOS
SOFTWARE AH.HTML
160
161
}
a[k] *= 2.0/n;
b[k] *= 2.0/n;
A[k] = Math.sqrt(a[k]*a[k]+b[k]*b[k]);
fi[k] = Math.atan(b[k]/a[k]);
162
}
function AHTeste(){
var AH = new clAH();
document.write( "<br> Analise Harmonica " );
AH.load();
AH.analise();
document.write( AH.prn() );
document.write( AH.erros() );
}
</script>
</head>
<body onLoad="AHTeste()"> </body>
</html>
t[i]
1
2
3
4
5
6
7
8
9
10
11
12
x[i]
25.8
23.3
24.3
22.4
19.8
15.1
17.2
15.6
20.2
21.6
22.5
24
Analise Harmonica
n = 12
n/2 = 6
Modelagem e Simulao Discreta
163
T = 12
a0 = 20.98333
k
1
2
3
4
5
6
a[k]
3.68935
-0.70000
0.33333
-0.08333
0.42732
-1.30000
b[k]
2.40187
-0.63509
0.30000
0.83716
-0.05187
0.00000
w[k]
0.52360
1.04720
1.57080
2.09440
2.61799
3.14159
A[k]
4.40230
0.94516
0.44845
0.84130
0.43046
1.30000
fi[k]
0.57710
0.73681
0.73282
-1.47158
-0.12079
-0.00000
t[i]
1
2
3
4
5
6
7
8
9
10
11
12
x[i]
25.8
23.3
24.3
22.4
19.8
15.1
17.2
15.6
20.2
21.6
22.5
24
y[i]
26.45000
22.65000
24.95000
21.75000
20.45000
14.45000
17.85000
14.95000
20.85000
20.95000
23.15000
23.35000
Erros
sum = -0.00000
erp(%) = -1.51749
r = 0.98344
icw = 0.99092
7.10.2
SOFTWARE QS-RI.CPP
164
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>
clQS
(
F
(
Start
(
Event
(
Simulate(
Nq
(
RI
(
};
clQS::clQS( int M, int B, double l, double m ){
this->M = M;
this->B = B;
this->l = l;
this->m = m;
iat.resize(M);
st .resize(M);
at .resize(M);
bs .resize(M);
es .resize(M);
nq .resize(M);
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0);
return exp(-u/p)/p;
}
void clQS::Start( int b ){
srand(time(NULL)/b);
iat[0]
st [0]
at [0]
es [0]
=
=
=
=
F(l);
F(m);
bs[0] = iat[0];
at[0] + st[0];
}
void clQS::Event( int e ){
iat[e] = F(l);
Modelagem e Simulao Discreta
165
st
at
bs
es
[e]
[e]
[e]
[e]
=
=
=
=
F(m);
iat[e] + at[e-1];
at[e] > es[e-1] ? at[e] : es[e-1];
bs[e] + st[e];
}
void clQS::Simulate( int b ){
Start(b);
for( int e = 1; e < M; e++ )
Event(e);
Nq();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < M; e++ ){
int c = e-1;
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
}
}
string clQS::RI( void ){
stringstream csv;
csv << setprecision(4);
csv << fixed;
csv << "Replicao Independente da varivel de estado r" << endl;
csv << "e;";
for( int m = 0; m < M; m++ )
csv << m+1 << ";";
csv << endl;
166
file.open("QS.RI.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();
delete Q;
return 0;
1
2
0,2205 0,4658
0,0589 0,0683
1,5568 2,4875
0,0102 0,2565
0,1033 0,5454
0,0524 0,1010
1,4569 0,6872
0,3547 0,7720
0,0727 0,0487
0,0135 1,3452
7.10.3
3
0,6764
0,0192
0,0605
3,0170
0,0106
0,2584
0,5965
0,0718
0,0647
1,4016
4
3,5684
3,8030
0,5135
8,0925
0,0273
0,3056
0,5232
4,6308
0,2770
1,3126
5
1,4313
3,6830
0,7012
8,1072
0,0678
1,4460
0,7389
4,6328
0,0142
1,7056
6
0,1118
1,4185
0,3493
5,6588
0,0951
0,0875
3,2410
2,5152
0,5122
2,3530
7
0,0137
2,9933
0,2714
5,7686
0,2516
0,0989
3,1811
0,5294
0,7547
2,1318
8
0,4166
2,2738
0,9894
5,8997
2,2037
0,1097
2,1061
0,3758
5,0301
2,8878
9
1,1554
0,0358
3,8098
5,9111
0,9182
0,4098
5,9367
6,2829
2,7159
2,3025
10
2,2813
0,2932
4,1076
3,2432
0,6914
0,5425
5,9766
2,8809
2,8699
2,6071
SOFTWARE QS-ML.CPP
<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>
167
public:
double
void
void
void
void
void
string
clQS
(
F
(
Start
(
Event
(
Simulate (
Nq
(
Calculate(
ML
(
};
clQS::clQS( int N, double l, double m ){
this->N = N;
this->l = l;
this->m = m;
iat.resize(N);
st .resize(N);
at .resize(N);
bs .resize(N);
es .resize(N);
nq .resize(N);
p0 .resize(N);
srand(time(NULL));
}
double clQS::F( double p ){
double u = (rand()+1.0)/(RAND_MAX+2.0);
return -p*log(u);
}
void clQS::Start( void ){
iat[0] = F(l);
st [0] = F(m);
at [0] = bs[0] = iat[0];
es [0] = at[0] + st[0];
}
void clQS::Event( int e ){
iat[e] = F(l);
st [e] = F(m);
at [e] = iat[e] + at[e-1];
bs [e] = at[e] > es[e-1] ? at[e] : es[e-1];
es [e] = bs[e] + st[e];
}
void clQS::Simulate( void ){
Start();
for( int e = 1; e < N; e++ )
Event(e);
Nq();
Calculate();
}
void clQS::Nq( void ){
nq[0] = 0;
for( int e = 1; e < N; e++ ){
int c = e-1;
Modelagem e Simulao Discreta
168
nq[e] = 0;
while( at[e] < es[c] ){
nq[e] += 1;
c--;
}
}
void clQS::Calculate( void ){
for( int e = 0; e < N; e++ ){
double T = es[e];
p0[e] = bs[0];
for( int i = 1; i < e; i++ )
if( at[i] > es[i-1] ) p0[e] += at[i]-es[i-1];
p0[e] /= T;
}
}
string clQS::ML( void ){
stringstream csv;
csv << setprecision(4);
csv << fixed;
csv << "e;iat;st;at;bs;es;nq;p0;w;r" << endl;
for( int e = 0; e < N; e++ ){
csv << e << ";"
<< iat[e] << ";"
<< st [e] << ";"
<< at [e] << ";"
<< bs [e] << ";"
<< es [e] << ";"
<< nq [e] << ";"
<< p0 [e] << ";"
<< bs[e]-at[e] << ";" // w
<< es[e]-at[e] << ";" // r
<< endl;
}
return csv.str();
}
int main( void ){
int N = 100;
double l = 0.120,
m = 0.150;
string str;
clQS *Q = new clQS(N,l,m);
Q->Simulate();
str = Q->ML();
ofstream file;
file.open("QS.ML.C++.out.csv");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();
delete Q;
return 0;
169
iat
0,009
0,245
0,010
...
0,022
0,113
0,129
st
0,186
0,188
0,035
...
0,222
0,362
0,177
at
0,009
0,254
0,264
...
10,799
10,912
11,041
bs
0,009
0,254
0,441
...
13,122
13,343
13,705
es
0,195
0,441
0,476
...
13,343
13,705
13,882
nq
0
0
1
...
18
19
20
p0
0,046
0,020
0,141
...
0,014
0,014
0,014
w
0,000
0,000
0,178
...
2,323
2,431
2,664
r
0,186
0,188
0,212
...
2,544
2,793
2,841
170
8 SIMULAO DE SISTEMAS
COMPUTACIONAIS
171
172
173
nmero de QS, qs
os valores de A/B/c/K/m/Z de cada QS
sequncia dos eventos, S
nmero de elementos da sequncia S, s
nmero de eventos a serem simulados, N
iat do primeiro QS
st de cada QS
174
qs = 4
os QS da RSF so M/M/1
sequncia dos eventos: 0 1, 1 2, 2 1, 1 3, logo S = [ 0, 1, 2, 1, 3 ] e s = 5
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0, st1, st2, st3 ]
a compreenso do problema
o modelo conceitual
o modelo computacional
175
qs iat
0 iat0
1 iat1
2 iat2
1 iat1
3 iat3
=
=
=
=
idt0
idt1
idt2
idt1
at
at0
at1
at2
at1
at3
=
=
=
=
=
iat0
iat1
iat2
iat1+at1
iat3
bs
bs0
bs1
bs2
bs1
bs3
=
=
=
=
=
es
at0
es0
at1
es1
at2
es2
at1 > es2 ? at1 : es2 es1
at3
es3
=
=
=
=
=
bs0+st0
bs1+st1
bs2+st2
bs1+st1
at3+st3
idt
idt0
idt1
idt2
idt1
idt1
=
=
=
=
=
es0
es1
es2
es1[2] - es1[1]
es1
Como pode ser observado na Tabela 33, os valores de QS0, QS1, QS2 e QS3
so calculados para e = 0 conforme as equaes dos valores iniciais mas,
devido sequncia S, 0 1 2 1 3, QS 3 tambm requer os clculos
referentes a e = 1. Para e = 1, QS2 antecede QS1 e, neste caso, os valores
calculados para de QS1 devem levar em conta os valores de QS 2, em
particular bs1 depende de at1 e es2. O clculo de idt de QS1 para e = 1,
idt1[1], leva em conta seus valores de es, ou seja, idt1[1] = es1[2] es1[1].
Os valores iniciais dependem intrinsecamente da sequncia, ela determina
a inter-relao dos valores iniciais. O nmero de eventos iniciais tambm
dependem da sequncia, QS1 teve dois eventos iniciais e os demais
apenas um evento cada.
8.3.1
CLCULO DE IAT
8.3.2
176
8.3.3
CLCULO DE NQ
clQSN
s, S[]
clQS QS[]
Config(qs, D[], s, S[])
F()
Start(i, f)
Open(i, f)
Close(i, f)
Nq()
Simulate()
eventos dos QS com as variveis de estado iat, ts, at, bs, idt e nq
so os QS da QSN, com os parmetros l (em substituio a ) e m (em
substituio a ) alm do vetor de eventos Event[]
177
clQSN
<cstdlib>
<cmath>
<ctime>
<string>
<vector>
<algorithm>
<iomanip>
<fstream>
<sstream>
<iomanip>
178
179
}
void clQSN::Open( int i, int f ){
clEvent e, b;
b = QS[i].Event[ QS[i].Event.size()-1 ];
if( i == 0 ){
e.iat = F( QS[i].l );
e.st = F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[i].Event.push_back(e);
}
e.iat = b.idt;
e.st = F( QS[f].m );
b = QS[f].Event[ QS[f].Event.size()-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[f].Event.push_back(e);
}
void clQSN::Close( int i, int f ){
clEvent e, b;
b = QS[i].Event[ QS[i].Event.size()-1 ];
e.iat = b.idt;
e.st = F( QS[f].m );
b = QS[f].Event[ QS[f].Event.size()-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
QS[f].Event.push_back(e);
}
180
for( int e =
Viat +=
Vst +=
Vidt +=
Vnq +=
Vw
+=
Vs
+=
Vr
+=
}
Viat
Vst
Vidt
Vnq
Vw
Vs
Vr
/=
/=
/=
/=
/=
/=
/=
Eiat,2.0);
Est ,2.0);
Eidt,2.0);
Enq ,2.0);
Ew ,2.0);
Es ,2.0);
Er ,2.0);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
Modelagem e Simulao Discreta
181
QS[q].T
QS[q].Eiat
QS[q].Viat
QS[q].Est
QS[q].Vst
QS[q].Eidt
QS[q].Vidt
QS[q].Enq
QS[q].Vnq
QS[q].Ew
QS[q].Vw
QS[q].Es
QS[q].Vs
QS[q].Er
QS[q].Vr
QS[q].p0
QS[q].U
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
T;
Eiat;
Viat;
Est;
Vst;
Eidt;
Vidt;
Enq;
Vnq;
Ew ;
Vw ;
Es ;
Vs ;
Er ;
Vr ;
p0 ;
U ;
}
string clQSN::Html( void ){
stringstream htm;
htm << setprecision(4);
htm << fixed;
htm
htm
htm
htm
<<
<<
<<
<<
182
<<
<<
<<
<<
"<td>"
"<td>"
"<td>"
"<td>"
<<
<<
<<
<<
QS[qs].Event[e].bs
QS[qs].Event[e].es
QS[qs].Event[e].idt
QS[qs].Event[e].nq;
}
htm << "</table>";
htm <<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
<<
"<br>Summary<br>"
"<br> QS
= " <<
"<br> N
= " <<
"<br> T
= " <<
"<br> Eiat = " <<
"<br> Viat = " <<
"<br> Est = " <<
"<br> Vst = " <<
"<br> Eidt = " <<
"<br> Vidt = " <<
"<br> Enq = " <<
"<br> Vnq = " <<
"<br> Ew
= " <<
"<br> Vw
= " <<
"<br> Es
= " <<
"<br> Vs
= " <<
"<br> Er
= " <<
"<br> Vr
= " <<
"<br> p0
= " <<
"<br> U
= " <<
"<br><br><br>";
qs
QS.size()
QS[qs].T
QS[qs].Eiat
QS[qs].Viat
QS[qs].Est
QS[qs].Vst
QS[qs].Eidt
QS[qs].Vidt
QS[qs].Enq
QS[qs].Vnq
QS[qs].Ew
QS[qs].Vw
QS[qs].Es
QS[qs].Vs
QS[qs].Er
QS[qs].Vr
QS[qs].p0
QS[qs].U
}
htm << "</html>";
return htm.str();
}
int main( void ){
int
N = 10, qs = 4;
int
s = 6, S[] = { 0, 1, 2, 1, 2, 3 };
double D[] = { 0.010, 0.040, 0.060, 0.080, 0.100 };
string str;
clQSN QSN;
QSN.Config(qs,D,s,S);
for( int e = 0; e < N; e ++ )
QSN.Simulate();
QSN.Nq();
QSN.Calculate();
str = QSN.Html();
ofstream file;
file.open("QSN-Basico.C++.out.html");
replace(str.begin(), str.end(),'.',',');
file << str;
file.close();
return 0;
}
183
iat
st
at
bs
es
idt
nq
w
s
r
T
p0
U
E[var]
V[var]
Descrio
Entradas
Nmero de eventos
Mdia do intervalo entre entradas
Mdia do tempo de servio (st)
Nmero de elementos da arquitetura
iat do sistema seguido dos tempos de servio dos qs elementos
Nmero de visitas por pacote
Ondem das visitas do pacote, onde cada elemento i segue a
regra i [ 0,qs )i N , onde o elemento 0 o n de entrada
da arquitetura
Variveis
Intervalo entre chegadas de tarefas na fila
Tempo de servio no servidor
Tempo da chegada da tarefa na fila
Tempo da chegada da tarefa no servidor
Tempo da sada da tarefa no servidor
Intervalo entre sadas de tarefas na fila
Comprimento da fila
Tempo na fila
Tempo no servidor
Tempo do sistema de fila
Durao da simulao
Probabilidade de servidor ocioso
Utilizao do servidor
Modificadores
Mdia da varivel [var]
Varincia da varivel [var]
184
l
0,0100
0,0000
0,0000
0,0000
m
0,0400
0,0600
0,0800
0,1000
185
QS:
e
0
1
2
3
4
5
6
7
8
9
10
0
iat
0,0668
0,0029
0,0058
0,0097
0,0000
0,0071
0,0009
0,0010
0,0104
0,0068
0,0094
st
0,0229
0,0411
0,0186
0,0386
0,0860
0,0203
0,0354
0,0745
0,0326
0,0394
0,0055
at
0,0668
0,0698
0,0756
0,0853
0,0853
0,0924
0,0933
0,0943
0,1047
0,1114
0,1209
bs
0,0668
0,0898
0,1308
0,1494
0,1880
0,2740
0,2943
0,3298
0,4043
0,4369
0,4763
es
0,0898
0,1308
0,1494
0,1880
0,2740
0,2943
0,3298
0,4043
0,4369
0,4763
0,4818
idt
0,0898
0,0411
0,0186
0,0386
0,0860
0,0203
0,0354
0,0745
0,0326
0,0394
0,0055
nq
0
1
2
3
4
4
5
6
7
8
9
st
0,0986
0,0322
0,0487
0,0478
0,0218
0,1231
0,0118
0,0351
0,0293
0,0680
0,1284
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372
at
0,0898
0,2054
0,2951
0,3949
0,4360
0,4923
0,5109
0,5808
0,6194
0,7760
0,8620
0,9075
0,9278
1,0724
1,1078
1,2046
1,2791
1,2819
1,3145
1,4034
1,4427
1,4576
bs
0,0898
0,2054
0,2951
0,3949
0,4427
0,4923
0,6154
0,6272
0,6623
0,7760
0,8620
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431
es
0,1884
0,2375
0,3439
0,4427
0,4646
0,6154
0,6272
0,6623
0,6916
0,8441
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431
1,6803
idt
0,1884
0,0492
0,1063
0,0989
0,0218
0,1509
0,0118
0,0351
0,0293
0,1525
0,1464
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372
nq
0
0
0
0
1
0
1
2
2
0
0
1
2
2
2
2
3
3
3
4
4
4
Summary
QS = 0
N=4
T = 0,4818
Eiat = 0,0110
Viat = 0,0004
Est = 0,0377
Vst = 0,0006
Eidt = 0,0438
Vidt = 0,0008
Enq = 4,4545
Vnq = 8,2727
Ew = 0,1673
Vw = 0,0161
Es = 0,0377
Vs = 0,0006
Er = 0,2050
Vr = 0,0160
p0 = 0,1387
U = 0,8613
QS:
e
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
iat
0,0898
0,2054
0,0898
0,0998
0,0411
0,0563
0,0186
0,0699
0,0386
0,1566
0,0860
0,0455
0,0203
0,1446
0,0354
0,0968
0,0745
0,0028
0,0326
0,0889
0,0394
0,0149
186
Summary
QS = 1
N=4
T = 1,6803
Eiat = 0,0703
Viat = 0,0025
Est = 0,0607
Vst = 0,0017
Eidt = 0,0764
Vidt = 0,0030
Enq = 1,6364
Vnq = 2,0519
Ew = 0,0824
Vw = 0,0057
Es = 0,0607
Vs = 0,0017
Er = 0,1431
Vr = 0,0054
p0 = 0,2057
U = 0,7943
QS:
e
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
iat
0,1884
0,2375
0,1063
0,0989
0,0218
0,1509
0,0118
0,0351
0,0293
0,1525
0,1464
0,1077
0,0369
0,1442
0,0323
0,1114
0,0315
0,0235
0,0860
0,0716
0,0077
0,0372
st
0,0170
0,0587
0,0522
0,1305
0,0563
0,0516
0,0699
0,0162
0,1566
0,0509
0,0298
0,2852
0,1446
0,0040
0,0968
0,2081
0,0028
0,0330
0,0889
0,1156
0,0149
0,0202
at
0,1884
0,2375
0,3439
0,4427
0,4646
0,6154
0,6272
0,6623
0,6916
0,8441
0,9904
1,0981
1,1350
1,2793
1,3115
1,4229
1,4544
1,4779
1,5638
1,6354
1,6431
1,6803
bs
0,1884
0,2375
0,3439
0,4427
0,5733
0,6296
0,6812
0,7511
0,7673
0,9239
0,9904
1,0981
1,3834
1,5279
1,5319
1,6287
1,8367
1,8396
1,8725
1,9614
2,0770
2,0919
es
0,2054
0,2963
0,3961
0,5733
0,6296
0,6812
0,7511
0,7673
0,9239
0,9748
1,0203
1,3834
1,5279
1,5319
1,6287
1,8367
1,8396
1,8725
1,9614
2,0770
2,0919
2,1121
idt
0,2054
0,0909
0,0998
0,1772
0,0563
0,0516
0,0699
0,0162
0,1566
0,0509
0,0455
0,3631
0,1446
0,0040
0,0968
0,2081
0,0028
0,0330
0,0889
0,1156
0,0149
0,0202
nq
0
0
0
0
1
1
2
2
2
1
0
0
1
2
3
3
4
5
4
4
5
6
Summary
QS = 2
N=4
T = 2,1121
Eiat = 0,0849
Viat = 0,0041
Est = 0,0774
Vst = 0,0052
Eidt = 0,0960
Vidt = 0,0075
Enq = 2,0909
Modelagem e Simulao Discreta
187
Vnq = 3,6104
Ew = 0,1622
Vw = 0,0241
Es = 0,0774
Vs = 0,0052
Er = 0,2397
Vr = 0,0241
p0 = 0,1933
U = 0,8067
QS:
e
0
1
2
3
4
5
6
7
8
9
10
3
iat
0,2963
0,1772
0,0516
0,0162
0,0509
0,3631
0,0040
0,2081
0,0330
0,1156
0,0202
st
0,1049
0,0211
0,0283
0,2003
0,3328
0,0777
0,0149
0,0153
0,4062
0,0520
0,1005
at
0,2963
0,4735
0,5251
0,5413
0,5922
0,9553
0,9592
1,1673
1,2003
1,3159
1,3361
bs
0,2963
0,4735
0,5251
0,5533
0,7536
1,0864
1,1641
1,1790
1,2003
1,6065
1,6585
es
0,4012
0,4946
0,5533
0,7536
1,0864
1,1641
1,1790
1,1943
1,6065
1,6585
1,7589
idt
0,4012
0,0934
0,0587
0,2003
0,3328
0,0777
0,0149
0,0153
0,4122
0,0520
0,1005
nq
0
0
0
1
1
1
2
1
0
1
2
Summary
QS = 3
N=4
T = 1,7589
Eiat = 0,1215
Viat = 0,0152
Est = 0,1231
Vst = 0,0181
Eidt = 0,1599
Vidt = 0,0232
Enq = 0,8182
Vnq = 0,5636
Ew = 0,1031
Vw = 0,0157
Es = 0,1231
Vs = 0,0181
Er = 0,2262
Vr = 0,0293
p0 = 0,2302
U = 0,7698
188
var n, e = [], b;
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = e.iat;
e.bs = e.at;
e.es = e.at + e.st;
e.idt = e.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.es;
e.st = this.F( QS[f].m );
e.at = b.es;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
n = QS[f].Event.length;
if( n > 0 ){
b
= QS[f].Event[n-1];
e.idt = e.es - b.es;
}
else e.idt = e.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Config = function(){
for( var i = 0; i < qs; i++ ){
var Q = [];
Q.l = 0.0;
if( i == 0 ) Q.l = D[i];
Q.m = D[i+1];
Q.Event = [];
QS.push(Q);
}
for( var i = 1; i < S.length; i++ ){
this.Start(S[i-1],S[i]);
}
}
this.Open = function(i,f){
var e = [], b;
b = QS[i].Event[ QS[i].Event.length-1 ];
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
Modelagem e Simulao Discreta
189
190
Eiat,2.0);
,2.0);
Eidt,2.0);
,2.0);
Ew ,2.0);
Es ,2.0);
Er ,2.0);
}
Viat
Vst
Vidt
Vnq
Vw
Vs
Vr
Viat += Math.pow(QS[q].Event[e].iat
Vst
- Est
+= Math.pow(QS[q].Event[e].st
Vidt += Math.pow(QS[q].Event[e].idt
Vnq
+= Math.pow(QS[q].Event[e].nq
- Enq
Vw
+= Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at -
Vs
+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs -
Vr
+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].at -
/=
/=
/=
/=
/=
/=
/=
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
for( var e = 1; e < N; e++ )
if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=
QS[q].Event[e].at-QS[q].Event[e-1].es;
p0 /= T;
U = 1.0-p0;
QS[q].T
QS[q].Eiat
QS[q].Viat
QS[q].Est
QS[q].Vst
QS[q].Eidt
QS[q].Vidt
QS[q].Enq
QS[q].Vnq
QS[q].Ew
QS[q].Vw
QS[q].Es
QS[q].Vs
QS[q].Er
QS[q].Vr
QS[q].p0
QS[q].U
= T ;
= Eiat;
= Viat;
= Est ;
= Vst ;
= Eidt;
= Vidt;
= Enq ;
= Vnq ;
= Ew ;
= Vw ;
= Es ;
= Vs ;
= Er ;
= Vr ;
= p0 ;
= U ;
}
}
this.Html = function(){
var html = "";
html += "<html><style> table {font-size:20px;}</style><body>"
+ "<br> QSN Table"
+ "<br> QS Number: " + QS.length;
html += "<br> Sequence: ";
for( var i = 1; i < S.length; i++ ){
html += S[i-1] + " - " + S[i] + "; ";
}
Modelagem e Simulao Discreta
191
html += "</table>"
+ "<br>Summary<br>"
+ "<br> N
= " + QS[q].Event.length.toFixed(0)
+ "<br> T
= " + QS[q].T .toFixed(3)
+ "<br> Eiat = " + QS[q].Eiat.toFixed(3)
+ "<br> Viat = " + QS[q].Viat.toFixed(3)
+ "<br> Est = " + QS[q].Est .toFixed(3)
+ "<br> Vst = " + QS[q].Vst .toFixed(3)
+ "<br> Eidt = " + QS[q].Eidt.toFixed(3)
+ "<br> Vidt = " + QS[q].Vidt.toFixed(3)
+ "<br> Enq = " + QS[q].Enq .toFixed(3)
+ "<br> Vnq = " + QS[q].Vnq .toFixed(3)
+ "<br> Ew
= " + QS[q].Ew .toFixed(3)
+ "<br> Vw
= " + QS[q].Vw .toFixed(3)
+ "<br> Es
= " + QS[q].Es .toFixed(3)
+ "<br> Vs
= " + QS[q].Vs .toFixed(3)
+ "<br> Er
= " + QS[q].Er .toFixed(3)
+ "<br> Vr
= " + QS[q].Vr .toFixed(3)
+ "<br> p0
= " + QS[q].p0 .toFixed(3)
+ "<br> U
= " + QS[q].U .toFixed(3)
+ "<br><br><br>";
}
html += "</html>";
return html;
192
8.5.1
SISTEMA CLIENTE/SERVIDOR WEB EM UMA
CAMADA FSICA
Um Sistema Cliente/Sevidor Web em uma camada fsica ilustrada na
Figura 50 8.5, com 3 QS, numeradas de 0 a 2, QS0, QS1 e QS2. A
arquitetura desta rede est mostrada na Figura 51. uma rede aberta
com os parmetros:
qs = 3
os QS deste sistema so M/M/1
sequncia dos eventos: 0 1, 1 2, 2 1 e 1 0, S = [ 0, 1, 2, 1, 0 ] e s = 5
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0, st1, st2 ]
8.5.2
SISTEMA CLIENTE/SEVIDOR WEB EM DUAS
CAMADAS FSICAS
Um Sistema Cliente/Sevidor Web em duas camadas fsicas ilustrada na
Figura 52, com 4 QS, numeradas de 0 a 3, QS0, QS1, QS2 e QS3. A
arquitetura desta rede est mostrada na Figura 53. uma rede aberta
com os parmetros:
qs = 4
os QS deste sistema so M/M/1
193
8.5.3
SISTEMA CLIENTE/SEVIDOR WEB EM TRS
CAMADAS FSICAS
Um Sistema Cliente/Servidor Web em trs camadas fsicas ilustrada na
Figura 54, com 5 QS, numeradas de 0 a 4, QS0, QS1, QS2, QS3 e QS4. A
arquitetura desta rede est mostrada na Figura 55. uma rede aberta
com os parmetros:
qs = 5
os QS deste sistema so M/M/1
sequncia dos eventos: 0 1, 1 2, 2 1, 1 3, 3 1, 1 4, 4 1, 1 2, 2
1, 1 0, S = [ 0, 1, 2, 1, 3, 1, 4, 1, 2, 1, 0 ] e s = 11
nmero de eventos, N (definido pelo usurio)
194
195
Menor
Maior
Desempenho
Desempenho
st(s)
st(s)
S
0 Cisco SF300-08/SG300-28MP
2.69E-3
7.50E-5
Sw
1 Apache 2.4.1/Nginx 1.0.12
5.29E-4
2.96E-4
Sad
2 PostGree/MySql
1.44E-3
4.90E-4
So 3 QS, qs = 3, S = [0, 1, 0, 2, 0, 1, 0] e s = 7. Com uma demanda de 5 milhes de
pacotes por hora, tem-se 5E6/3600 = 1388,89 pacotes por segundo. Logo, iat =
1/1388,89 = 0,00072 = 7,2E-4 s-1 ou iat = 7,2E-4 pps.
Tomando os valores de st de menor desempenho, obtm-se D = [7.2E-4, 2.69E-3, 5.29E3, 1.44E-3].
Os parmetros desta QSN, para uma simulao de 2000 eventos so: qs = 3, S = [0, 1,
0, 2, 0, 1, 0], s = 7, N = 2000 e D = [7.2E-4, 2.69E-3, 5.29E-3, 1.44E-3].
Componente
no Modelos
196
qs = 1
o QS M/M/1
nmero de eventos, N (definido pelo usurio)
D = [ iat0, st0 ]
8.7 EXERCCIOS
1. Simule o Exemplo 8.1 com o software QSN.cpp e calcule:
a) o tempo de simulao
b) os maiores valores de nq de componente
2. Simule o Exemplo 8.1 com o software QSN.cpp e, considerando os valores de st de
maior desempenho, calcule:
a) o tempo de simulao
b) os maiores valores de nq de componente
3) Compare os resultados dos exerccios 1 e 2.
197
8.8.1
SOFTWARE QSNPLOT.HTML
198
}
this.Config = function(){
for( var i = 0; i < qs; i++ ){
var Q = [];
Q.l
= 0.0;
if( i == 0 ) Q.l = D[i];
Q.m
= D[i+1];
Q.Event = [];
QS.push(Q);
}
for( var i = 1; i < S.length; i++ ){
this.Start(S[i-1],S[i]);
}
}
this.Open = function(i,f){
var e = [], b;
b = QS[i].Event[ QS[i].Event.length-1 ];
if( i == 0 ){
e.iat = this.F( QS[i].l );
e.st = this.F( QS[i].m );
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[i].Event.push(e);
}
e
= [];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Close = function(i,f){
var e = [], b;
b
= QS[i].Event[ QS[i].Event.length-1 ];
e.iat = b.idt;
e.st = this.F( QS[f].m );
b
= QS[f].Event[ QS[f].Event.length-1 ];
e.at = b.at + e.iat;
e.bs = e.at > b.es ? e.at : b.es;
e.es = e.bs + e.st;
e.idt = e.es - b.es;
e.nq = 0;
QS[f].Event.push(e);
}
this.Nq = function(){
for( var q = 0; q < QS.length; q++ )
for( var e = 1; e < QS[q].Event.length; e++ ){
QS[q].Event[e].nq = 0;
for( var c = 0; c < e; c++ )
if( QS[q].Event[e].at < QS[q].Event[c].es )
Modelagem e Simulao Discreta
199
QS[q].Event[e].nq += 1;
}
}
this.Simulate = function(){
for( var i = 1; i < S.length; i++ ){
this.Open(S[i-1],S[i]);
//this.Close(S[i-1],S[i]);
}
this.Nq();
this.Calculate();
}
this.getMean = function(){
var M = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0];
for( var q = 0; q < QS.length; q++ ){
M[0] += QS[q].Eiat;
M[1] += QS[q].Est ;
M[2] += QS[q].Ew ;
M[3] += QS[q].Es ;
M[4] += QS[q].Er ;
M[5] += QS[q].Eidt;
M[6] += QS[q].Enq ;
M[7] *= QS[q].p0 ;
M[8] *= QS[q].U ;
}
return M;
}
this.getVariance = function(){
var V = [0.0,0.0,0.0,0.0,0.0,0.0,0.0];
for( var q = 0; q < QS.length; q++ ){
V[0] += QS[q].Viat;
V[1] += QS[q].Vst ;
V[2] += QS[q].Vw ;
V[3] += QS[q].Vs ;
V[4] += QS[q].Vr ;
V[5] += QS[q].Vidt;
V[6] += QS[q].Vnq ;
}
return V;
}
this.Calculate = function(){
for( var q = 0; q < QS.length; q++ ){
var N = QS[q].Event.length;
var Eiat, Viat, Est, Vst, Eidt, Vidt, Enq, Vnq, Ew, Vw, Es, Vs,
Er, Vr, p0, U, T;
Eiat = Viat = Enq = Est = Vst = Eidt = Vidt = Enq = Vnq = Ew =
Vw = Es = Vs = Er = Vr = p0 = U = T = 0.0;
for( var e = 0; e < QS[q].Event.length; e++ ){
Eiat += QS[q].Event[e].iat;
Est += QS[q].Event[e].st;
Eidt += QS[q].Event[e].idt;
Enq += QS[q].Event[e].nq;
Ew
+= QS[q].Event[e].bs-QS[q].Event[e].at;
Es
+= QS[q].Event[e].es-QS[q].Event[e].bs;
Er
+= QS[q].Event[e].es-QS[q].Event[e].at;
}
Eiat /= N;
Est /= N;
Eidt /= N;
Enq /= N;
Ew
/= N;
Modelagem e Simulao Discreta
200
Es
Er
, 2.0);
, 2.0);
, 2.0);
, 2.0);
Ew
,2.0);
Es
, 2.0);
/= N;
/= N;
2.0);
}
Viat
Vst
Vidt
Vnq
Vw
Vs
Vr
- Eiat
+= Math.pow(QS[q].Event[e].st
- Est
Vidt += Math.pow(QS[q].Event[e].idt
- Eidt
Vnq
+= Math.pow(QS[q].Event[e].nq
- Enq
Vw
+= Math.pow(QS[q].Event[e].bs-QS[q].Event[e].at-
Vs
+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].bs-
Vr
+= Math.pow(QS[q].Event[e].es-QS[q].Event[e].at- Er ,
/=
/=
/=
/=
/=
/=
/=
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
(N-1);
T = QS[q].Event[N-1].es;
p0 = QS[q].Event[0].bs;
for( var e = 1; e < N; e++ )
if(QS[q].Event[e].at > QS[q].Event[e-1].es) p0 +=
QS[q].Event[e].at-QS[q].Event[e-1].es;
p0
/= T;
U
= 1.0-p0;
QS[q].T
= T ;
QS[q].Eiat = Eiat;
QS[q].Viat = Viat;
QS[q].Est = Est ;
QS[q].Vst = Vst ;
QS[q].Eidt = Eidt;
QS[q].Vidt = Vidt;
QS[q].Enq = Enq ;
QS[q].Vnq = Vnq ;
QS[q].Ew
= Ew ;
QS[q].Vw
= Vw ;
QS[q].Es
= Es ;
QS[q].Vs
= Vs ;
QS[q].Er
= Er ;
QS[q].Vr
= Vr ;
QS[q].p0
= p0 ;
QS[q].U
= U ;
}
}
}
function clQSNTeste(){
var e
= 1 ,
d00 = [],
d01 = [],
d02 = [],
Modelagem e Simulao Discreta
201
d03
d04
d05
d06
d07
d08
d09
d10
d11
d12
d13
d14
d15
G
=
=
=
=
=
=
=
=
=
=
=
=
=
=
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[];
var qs = 4,
D = [ 0.020, 0.010, 0.010, 0.010, 0.010 ],
S = [ 0, 1, 2, 1, 2, 3 ];
var QSN = new clQSN(qs,D,S);
QSN.Config();
$(function() {
var datasets = {
"Eiat": { label: "Eiat", data: d00 },
"Est" : { label: "Est ", data: d01 },
"Ew" : { label: "Ew " , data: d02 },
"Es" : { label: "Es " , data: d03 },
"Er" : { label: "Er " , data: d04 },
"Eidt": { label: "Eidt", data: d05 },
"Enq" : { label: "Enq ", data: d06 },
"p0" : { label: "p0 " , data: d07 },
"U"
: { label: "U " , data: d08 },
"Viat": { label: "Viat", data: d09 },
"Vst" : { label: "Vst ", data: d10 },
"Vw" : { label: "Vw " , data: d11 },
"Vs" : { label: "Vs " , data: d12 },
"Vr" : { label: "Vr " , data: d13 },
"Vidt": { label: "Vidt", data: d14 },
"Vnq" : { label: "Vnq ", data: d15 }
};
// insert checkboxes
var choiceContainer = $("#choices");
$.each(datasets, function(key,val)
{ choiceContainer.append("<br><input type='checkbox' name='" + key + "'
checked='checked' id='id" + key + "'></input>" + "<label for='id" + key +
"'>" + val.label + "</label>"); });
var i = 0;
$.each(datasets, function(key,val){ val.color = i; ++i; });
choiceContainer.find("input").click(plotAccordingToChoices);
function plotAccordingToChoices(){ var data = [];
choiceContainer.find("input:checked").each(function (){ var key = $
(this).attr("name"); if(key && datasets[key])
{ data.push(datasets[key]); } }); if(data.length > 0)
{ $.plot("#placeholder", data, { yaxis: { min: 0.0 }, xaxis:
{ tickDecimals: 0.0 } });} }
var timer = setInterval(function(n){
QSN.Simulate();
G = QSN.getMean();
d00[e] = []; d00[e][0] = e; d00[e][1] = G[0]; //"Eiat"
Modelagem e Simulao Discreta
202
203
9 APNDICE
e0
=
=
=
=
9.1
204
9.2
9.3
205
z i=
x im
s
206
9.5.1
DECISO ESTATSTICA
207
9.5.2
Aceita H0
Deciso Correta
Erro Tipo II
Aceita Ha
Erro Tipo I
Deciso Correta
NVEL DE SIGNIFICNCIA
9.5.3
208
Como indicado na Figura 61, se a hiptese for verdadeira, pode-se ter 95%
de certeza que a pontuao z de uma estatstica da amostra S vai situarse entre -1,96 e 1,96, uma vez que a rea sob a curva normal entre estes
valores 0,95.
Por outro lado, se a hiptese dada for verdadeira e esta mesma pontuao
z se encontrar fora da faixa -1,96 a 1,96, pode-se concluir que um evento
como esse pode acontecer com a probabilidade de 0,05 (rea sombreada
total na figura). Assim, diz-se que esta pontuao z difere
significativamente do que seria esperado sob a hiptese, e tende-se a
rejeitar a hiptese.
A rea total sombreada igual a 0,05 o nvel de significncia do teste. Ele
representa a probabilidade de se estar errado em rejeitar a hiptese, ou
seja, a probabilidade de cometer um Erro de Tipo I. Portanto, pode-se dizer
que a hiptese rejeitada em um nvel de significncia de 0,05 ou que a
pontuao z da estatstica da amostra significativa a um nvel de
significncia de 0,05.
O conjunto de escores z fora da faixa -1,96 a 1,96 constitui o que
chamado de regio crtica ou regio de rejeio da hiptese ou da regio
de significncia. O conjunto de escores z dentro da faixa -1,96 a 1,96
pode-se, ento, ser chamada a regio de aceitao da hiptese ou da
regio de no significncia.
Com base nestas observaes, pode-se formular a seguinte regra de
deciso:
1. rejeitar a hiptese a um nvel de significncia de 0,05, se a pontuao z da
estatstica S encontra-se fora da faixa -1,96 a 1,96 (isto , seja z > 1.96 ou z <
1,96). Isto equivale a estatstica da amostra observada significativa ao nvel de
0,05
2. aceitar a hiptese (pode-se ainda optar por nada decidir) de outra forma.
Deve notar-se que outros nveis de significncia podem ser usados. Por
exemplo, se for utilizado um nvel de 0,01 deve substituir 1,96 por 2,58 no
texto acima ( Tabela 39).
9.5.4
209
9.5.5
0,100
0,050
0,010
0,005
0,002
-1,28 ou 1,28
-1,65 ou 1,65
-2,33 ou 2,33
-2,58 ou 2,58
-2,88 ou 2,88
-1,65 e 1,65
-1,96 e 1,96
-2,58 e 2,58
-2,81 e 2,81
3,08 e 3,08
P-VALUE
xc
f ( x)dx=1
f (x )dx =1
(a)
(b)
xc
x2
f ( x)dx=1
x1
(c)
210
Z=
m12 m12
=
e que, se H0 verdadeira ento a varivel aleatria normal. O
0,5
/ n
211
I = f (x) dx
a
h
I (a , b)= [f ( a)+2
3
9.4
n /21
j=1
n /2
Em que n N, n > 1 e
9.5
j=1
h=
ba
.
2n
212
s2 = 0.0;
for( int i = 1; i < n; i++ ){
s1 += f(a + h*i + h/2.0);
s2 += f(a + h*i);
}
return (f(a) + f(b) + 4.0*s1 + 2.0*s2)*h/6.0;
}
e
(a)=
,
sendo
f (x , n)= n
x a1 ex dx , a>0 a funo
n
0
2 2 ( )
2
Gamma. A Tabela 40 lista os quantis 2(p;n), p = 1-. Por exemplo, o valor
2(0,90;13) requerido pelo teste CQ com 90% de nvel de confiana e 13
graus de liberdade 19,81.
definida por
0,80
0,85
0,90
0,95
0,99
n\p
0,80
n\p
0,80
31
61
3,22
3,79
4,61
5,99
9,21
32
62
4,65
5,32
6,26
7,85
11,65
33
63
5,99
6,74
7,78
9,49
13,28
34
64
7,29
8,12
9,24
11,07 15,08
35
65
8,56
9,45
36
66
9,80
37
67
38
68
39
69
0,85
0,90
0,95
0,99
0,85
0,90
213
0,95
0,99
10
40
70
11
41
71
12
42
72
13
43
73
14
44
74
15
45
75
16
46
76
17
47
77
18
48
78
19
49
79
20
50
80
21
51
81
22
52
82
23
53
83
24
54
84
25
55
85
26
56
86
27
57
87
28
58
88
29
59
89
30
60
90
Tabela
foi
elaborada
resolvendo
numericamente
e
dx= p=1 , para n variando de 2 a 90 e com p igual a 0,80;
n
0
2 ( )
2
0,90, 0,95 e 0,99, conforme o algoritmo abaixo.
40
n
x
1
2
2
n
2
214
}
return (f(a,gl)+f(b,gl)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q, int gl ){
double x = 1.0, erro;
do{
erro = q-I(0.0,x,gl);
x += 5.0*erro;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << "<table border='1'>";
str << "<tr><td>";
for( int q = 80; q < 100; q++ )
str << "<td>" << q/100.0;
for( int gl = 1; gl < 101; gl++ ){
str << "<tr><td>" << gl;
for( int n = 80; n < 100; n++ ){
double q = n/100.0;
str << "<td>" << Q(q,gl);
}
}
str << "</table>";
return str.str();
}
int main( void ){
string htm = "<br>Tabela CQ<br>";
htm += Tabela();
ofstream file;
file.open("CQ-Quantis-out.html");
file << htm;
file.close();
return 0;
}
Segundo Bussab & Morettin (2002), os valores de 2(p;n) para n > 120
podem ser aproximados pelos seus equivalentes da distribuio normal.
0,90
0,9500
0,7764
0,6360
0,95
0,9750
0,8419
0,7076
0,99
0,9950
0,9293
0,8290
n\p
31
32
33
0,90
0,2141
0,2108
0,2077
0,95
0,2379
0,2342
0,2308
0,99
0,2853
0,2809
0,2768
n\p
61
62
63
0,90
0,1539
0,1526
0,1514
0,95
0,1709
0,1696
0,1682
0,99
0,2051
0,2034
0,2018
215
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0,5652
0,5094
0,4680
0,4361
0,4096
0,3875
0,3687
0,3524
0,3381
0,3255
0,3142
0,3040
0,2947
0,2863
0,2785
0,2714
0,2647
0,2586
0,2528
0,2475
0,2424
0,2377
0,2332
0,2290
0,2250
0,2212
0,2176
0,6239
0,5633
0,5193
0,4834
0,4543
0,4300
0,4092
0,3912
0,3754
0,3614
0,3489
0,3376
0,3273
0,3180
0,3094
0,3014
0,2941
0,2872
0,2809
0,2749
0,2693
0,2640
0,2591
0,2544
0,2499
0,2457
0,2417
0,7342
0,6685
0,6166
0,5758
0,5418
0,5133
0,4889
0,4677
0,4490
0,4325
0,4176
0,4042
0,3920
0,3809
0,3706
0,3612
0,3524
0,3443
0,3367
0,3295
0,3229
0,3166
0,3106
0,3050
0,2997
0,2947
0,2899
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
0,2047
0,2018
0,1991
0,1965
0,1939
0,1915
0,1891
0,1869
0,1847
0,1826
0,1805
0,1786
0,1766
0,1748
0,1730
0,1713
0,1696
0,1680
0,1664
0,1648
0,1633
0,1619
0,1604
0,1591
0,1577
0,1564
0,1551
0,2274
0,2242
0,2212
0,2183
0,2154
0,2127
0,2101
0,2076
0,2052
0,2028
0,2006
0,1984
0,1963
0,1942
0,1922
0,1903
0,1884
0,1866
0,1848
0,1831
0,1814
0,1798
0,1782
0,1767
0,1752
0,1737
0,1723
0,2728
0,2690
0,2653
0,2618
0,2584
0,2552
0,2521
0,2490
0,2461
0,2433
0,2406
0,2380
0,2354
0,2330
0,2306
0,2283
0,2260
0,2239
0,2217
0,2197
0,2177
0,2157
0,2138
0,2120
0,2102
0,2084
0,2067
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
0,1503
0,1491
0,1480
0,1469
0,1459
0,1448
0,1438
0,1428
0,1418
0,1409
0,1399
0,1390
0,1381
0,1372
0,1364
0,1355
0,1347
0,1339
0,1330
0,1323
0,1315
0,1307
0,1300
0,1292
0,1285
0,1278
0,1271
0,1669
0,1657
0,1644
0,1632
0,1620
0,1609
0,1597
0,1586
0,1576
0,1565
0,1554
0,1544
0,1534
0,1524
0,1515
0,1505
0,1496
0,1487
0,1478
0,1469
0,1460
0,1452
0,1444
0,1435
0,1427
0,1419
0,1412
0,2003
0,1988
0,1973
0,1958
0,1944
0,1930
0,1917
0,1903
0,1890
0,1878
0,1865
0,1853
0,1841
0,1829
0,1817
0,1806
0,1795
0,1784
0,1773
0,1763
0,1752
0,1742
0,1732
0,1722
0,1713
0,1703
0,1694
<stdlib.h>
<math.h>
<string>
<sstream>
<fstream>
216
if( n == 1){
for( i = 0; i < m*m; i++ )
V[i] = A[i];
*eV = eA;
return;
}
mPower(A,eA,V,eV,m,n/2);
B = (double*)malloc((m*m)*sizeof(double));
mMultiply(V,V,B,m);
eB = 2*(*eV);
if( n%2 == 0 ){
for( i = 0; i < m*m; i++ )
V[i]=B[i]; *eV=eB;
}
else{
mMultiply(A,B,V,m);
*eV=eA+eB;
}
if( V[(m/2)*m+(m/2)] > 1.0e140 ){
for( i = 0; i < m*m; i++ )
V[i] = V[i]*1.0e-140;
*eV += 140;
}
free(B);
}
double K( int n, double d ){
int k, m, i, j, g, eH, eQ;
double h, s, *H, *Q;
s = d*d*n;
if( s > 7.24 || ( s > 3.76 && n > 99 ) ) return 1.0-2.0*exp((2.000071+.331/sqrt(n)+1.409/n)*s);
k = (int)(n*d)+1;
m = 2*k-1;
h = k-n*d;
H =(double*)malloc((m*m)*sizeof(double));
Q =(double*)malloc((m*m)*sizeof(double));
for( i = 0; i < m; i++ )
for( j = 0; j < m; j++ )
if(i-j+1<0 ) H[i*m+j]=0;
else H[i*m+j]=1;
for( i = 0; i < m; i++ ){
H[i*m] -= pow(h,i+1);
H[(m-1)*m+i] -= pow(h,(m-i));
}
H[(m-1)*m] += ( 2.0*h-1.0 > 0.0 ? pow(2.0*h-1.0,m) : 0.0 );
for( i = 0; i< m; i++ )
for( j = 0; j < m; j++ )
if( i-j+1 > 0 ) for( g = 1; g <= i-j+1; g++ )
H[i*m+j] /= g;
eH = 0;
mPower(H,eH,Q,&eQ,m,n);
s = Q[(k-1)*m+k-1];
for( i = 1; i <= n; i++ ){
s = s*i/n;
if( s < 1.0e-140 ){
s *= 1.0e140;
eQ -= 140;
}
}
s *= pow(10.,eQ);
Modelagem e Simulao Discreta
217
free(H);
free(Q);
return s;
}
double KS( int n, double a ){
double x = 1.0, erro, I = 1.0-a;
do{
erro = I-K(n,x);
x += erro/5.0;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << "<table border='1' >";
str << "<tr><td>n<td>0.90<td>0.95<td>0.99";
for( int l = 1; l < 91; l++ ){
str << "<tr><td>" << l;
str << "<td>" << KS(l,0.10);
str << "<td>" << KS(l,0.05);
str << "<td>" << KS(l,0.01);
}
str << "</table>";
return str.str();
}
int main( void ){
string htm = "<br>Tabela KS<br>";
htm += Tabela();
ofstream file;
file.open( "KS-Quantis.out.html" );
file << htm;
file.close();
return 0;
}
218
0.00
0.00000
0.25335
0.52440
0.84162
1.28155
0.01
0.02507
0.27932
0.55338
0.87790
1.34076
0.02
0.05015
0.30548
0.58284
0.91537
1.40507
0.03
0.07527
0.33185
0.61281
0.95417
1.47579
0.04
0.10043
0.35846
0.64335
0.99446
1.55477
0.05
0.12566
0.38532
0.67449
1.03643
1.64485
0.06
0.15097
0.41246
0.70630
1.08032
1.75069
0.07
0.17637
0.43991
0.73885
1.12639
1.88079
0.08
0.20189
0.46770
0.77219
1.17499
2.05375
0.09
0.22754
0.49585
0.80642
1.22653
2.32635
Tabela
42
foi
elaborada
resolvendo
numericamente
z
<stdio.h>
<stdlib.h>
<cmath>
<string>
<vector>
<sstream>
<fstream>
<iomanip>
PI 3.141592653589793238L
219
return (f(a)+f(b)+4.0*Si+2.0*Sp)*h/3.0;
}
double Q( double q ){
double x = 1.0, erro;
do{
erro = q-I(0.0,x)-0.5;
x
+= 5.0*erro;
}while( fabs(erro) > 1.0E-7 );
return x;
}
string Tabela( void ){
stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>z";
for( int c = 0; c < 10; c++ )
str << "<td>" << c/100.0;
return 0;
9.10
QUANTIS DA DISTRIBUIO T
(UNILATERAL)
A funo densidade de probabilidade t-Student com n graus de liberdade
n+ 1
(
)
2
x 2 ( n+1 )
definida por t (x , n)=
(1+ ) 2 , sendo (x) a funo Gamma. A
n
2
( ) n
2
Tabela 43 lista os quantis t(q,n) unilateral, por exemplo, o valor t(0.90,13)
Modelagem e Simulao Discreta
220
0.925
4.1653
2.2819
1.9243
1.7782
1.6994
1.6502
1.6166
1.5922
1.5737
1.5592
1.5476
1.5380
1.5299
1.5231
1.5172
1.5121
1.5077
1.5037
1.5002
1.4970
1.4942
1.4916
1.4893
1.4871
1.4852
1.4834
1.4817
1.4801
1.4787
1.4774
0.950
6.3138
2.9200
2.3534
2.1318
2.0150
1.9432
1.8946
1.8595
1.8331
1.8125
1.7959
1.7823
1.7709
1.7613
1.7531
1.7459
1.7396
1.7341
1.7291
1.7247
1.7207
1.7171
1.7139
1.7109
1.7081
1.7056
1.7033
1.7011
1.6991
1.6973
0.975
12.7062
4.3027
3.1824
2.7764
2.5706
2.4469
2.3646
2.3060
2.2622
2.2281
2.2010
2.1788
2.1604
2.1448
2.1314
2.1199
2.1098
2.1009
2.0930
2.0860
2.0796
2.0739
2.0687
2.0639
2.0595
2.0555
2.0518
2.0484
2.0452
2.0423
0.990
31.8763
6.9646
4.5407
3.7469
3.3649
3.1427
2.9980
2.8965
2.8214
2.7638
2.7181
2.6810
2.6503
2.6245
2.6025
2.5835
2.5669
2.5524
2.5395
2.5280
2.5176
2.5083
2.4999
2.4922
2.4851
2.4786
2.4727
2.4671
2.4620
2.4573
n\q 0.900
31 1.3095
32 1.3086
33 1.3077
34 1.3070
35 1.3062
36 1.3055
37 1.3049
38 1.3042
39 1.3036
40 1.3031
41 1.3025
42 1.3020
43 1.3016
44 1.3011
45 1.3006
46 1.3002
47 1.2998
48 1.2994
49 1.2991
50 1.2987
51 1.2984
52 1.2980
53 1.2977
54 1.2974
55 1.2971
56 1.2969
57 1.2966
58 1.2963
59 1.2961
60 1.2958
0.925
1.4761
1.4749
1.4738
1.4728
1.4718
1.4709
1.4701
1.4692
1.4685
1.4677
1.4670
1.4664
1.4657
1.4651
1.4645
1.4640
1.4635
1.4629
1.4625
1.4620
1.4615
1.4611
1.4607
1.4603
1.4599
1.4596
1.4592
1.4589
1.4585
1.4582
0.950
1.6955
1.6939
1.6924
1.6909
1.6896
1.6883
1.6871
1.6860
1.6849
1.6839
1.6829
1.6820
1.6811
1.6802
1.6794
1.6787
1.6779
1.6772
1.6766
1.6759
1.6753
1.6747
1.6741
1.6736
1.6730
1.6725
1.6720
1.6716
1.6711
1.6706
0.975
2.0395
2.0369
2.0345
2.0322
2.0301
2.0281
2.0262
2.0244
2.0227
2.0211
2.0195
2.0181
2.0167
2.0154
2.0141
2.0129
2.0117
2.0106
2.0096
2.0086
2.0076
2.0066
2.0057
2.0049
2.0040
2.0032
2.0025
2.0017
2.0010
2.0003
0.990
2.4528
2.4487
2.4448
2.4411
2.4377
2.4345
2.4314
2.4286
2.4258
2.4233
2.4208
2.4185
2.4163
2.4141
2.4121
2.4102
2.4083
2.4066
2.4049
2.4033
2.4017
2.4002
2.3988
2.3974
2.3961
2.3948
2.3936
2.3924
2.3912
2.3901
n\q 0.900
61 1.2956
62 1.2954
63 1.2951
64 1.2949
65 1.2947
66 1.2945
67 1.2943
68 1.2941
69 1.2939
70 1.2938
71 1.2936
72 1.2934
73 1.2933
74 1.2931
75 1.2929
76 1.2928
77 1.2926
78 1.2925
79 1.2924
80 1.2922
81 1.2921
82 1.2920
83 1.2918
84 1.2917
85 1.2916
86 1.2915
87 1.2914
88 1.2912
89 1.2911
90 1.2910
0.925
1.4579
1.4576
1.4573
1.4570
1.4567
1.4565
1.4562
1.4560
1.4557
1.4555
1.4553
1.4551
1.4548
1.4546
1.4544
1.4542
1.4540
1.4538
1.4537
1.4535
1.4533
1.4531
1.4530
1.4528
1.4527
1.4525
1.4524
1.4522
1.4521
1.4519
0.950
1.6702
1.6698
1.6694
1.6690
1.6686
1.6683
1.6679
1.6676
1.6672
1.6669
1.6666
1.6663
1.6660
1.6657
1.6654
1.6652
1.6649
1.6646
1.6644
1.6641
1.6639
1.6636
1.6634
1.6632
1.6630
1.6628
1.6626
1.6624
1.6622
1.6620
0.975
1.9996
1.9990
1.9983
1.9977
1.9971
1.9966
1.9960
1.9955
1.9949
1.9944
1.9939
1.9935
1.9930
1.9925
1.9921
1.9917
1.9913
1.9908
1.9905
1.9901
1.9897
1.9893
1.9890
1.9886
1.9883
1.9879
1.9876
1.9873
1.9870
1.9867
0.990
2.3890
2.3880
2.3870
2.3860
2.3851
2.3842
2.3833
2.3824
2.3816
2.3808
2.3800
2.3793
2.3785
2.3778
2.3771
2.3764
2.3758
2.3751
2.3745
2.3739
2.3733
2.3727
2.3721
2.3716
2.3710
2.3705
2.3700
2.3695
2.3690
2.3685
Tabela
43
foi
elaborada
resolvendo
numericamente
n+1
)
z (
)
2
x 2 ( n+1
(1+ ) 2 dx=q0.5=0.5 , para n variando de 1 a 90 e q
n
2
0
( ) n
2
iguais a 0.900, 0.925, 0.950, 0.975 e 0.990, conforme o Algoritmo 9.7.
Para n = 1 e n =2 a integrao numrica no to precisa quanto para n
> 2.
Algoritmo 9.7: Gerador dos quantis da distribuio t unilateral
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
#include <iomanip>
//-----------------------------------------------------------------------#define PI 3.141592653589793238L
//-----------------------------------------------------------------------using namespace std;
//-----------------------------------------------------------------------double G( double z ){
return tgamma(z);
}
double f( double x, int gl ){
return G((gl+1.0)/2.0)*pow(1.0+x*x/gl,-(gl+1.0)/2.0)/ sqrt(gl*PI)/
G(gl/2.0);
}
Modelagem e Simulao Discreta
221
return 0;
222
9.11
QUANTIS DA DISTRIBUIO T
(BILATERAL)
A funo densidade de probabilidade t-Student com n graus de liberdade
n+ 1
(
)
)
2
x 2 ( n+1
definida por t (x , n)=
(1+ ) 2 , sendo (x) a funo Gamma. A
n
n
( ) n
2
Tabela 44 lista os quantis t(q,n) bilateral, pode-se verificar que a fdp
simtrica, ou seja, no geral t(1-/2,n) = -t(/2,n).
Tabela 44 - Quantis da Distribuio t bilateral
n\q 0.005
1 -52.5111
2 -9.9193
3 -5.8409
4 -4.6041
5 -4.0321
6 -3.7074
7 -3.4995
8 -3.3554
9 -3.2498
10 -3.1693
11 -3.1058
12 -3.0545
13 -3.0123
14 -2.9768
15 -2.9467
16 -2.9208
17 -2.8982
18 -2.8784
19 -2.8609
20 -2.8453
21 -2.8314
22 -2.8188
23 -2.8073
24 -2.7969
25 -2.7874
26 -2.7787
27 -2.7707
28 -2.7633
29 -2.7564
30 -2.7500
0.010
-28.7660
-6.9626
-4.5407
-3.7469
-3.3649
-3.1427
-2.9980
-2.8965
-2.8214
-2.7638
-2.7181
-2.6810
-2.6503
-2.6245
-2.6025
-2.5835
-2.5669
-2.5524
-2.5395
-2.5280
-2.5177
-2.5083
-2.4999
-2.4922
-2.4851
-2.4786
-2.4727
-2.4671
-2.4620
-2.4573
0.025
-12.1867
-4.3021
-3.1824
-2.7764
-2.5706
-2.4469
-2.3646
-2.3060
-2.2622
-2.2281
-2.2010
-2.1788
-2.1604
-2.1448
-2.1315
-2.1199
-2.1098
-2.1009
-2.0930
-2.0860
-2.0796
-2.0739
-2.0687
-2.0639
-2.0595
-2.0555
-2.0518
-2.0484
-2.0452
-2.0423
0.050
-6.1803
-2.9198
-2.3534
-2.1318
-2.0150
-1.9432
-1.8946
-1.8595
-1.8331
-1.8125
-1.7959
-1.7823
-1.7709
-1.7613
-1.7531
-1.7459
-1.7396
-1.7341
-1.7291
-1.7247
-1.7207
-1.7171
-1.7139
-1.7109
-1.7081
-1.7056
-1.7033
-1.7011
-1.6991
-1.6973
0.100
-3.0431
-1.8855
-1.6377
-1.5332
-1.4759
-1.4398
-1.4149
-1.3968
-1.3830
-1.3722
-1.3634
-1.3562
-1.3502
-1.3450
-1.3406
-1.3368
-1.3334
-1.3304
-1.3277
-1.3253
-1.3232
-1.3212
-1.3195
-1.3178
-1.3163
-1.3150
-1.3137
-1.3125
-1.3114
-1.3104
0.900
3.1130
1.8857
1.6377
1.5332
1.4759
1.4398
1.4149
1.3968
1.3830
1.3722
1.3634
1.3562
1.3502
1.3450
1.3406
1.3368
1.3334
1.3304
1.3277
1.3253
1.3232
1.3212
1.3195
1.3178
1.3163
1.3150
1.3137
1.3125
1.3114
1.3104
0.925
4.2273
2.2820
1.9243
1.7782
1.6994
1.6502
1.6166
1.5922
1.5737
1.5592
1.5476
1.5380
1.5299
1.5231
1.5172
1.5121
1.5077
1.5037
1.5002
1.4970
1.4942
1.4916
1.4893
1.4871
1.4852
1.4834
1.4817
1.4801
1.4787
1.4774
0.950
6.4529
2.9202
2.3534
2.1318
2.0150
1.9432
1.8946
1.8595
1.8331
1.8125
1.7959
1.7823
1.7709
1.7613
1.7531
1.7459
1.7396
1.7341
1.7291
1.7247
1.7207
1.7171
1.7139
1.7109
1.7081
1.7056
1.7033
1.7011
1.6991
1.6973
0.975
13.2716
4.3032
3.1824
2.7764
2.5706
2.4469
2.3646
2.3060
2.2622
2.2281
2.2010
2.1788
2.1604
2.1448
2.1315
2.1199
2.1098
2.1009
2.0930
2.0860
2.0796
2.0739
2.0687
2.0639
2.0595
2.0555
2.0518
2.0484
2.0452
2.0423
0.990
35.5999
6.9666
4.5407
3.7469
3.3649
3.1427
2.9980
2.8965
2.8214
2.7638
2.7181
2.6810
2.6503
2.6245
2.6025
2.5835
2.5669
2.5524
2.5395
2.5280
2.5177
2.5083
2.4999
2.4922
2.4851
2.4786
2.4727
2.4671
2.4620
2.4573
0.995
80.8063
9.9304
5.8409
4.6041
4.0321
3.7074
3.4995
3.3554
3.2498
3.1693
3.1058
3.0545
3.0123
2.9768
2.9467
2.9208
2.8982
2.8784
2.8609
2.8453
2.8314
2.8188
2.8073
2.7969
2.7874
2.7787
2.7707
2.7633
2.7564
2.7500
Tabela
44
foi
elaborada
resolvendo
numericamente
n+1
)
z (
)
2
x 2 ( n+1
(1+
) 2 dx=q0.5=0.5 , para n variando de 1 a 30 e q
n
n
0
( ) n
2
iguais a 0.005, 0.010, 0.025, 0.050, 0.100, 0.900, 0.925, 0.950, 0.975,
0.990 e 0.995, conforme o Algoritmo 9.8. Para n = 1 e n = 2 a integrao
numrica no to precisa quanto para n > 2.
Algoritmo 9.8: Gerador dos quantis da distribuio t bilateral
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
Modelagem e Simulao Discreta
223
#include
#include
#include
#include
#include
#define
<string>
<vector>
<sstream>
<fstream>
<iomanip>
PI 3.141592653589793238L
gl
<<
<<
<<
<<
<<
<<
<<
<<
<<
224
}
str << "</table>";
return str.str();
}
return 0;
9.12
f ( x , n)=
n
x
1
2
2
n
2
0.005
0.0100
0.0717
0.2070
0.4117
0.6757
0.9893
1.3444
1.7349
2.1559
2.6032
3.0738
3.5650
4.0747
4.6009
5.1422
5.6972
6.2648
6.8440
7.4338
8.0337
8.6427
9.2604
9.8862
10.5197
11.1602
11.8076
12.4613
13.1211
13.7867
0.010
0.0201
0.1148
0.2971
0.5543
0.8721
1.2390
1.6465
2.0879
2.5582
3.0535
3.5706
4.1069
4.6604
5.2293
5.8122
6.4078
7.0149
7.6327
8.2604
8.8972
9.5425
10.1957
10.8564
11.5240
12.1981
12.8785
13.5647
14.2565
14.9535
0.025
0.0506
0.2158
0.4844
0.8312
1.2373
1.6899
2.1797
2.7004
3.2470
3.8157
4.4038
5.0088
5.6287
6.2621
6.9077
7.5642
8.2307
8.9065
9.5908
10.2829
10.9823
11.6886
12.4012
13.1197
13.8439
14.5734
15.3079
16.0471
16.7908
0.050
0.1026
0.3518
0.7107
1.1455
1.6354
2.1673
2.7326
3.3251
3.9403
4.5748
5.2260
5.8919
6.5706
7.2609
7.9616
8.6718
9.3905
10.1170
10.8508
11.5913
12.3380
13.0905
13.8484
14.6114
15.3792
16.1514
16.9279
17.7084
18.4927
0.100
0.2107
0.5844
1.0636
1.6103
2.2041
2.8331
3.4895
4.1682
4.8652
5.5778
6.3038
7.0415
7.7895
8.5468
9.3122
10.0852
10.8649
11.6509
12.4426
13.2396
14.0415
14.8480
15.6587
16.4734
17.2919
18.1139
18.9392
19.7677
20.5992
0.900
4.6052
6.2518
7.7794
9.2364
10.6446
12.0170
13.3616
14.6837
15.9872
17.2750
18.5493
19.8119
21.0641
22.3071
23.5418
24.7690
25.9894
27.2036
28.4120
29.6151
30.8133
32.0069
33.1962
34.3816
35.5632
36.7412
37.9159
39.0875
40.2560
0.925
5.1805
6.9052
8.4963
10.0083
11.4659
12.8834
14.2697
15.6309
16.9714
18.2942
19.6020
20.8966
22.1795
23.4522
24.7155
25.9705
27.2178
28.4581
29.6920
30.9200
32.1424
33.3597
34.5723
35.7803
36.9841
38.1840
39.3801
40.5727
41.7619
0.950
5.9915
7.8157
9.4877
11.0705
12.5916
14.0671
15.5073
16.9190
18.3070
19.6751
21.0261
22.3620
23.6848
24.9958
26.2962
27.5871
28.8693
30.1435
31.4104
32.6706
33.9244
35.1725
36.4150
37.6525
38.8851
40.1133
41.3371
42.5570
43.7730
0.975
7.3778
9.3510
11.1433
12.8325
14.4494
16.0128
17.5345
19.0228
20.4832
21.9200
23.3367
24.7356
26.1189
27.4884
28.8454
30.1910
31.5264
32.8523
34.1696
35.4789
36.7807
38.0756
39.3641
40.6465
41.9232
43.1945
44.4608
45.7223
46.9792
0.990
9.2103
11.3534
13.2767
15.0863
16.8119
18.4753
20.0902
21.6660
23.2093
24.7250
26.2170
27.6882
29.1412
30.5779
31.9999
33.4087
34.8053
36.1909
37.5662
38.9322
40.2894
41.6384
42.9798
44.3141
45.6417
46.9629
48.2782
49.5879
50.8922
225
0.995
10.5966
12.8585
14.8603
16.7496
18.5476
20.2777
21.9550
23.5894
25.1882
26.7568
28.2995
29.8195
31.3193
32.8013
34.2672
35.7185
37.1565
38.5823
39.9968
41.4011
42.7957
44.1813
45.5585
46.9279
48.2899
49.6449
50.9934
52.3356
53.6720
Tabela
foi
elaborada
resolvendo
numericamente
e
dx= p=1 , para n variando de 1 a 30 e p iguais a 0.005,
n
0
2 ( )
2
0.010, 0.025, 0.050, 0.100, 0.900, 0.925, 0.950, 0.975, 0.990 e 0.995,
conforme o algoritmo abaixo. Para n = 1 a integrao numrica no to
precisa quanto para n > 1.
45
n
x
1
2
2
n
2
<stdio.h>
<stdlib.h>
<cmath>
<string>
<vector>
<sstream>
<fstream>
<iomanip>
226
stringstream str;
str << setprecision(4);
str << fixed;
str << "<table cellpadding='2' cellspacing='0' border='1'>";
str << "<tr><td>q<td>0.005<td>0.010<td>0.025<td>0.050<td>0.100";
str << "<td>0.900<td>0.925<td>0.950<td>0.975<td>0.990<td>0.995";
for( int
str
str
str
str
str
str
gl
<<
<<
<<
<<
<<
<<
str
str
str
str
str
str
<<
<<
<<
<<
<<
<<
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
"<td>"
<<
<<
<<
<<
<<
<<
Q(0.900,gl);
Q(0.925,gl);
Q(0.950,gl);
Q(0.975,gl);
Q(0.990,gl);
Q(0.995,gl);
}
str << "</table>";
return str.str();
return 0;
Segundo Bussab & Morettin (2002), os valores de 2(p;n) para n > 120
podem ser aproximados pelos seus equivalentes da distribuio normal.
9.13
NOES BSICAS DE TEORIA DOS
NMEROS
9.13.1
FUNO PISO
227
Exemplo 9.5:
2 = floor(2.3)
3 = floor(3.8)
-3 = floor(-2.3)
-4 = floor(-3.8).
9.13.2
FUNO TETO
Exemplo 9.6:
3 = ceil(2.3)
4 = ceil(3.8)
-2 = ceil(-2.3)
-3 = ceil(-3.8)
9.13.3
NMERO PRIMO
228
for( c = 3; c < N; c += 2 )
if( !(n % c) ) return 0;
return 1;
}
int main (void){
int n;
for( n = 3; n < 100; n++ )
if( primo(n) ) printf(" %d ::", n);
return 0;
}
9.13.4
9.13.5
DIVISIBILIDADE
229
9.13.6
a|a
a|b e b|c a|c
a|b e b|a a=b ou a=-b
c|a e c|b c|ra + sb
a|b e c|d ac|bd
a|b ac|bc
ac|bc e c 0 a|b
1|a
a|0
0|a a=0
a|1 a=1
a|b e b 0 |a| |b|
a|b e a 0 (b/a)|b
reflexividade
transitividade
anti-simetria
linearidade
multiplicatividade
lei do cancelamento
1 divide todo nmero inteiro
qualquer nmero divide zero
zero s divide zero
os divisores de 1 so 1 e -1
compatibilidade com a ordem
OPERADOR MOD
9.14
230
231
populao.
Do mesmo modo,
com intervalo de confiana de 95%:(3,90(1.960) 0,95/32 1/2)=(3,57,4,23)
com intervalo de confiana de 99%:(3,90(2.576) 0,95/32 1/2)=(3,46,4,33)
232
10 REFERNCIAS
practical
233
234
235
236