Você está na página 1de 29

Aplicacionais para Ciências e Engenharia

TP 6

Universidade de Aveiro

TP6 Aplicacionais para Ciências e Engenharia 1


Sumário

• Geração de números aleatórios


• Histogramas
• Alguns parâmetros estatísticos
– Média
– Desvio padrão
• Sequências Aleatórias
– Alteração dos intervalos e parâmetros estatísticos
– Números aleatórios inteiros com distribuição uniforme
• Aproximação do cálculo de probabilidades
• Exercícios
TP6 Aplicacionais para Ciências e Engenharia 2
Geração de números aleatórios

• No Matlab existem duas funções básicas para gerar


números aleatórios:

– RAND
• distribuição uniforme entre 0 e 1

– RANDN
• distribuição normal (ou Gaussiana ) com média 0 e desvio
padrão 1

TP6 Aplicacionais para Ciências e Engenharia 3


Geração de números aleatórios

• Sintaxe
– rand(M) ou randn(M)

gera uma matriz quadrada de dimensão M×M

– rand(M,N)ou randn(M,N)

gera uma matriz de dimensão M×N

TP6 Aplicacionais para Ciências e Engenharia 4


Geração de números aleatórios
• Exemplos
>> x=rand(1, 6)
>> x=
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621

• O que acontecerá se se correr novamente o comando


anterior ?
Obteremos o mesmo vector?

NÃO!
São números aleatórios

TP6 Aplicacionais para Ciências e Engenharia 5


Geração de números aleatórios
• Atenção!
• Não confundir geração de números aleatórios com
distribuição uniforme

Números
RAND aleatórios

• Com geração de números uniformemente espaçados num


dado intervalo

Números
LINSPACE determinísticos
TP6 Aplicacionais para Ciências e Engenharia 6
Histogramas
• Histograma
- gráfico de barras em que a altura de cada barra é
proporcional ao número de ocorrências em cada
intervalo da variável. A variável de entrada é dividida em
intervalos de igual amplitude.

• Função do Matlab
hist (X, N) X é o vector (ou matriz) de entrada
e N é o nº de intervalos utilizado
(caso N seja omitido o Matlab
utiliza 10 intervalos).

TP6 Aplicacionais para Ciências e Engenharia 7


Histogramas

• Exemplo
>> x=rand (1,1000); % mil elementos
>> hist (x, 20)

70

60

50

40

30

20

10

0
0 0.2 0.4 0.6 0.8 1

TP6 Aplicacionais para Ciências e Engenharia 8


Histogramas

• Exemplo
>> x=rand (1,1e6); % 1 milhão de elementos
>> hist (x, 20)
4
x 10
6

5 O número de
elementos
4
gerados é
3 importante
em estatística
2

1 Lei dos
Grandes
0
0 0.2 0.4 0.6 0.8 1 Números
TP6 Aplicacionais para Ciências e Engenharia 9
Histogramas

• Exemplo
>> x= randn(1, N); hist ( x, N);
N= 1000 N= 10000
40 400

30 300

20 200

10 100

0 0
-5 0 5 -5 0 5
4
N= 100000 x 10 N= 1000000
4000 4

3000 3

2000 2

1000 1

0 0
-5 0 5 -5 0 5

TP6 Aplicacionais para Ciências e Engenharia 10


Alguns parâmetros estatísticos

• Média N
 x ( n)
n 1
x
N
• Calculo da média em Matlab
mean (x) se x é um vector então
mean (x) é a média de x
se X é uma matriz, então,
mean (X) é um vector linha com
a média de cada coluna de x.
TP6 Aplicacionais para Ciências e Engenharia 11
Alguns parâmetros estatísticos

• Exemplos
>> x=mean ([1 2 3 4])
>> x =
2.5

>> A= [1 2 3
1 2 3
1 2 3];

>> mean (A)


>> ans = Média dos
1 2 3 elementos de cada
coluna
TP6 Aplicacionais para Ciências e Engenharia 12
Alguns parâmetros estatísticos

