Skip to content
This repository has been archived by the owner on Nov 3, 2020. It is now read-only.

Commit

Permalink
Adding Practial Classes 1, 2, ..., 8
Browse files Browse the repository at this point in the history
  • Loading branch information
vascoalramos committed Jan 31, 2019
1 parent 60fd5c2 commit 72cc0da
Show file tree
Hide file tree
Showing 128 changed files with 129,993 additions and 0 deletions.
Binary file not shown.
6 changes: 6 additions & 0 deletions Práticas/P01/R1.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
% quantas sequencias de 10 bits há?
numB = 1; % numero de sequencias
for k=1:10 % k equivale a uuma posicao da sequencia; desde a posicao 1 -> 10
numB = numB * 2;
end
numB
13 changes: 13 additions & 0 deletions Práticas/P01/R3.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
% por calculos cheguei a conclusao de que a probabilidade de acertar
% todas as n respostas, escolhendo-as com igual probabilidade teorica de
% acertar/errar corresponde a expressao p("100%") = 0.5^n
% VAMOS CONFIRMAR
p = 0.5;
prompt = 'Quantas perguntas tem o teste (introduza o valor de n)? ';
n = input(prompt);

% Probabilidade Teórica
probT = p^n

% Probabilidade de Simulação
probSim = calcP(p,n,n,1e6)
5 changes: 5 additions & 0 deletions Práticas/P01/R6a.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
for k = 1 : 6
for x = 1 : 6
z = k + x
end
end
9 changes: 9 additions & 0 deletions Práticas/P01/R6b.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
% Lancam-se dois dados e toma-se nota da soma de pontos obtida
% Calcule a probabilidade de se obter a soma 9
N = 1e5;
n = 2;
k = 9;

lancamentos = randi([1,6],n,N);
sucessos = sum(lancamentos) == k; % SUCESSOS = "a soma dar 9"
probSim = sum(sucessos) / N
11 changes: 11 additions & 0 deletions Práticas/P01/R7.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
% Um conjunto de 50 pecas contem 8 pecas defeituosas.
% Escolhem-se aleatoriamente 10 pecas.
% Qual a probabilidade de encontrar 3 defeituosas?
n = 10;
p = 8/50;
k = 3;
N = 1e5;

probSim = calcProbSim(p, n, k, N)

probT = calcProbT(p,n,k)
6 changes: 6 additions & 0 deletions Práticas/P01/calcP.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
function [p1] = calcP(p,n,k,N)
lancamentos = rand(n,N) < p;
sucessos= sum(lancamentos)==k;
p1 = sum(sucessos)/N;
end

17 changes: 17 additions & 0 deletions Práticas/P01/ex1.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
% Probabilidade Teórica
% p = n!/((n-k)!k!)*p^k(1-p)^(n-k)

p = 0.5;
k = 2;
n = 3;
prob = factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k) % aplicacao da formula teorica

% Probabilidade de simulacao
N = 1e5; %%==1*10^5 mumero de experiencias
n = 3; %% numero de lancamentos por experiencia
p = 0.5; %% probabilidade de sair cara
k = 2; %% Tenho sucesso na exp. qnd o numero de caras que sair for == 2

lancamentos = rand(n,N) > p ; % se for >0.5 da 1 -> saiu cara, caso contrário saiu coroa
sucessos = sum(lancamentos) == k ; % da-nos o numero de sucessos (ou seja, que sairam 2 caras)
probSim = sum(sucessos)/N
14 changes: 14 additions & 0 deletions Práticas/P01/ex2.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
N = 1e5; % numero de repeticoes da experiencia
n = 15; % numero de lancamentos
p = 0.5; % Prob de sair cara
k = 6; % Sucesso qnd temos 6 caras

% Probabilidade Teórica

probReal = factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k)

% Probabilidade de Simulação

lanc = rand(n,N) > p;
succ = sum(lanc) == k;
probSim = sum(succ)/N
16 changes: 16 additions & 0 deletions Práticas/P01/ex3.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
N = 1e5; % numero de repeticoes da experiencia
n = 15; % numero de lancamentos
p = 0.5; % Prob de sair cara
k = 6; % Sucesso qnd temos 6 caras

% Probabilidade de Simulação
lancamentos = rand(n,N) > p;
sucessos = sum(lancamentos) >= k;
probabilidade = sum(sucessos)/ N

% Probablidade Teórica
probT = 0;
for k = 6 : n
probT = probT + (factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k));
end
probT
33 changes: 33 additions & 0 deletions Práticas/P01/ex4.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
N = 1e5; %%#de repeticoes da experiencia
n = 15; %%#de lancamentos
p = 0.5; %%Prob de sair cara ou coroa
k = 6; %%Sucesso qnd temos 6, ou mais, caras