• Desvio padrão
– O desvio padrão é uma medida do grau de dispersão de um
conjunto de números em torno do valor médio;
– Um desvio padrão pequeno significa que os números
aleatórios estão todos concentrados em torno do valor
médio.

 x(n)  x 
N
2

 n 1
N 1

TP6 Aplicacionais para Ciências e Engenharia 13


Alguns parâmetros estatísticos
• Calculo da média em Matlab
std
Sintaxe
std (x) se x é um vector então
std (x) é o desvio padrão de x

se X é uma matriz, então,


std (X) é um vector linha com o
desvio padrão de cada coluna de X.

TP6 Aplicacionais para Ciências e Engenharia 14


Alguns parâmetros estatísticos
• Exemplos
>> std (rand(1, 1000))
ans =
0.2887
>> A= randn(3,3)
A =
1.9368 1.3084 -1.1556
1.3363 1.1236 -0.0516
-0.6870 -0.3373 0.3771
>> std (A)
ans =
1.3747 0.9015 0.7908

TP6 Aplicacionais para Ciências e Engenharia 15


Sequências aleatórias

• O Matlab permite a criação de sequências de números


aleatórios com propriedades estatísticas diferentes das
obtidas a partir das funções rand e randn.

• É possível obter sequências com uma média, desvio-


padrão e limites de acordo com o pretendido.

TP6 Aplicacionais para Ciências e Engenharia 16


Sequências aleatórias
• Alteração da média e limites
– A função rand gera sequências com média de 0.5. Para
alterar a média da sequência basta deslocar este valor para
o pretendido.
– Supondo que se pretendia uma sequência com média m, o
comando Matlab seria
>> x= rand(1,100)-0.5+m
>> mean(x)

Note-se que neste caso os limites também mudariam


para m-0.5 e m+0.5. Verifique!

TP6 Aplicacionais para Ciências e Engenharia 17


Sequências aleatórias

• Alteração da média e limites


– Se se pretender alterar a média e os limites em simultâneo
teremos que multiplicar a sequência por uma constante
adequada. Vejamos o caso genérico para rand

px py y  x(b  a)  a
1

0 1 x 0 a b y

1 b-a
TP6 Aplicacionais para Ciências e Engenharia 18
Sequências aleatórias

• Alteração da média e limites


– A função randn gera sequências com média nula e desvio
padrão 1. Para alterar a média para m e o desvio padrão
para , é necessário fazer a seguinte transformação:

y  x  m
px
py

0 1 x 0 m  y
TP6 Aplicacionais para Ciências e Engenharia 19
Sequências aleatórias

• Números aleatórios inteiros com distribuição


uniforme
– Para obtermos números aleatórios inteiros uniformemente
distribuídos em {1, 2, 3, 4} podemos utilizar o seguinte
código

>> x= fix( 4* rand(1,1000) + 1);

Números aleatórios somando 1 então x


entre 0 e 4 está entre 1 e 5,
arredonda em exclusive
direcção ao zero
TP6 Aplicacionais para Ciências e Engenharia 20
Aproximação do cálculo de
probabilidades
• Como podemos estimar a probabilidade de um
determinado acontecimento aleatório?
– simulamos numericamente a experiência aleatória;
– repetimos a experiência um número elevado de vezes;
– contamos o número de ocorrências do acontecimento em
que estamos interessados;
– dividimos pelo número total de experiências.

TP6 Aplicacionais para Ciências e Engenharia 21


Aproximação do cálculo de
probabilidades
• Lançamento de moeda
– Com o Matlab é possível utilizar a função rand para testar a
estatística do lançamento de uma moeda. Como em média
metade dos valores de rand são menores que 0.5 e a outra
metade maiores que 0.5 podemos escrever o código Matlab
da seguinte forma:

>> moeda= rand(1,1000); % Lança a moeda 1000 vezes


>> caras= sum(moeda < 0.5); % Número de caras
>> coroas= sum(moeda >= 0.5); % Número de coroas
>> prob_coroa= coroas/1000 % Estimativa da prob.

TP6 Aplicacionais para Ciências e Engenharia 22


Aproximação do cálculo de
probabilidades
•Estimativa da probabilidade
Estimativa da probabilidade de sair coroa
0.7

0.6

0.5

0.4 Lei dos Grandes Números


Se um evento de probabilidade p é observado N elevado
0.3 repetidamente em ocasiões independentes, a
proporção da frequência observada deste evento em
0.2 P=0.5
relação ao total número de repetições converge em
direção a p, à medida que o número de
0.1
repetições/experiências se torna arbitrariamente grande.
0
0 500 1000 1500 2000
Nº de experiencias

TP6 Aplicacionais para Ciências e Engenharia 23


Aproximação do cálculo de
probabilidades
• Lançamento de um dado
– Podemos igualmente simular o lançamento de um dado que
possui 6 faces. Utiliza-se a função rand para gerar
números de 0 a 1, que multiplicado por 6 e somando 1,
obtemos números aleatórios entre 1 e 7.

Com a função fix


obtemos apenas os 6
inteiros com igual
probabilidade

1 2 3 4 5 6 7 x
TP6 Aplicacionais para Ciências e Engenharia 24
Aproximação do cálculo de
probabilidades
• Código em Matlab:

>> dado= rand(1,1000); % Lança o dado 1000 vezes


>> dado= dado*6+1; % Altera a gama da função
% rand
>> dado= fix(dado) % Trunca apenas para os
% inteiros

TP6 Aplicacionais para Ciências e Engenharia 25


Aproximação do cálculo de
probabilidades
• Soma do lançamento de 2 dados
– Considere o lançamento de dois dados. Estime a probabilidade
da soma dos dois dados dar 7.

>> N= 10000;
>> x= fix( 6* rand(1, N)+1); % lançamento de 1 dado
>> y= fix( 6* rand(1, N)+1); % lanç. de outro dado
>> s= x+y; % soma dos 2 dados
>> a= (s==7); %vector com 1 nas posições em que s=7
>> prob_s_7= sum(a)/N

TP6 Aplicacionais para Ciências e Engenharia 26


Exercícios (1)

• Gere um vector x com 105 números aleatórios com


distribuição uniforme no intervalo ]2; 3[. Calcule a
media e o desvio padrão dos números gerados.
Calcule também a média e o desvio padrão para y =
sin(2x). Numa figura com 2 áreas gráficas dispostas
verticalmente, faça um histograma dos valores de x
com 30 classes na área gráfica superior e um
histograma dos valores de y com 30 classes na área
gráfica inferior. Documente devidamente os gráficos.

TP6 Aplicacionais para Ciências e Engenharia 27


Exercícios (2)

• Gere um vector, x, com 100 pontos, composto por


números aleatórios com distribuição uniforme no
intervalo [10, 30]. Calcule a percentagem de
elementos maiores que 20.

• Gere um vector x, com 105 elementos aleatórios que


seguem uma distribuição normal com media igual a 4
e desvio padrão igual a 2. Apresente o histograma do
vector x com 20 classes. Calcule ainda a fração de
elementos no intervalo [2, 6].

TP6 Aplicacionais para Ciências e Engenharia 28


Exercícios (3)

• Pretende-se simular em computador o lançamento


simultâneo de 2 dados com os valores faciais 1; 2; …; 6.
Construa uma matriz D (2 x1000) em que cada linha
representa 1000 lançamentos dum dos 2 dados. Assim o
elemento Dm,n representara o resultado associado ao
dado m durante o lançamento n. Crie a matriz D a partir
da geração equiparável de números inteiros (1; 2; …; 6).
Seja S a soma dos valores dos 2 dados obtidos ao longo
de cada um dos 1000 lançamentos. Obtenha o vector S, e
estime a probabilidade de S = 12.

TP6 Aplicacionais para Ciências e Engenharia 29

Você também pode gostar