calcP(p,n,k,N);

n = 20;

for k = 0 : n
prob(k+1) = calcP(p,n,k,N); %%Prob sera um vetor em que a posicao k+1 equivale a probabilidade (tem de ser k+1 pois os vetores comecam na posicao 1, e o k inicaliza se a 0);
fprintf(1,'P(%d sucessos em %d lancamentos e: %.4f\n',k,n, prob(k+1));
end
figure(1)
stem(prob)

n = 40;

for k = 0 : n
prob1(k+1) = calcP(p,n,k,N);
fprintf(1,'P(%d sucessos em %d lancamentos e: %.4f\n',k,n, prob1(k+1));
end
figure(2)
stem(prob1)

n = 100;

for k = 0 : n
prob2(k+1) = calcP(p,n,k,N);
fprintf(1,'P(%d sucessos em %d lancamentos e: %.4f\n',k,n, prob2(k+1));
end
figure(3)
stem(prob2)
51 changes: 51 additions & 0 deletions Práticas/P01/ex5.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
n = 5;
p = 0.3;
k = 3;
N = 1e5;

fprintf(1, 'ALINEA A)')
% Probablidade de Simulação
pecas = rand(n,N) < p;
defeitos= sum(pecas)==k;
probSim = sum(defeitos)/N

% Probabilidade Teórica
probT = factorial(n)/ ( factorial(n-k)*factorial(k))*p^k*(1-p)^(n-k)


% ALINEA B
fprintf(1, '\n\nALINEA B)\n')
n = 5;
p = 0.3;
k = 2;
N = 1e5;
% Probablidade de Simulação
lancamentos = rand(n,N) < p;
sucessos= sum(lancamentos)<=k;
probSim = sum(sucessos)/N

% Probabilidade Teórica
probT = 0;
for k = 0: 2
probT = probT + factorial(n)/ ( factorial(n-k)*factorial(k))*p^k*(1-p)^(n-k);
end
probT


% ALINEA C
fprintf(1, '\n\nALINEA B)\n')
n = 5;
p = 0.3;
k = 2;
N = 1e5;
% Probablidade de Simulação

for k = 0 : n
prob(k+1) = calcP(p,n,k,N);
fprintf(1,'P(%d peças defeituosas em %d peças e: %.4f\n',k,n, prob(k+1));
end
figure(1);
bar(1:6,prob, 'b')

figure(2);
hist(prob,5)
Binary file not shown.
17 changes: 17 additions & 0 deletions Práticas/P02/dardos.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function [p1,p2] = dardos(n,m, N)
% temos n dardos, m alvos e N repeticoes da experienca
% funcao que calcula 2 probs:
% -> p1: prob de nenhum alvo ter sido atingido mais do que uma vez
% -> p2: prob de pelo menos 1 alvo ter sido atingido 2 (ou mais) vezes

alvos = randi([1 m],n,N);
sucessos = 0;
for i=1:N
if length(unique(alvos(:,i))) == n
sucessos = sucessos + 1;
end
end
p1 = sucessos/N;
p2 = 1 - p1;
end

16 changes: 16 additions & 0 deletions Práticas/P02/ex1a.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
N = 1e5; % numero de experiencias realizadas
n = 2; % numero de filhos
p = 0.5; % probabilidade de nascer rapaz (ou rapariga)
k = 1; % "ter pelo menos um filho"

% Probabilidade de Simulação
filhos = rand(n, N) < p; % 1 -> filho ; 0 -> filha
sucessos = sum(filhos) >= k;
probSim = sum(sucessos)/N

% Probabilidade Teórica
probT = 0;
for k = 1 : n
probT = probT + (factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k));
end
probT
31 changes: 31 additions & 0 deletions Práticas/P02/ex1c.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
% Seja A: "ter 2 filhos rapazes" e b: "ter um filho rapaz"
% p(A|B) = p(AB)/p(B)

% para calcular p (AB) é estimar a situação de que os 2 filhos sao rapazes
% para calcular p(B) é estimar a situação de que pelo menos um filho é
% rapaz

N = 1e5; % numero de experiencias realizadas
n = 2; % numero de filhos
p = 0.5; % probabilidade de nascer rapaz (ou rapariga)
k = 1; % "ter pelo menos um filho"

% Probabilidade de Simulação
% p(AB) ->
filhos = rand(n, N) < p;
sucessos = sum(filhos) == n;
probSim = sum(sucessos)/N;

% p(B) ->
sucessos1 = sum(filhos) >= k;
probSim1 = sum(sucessos1)/N;

probSimFinal = probSim/probSim1

% Probabilidade Teórica
probB =0;
for k = 1 : 2
probB = probB + factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k);
end
probAB = factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k);
probT = probAB / probB
18 changes: 18 additions & 0 deletions Práticas/P02/ex1d.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
N = 1e5; % numero de experiencias realizadas
n = 2; % numero de filhos
p = 0.5; % probabilidade de nascer rapaz (ou rapariga)
k = 1; % "ter pelo menos um filho"

% Pobabilidade de Similução

% Seja A: "ter 2º filho rapaz" e B: "o 1º filho ser rapaz"
% p(A|B) = p(AB)/p(B)
filhos = rand(n, N) < p;
% p(AB) -->
ind_1 = find(filhos(1,:)==1); % numB
sucessos = sum(filhos(:,ind_1)) == n; %numAB
numAB = sum(sucessos);
% p(B) -->
numB = sum(sum(filhos(1,:)==1));
% prob final
probSim = numAB/numB
22 changes: 22 additions & 0 deletions Práticas/P02/ex1e.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
% Seja A: "ter 2 filhos rapazes" e b: "ter um filho rapaz"
% p(A|B) = p(AB)/p(B)

% para calcular p (AB) é estimar a situação de que os 2 filhos sao rapazes
% para calcular p(B) é estimar a situação de que pelo menos um filho é
% rapaz

N = 1e5; % numero de experiencias realizadas
n = 5; % numero de filhos
p = 0.5; % probabilidade de nascer rapaz (ou rapariga)
k = 1; % "ter pelo menos um filho"

% Probabilidade de Simulação
% p(AB) ->
filhos = rand(n, N) < p;
sucessos = sum(filhos) == 2;
probSim = sum(sucessos)/N;
% p(B) ->
sucessos1 = sum(filhos) >= k;
probSim1 = sum(sucessos1)/N;

probSimFinal = probSim/probSim1
22 changes: 22 additions & 0 deletions Práticas/P02/ex1f.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
% Seja A: "ter pelo menos 3 filhos rapazes" e b: "ter um filho rapaz"
% p(A|B) = p(AB)/p(B)

% para calcular p (AB) é estimar a situação de que os 2 filhos sao rapazes
% para calcular p(B) é estimar a situação de que pelo menos um filho é
% rapaz

N = 1e5; % numero de experiencias realizadas
n = 5; % numero de filhos
p = 0.5; % probabilidade de nascer rapaz (ou rapariga)
k = 1; % "ter pelo menos um filho"

% Probabilidade de Simulação
% p(AB) ->
filhos = rand(n, N) < p;
sucessos = sum(filhos) >= 2;
probSim = sum(sucessos)/N;
% p(B) ->
sucessos1 = sum(filhos) >= k;
probSim1 = sum(sucessos1)/N;

probSimFinal = probSim/probSim1
12 changes: 12 additions & 0 deletions Práticas/P02/ex2a.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
N = 1e5;
n = 10;
k = 10;
p = 0.5;

% Probabilidade de Simulação
lancamentos = rand(n, N) < p;
sucessos = sum(lancamentos) == k;
probSim = sum(sucessos)/N

% Probabilidade Teórica
probT = factorial(n)/ (factorial(n-k)*factorial(k)) * p^k*(1-p)^(n-k)
17 changes: 17 additions & 0 deletions Práticas/P02/ex2b.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
N = 1e7;
n = 11;
k = 10;
p = 0.5;

% Probabilidade de Simulação
% sabendo que nos primeiros 10 lancamentos saiu cara qual a prob de sair
% cara no 11º
lancamentos = rand(n, N) < p;
% b -> nos primeiros 10 lancamentos saiu cara
sum_b = sum(sum(lancamentos(1:10,:))==10);

% ab -> sair cara nos 11 lancamentos
sum_ab = sum(sum(lancamentos) ==11);

probSimFinal = sum_ab/sum_b

24 changes: 24 additions & 0 deletions Práticas/P02/ex3.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
N = 5e7;
pC = 0.0001;
pMC = 0.9;
pMNC = 0.1;

% simulação da populacao portuguesa feminina
casosCancro = rand(1, N) < pC;
cancroPos = sum(casosCancro == 1);
pA = sum(cancroPos)/N;

% simulação da sitacao mamograma postivo se cancro
mamPosCanc = rand(1, N) < pMC;
sucessos1 = sum(mamPosCanc == 1);
pB_A = sum(sucessos1)/N;

% simulação da sitacao mamograma postivo se NAO cancro
mamPosNaoCanc = rand(1, N) < pMNC;
sucessos2 = sum(mamPosNaoCanc == 1);
pB_nA = sum(sucessos2)/N;

pAB = pB_A * pA;
pB = pB_A*pA + pB_nA*(1-pA);
pA_B = pAB/pB

Loading

0 comments on commit 72cc0da

Please sign in to comment.