diff --git a/3ano/1semestre/mpei/aula02/114184_guiao_2.zip b/3ano/1semestre/mpei/aula02/114184_guiao_2.zip deleted file mode 100644 index 8126085..0000000 Binary files a/3ano/1semestre/mpei/aula02/114184_guiao_2.zip and /dev/null differ diff --git a/3ano/1semestre/mpei/aula03/MPEI_2024_2025_Guiao_3_Variáveis_e_Distribuições.pdf b/3ano/1semestre/mpei/aula03/MPEI_2024_2025_Guiao_3_Variáveis_e_Distribuições.pdf new file mode 100644 index 0000000..1718099 Binary files /dev/null and b/3ano/1semestre/mpei/aula03/MPEI_2024_2025_Guiao_3_Variáveis_e_Distribuições.pdf differ diff --git a/3ano/1semestre/mpei/aula03/ex1.m b/3ano/1semestre/mpei/aula03/ex1.m new file mode 100644 index 0000000..dfcbf1b --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex1.m @@ -0,0 +1,23 @@ +% Definindo os valores da variável aleatória +x = 1:6; % Faces do dado +p = ones(1, 6) / 6; % Probabilidade de cada face (distribuição uniforme) + +figure; + +% (a) Gráfico da função massa de probabilidade +subplot(2, 1, 1); % Duas linhas, uma coluna, primeiro gráfico +bar(x, p, 'FaceColor', [0 0.5 0.8]); +xlabel('Valores de X (Faces do dado)'); +ylabel('P(X)'); +xticks(x); % Colocar ticks em cada face do dado +grid on; + +% (b) Gráfico da função de distribuição acumulada +subplot(2, 1, 2); % Duas linhas, uma coluna, segundo gráfico +F = cumsum(p); % Função de distribuição acumulada +stairs(x, F, 'LineWidth', 2, 'Color', [0.8 0 0]); +xlabel('Valores de X (Faces do dado)'); +ylabel('F(X)'); +xticks(x); % Colocar ticks em cada face do dado +grid on; + diff --git a/3ano/1semestre/mpei/aula03/ex2.m b/3ano/1semestre/mpei/aula03/ex2.m new file mode 100644 index 0000000..aa3cbad --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex2.m @@ -0,0 +1,7 @@ +xi = 0 : 4; +p = [0.9 0.09 0.01]; +b = [0 cumsum(p) 1]; + +stairs(xi, b); +xlabel('Valor da Nota (Euros)'); +ylabel('F_X(x)'); \ No newline at end of file diff --git a/3ano/1semestre/mpei/aula03/ex3.m b/3ano/1semestre/mpei/aula03/ex3.m new file mode 100644 index 0000000..c03bc8a --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex3.m @@ -0,0 +1,107 @@ +% Number of simulations +num_simulations = 10000; + +%% a) +fprintf("e)\n"); +% Simulate coin tosses +results = randi([0, 1], num_simulations, 4); % 0 = tails (C), 1 = heads (K) + +% Count the number of heads (K) in each simulation +num_heads = sum(results, 2); + +% Estimate the probability mass function +pX = zeros(1, 5); % For 0 to 4 heads +for x = 0:4 + pX(x + 1) = sum(num_heads == x) / num_simulations; +end + +% Values of x (number of heads) +values_x = 0:4; + +% Plotting the probability mass function +bar(values_x, pX); +xlabel('Number of Heads (K)'); +ylabel('Probability P(X=x)'); +title('Probability Mass Function P(X)'); +xticks(values_x); + +% Display the results +disp('P(X=x) values:'); +for x = 0:4 + fprintf('P(X=%d) = %.4f\n', x, pX(x + 1)); +end + +%% b) +fprintf("\n====================\n\nb)\n"); +% Calculando o valor esperado E(X) +E_X = sum(values_x .* pX); + +% Calculando E(X^2) +E_X2 = sum((values_x.^2) .* pX); + +% Calculando a variância Var(X) +Var_X = E_X2 - E_X^2; + +% Calculando o desvio padrão +std_X = sqrt(Var_X); + +% Exibindo os resultados +fprintf('Valor Esperado E(X) = %.4f\n', E_X); +fprintf('Variância Var(X) = %.4f\n', Var_X); +fprintf('Desvio Padrão σ(X) = %.4f\n', std_X); + +%% d) +fprintf("\n====================\n\nd)\n"); +% Número total de lançamentos +n = 4; +p = 0.5; + +% Calculando os valores teóricos da função massa de probabilidade +pX_teorico = zeros(1, 5); +for k = 0:n + pX_teorico(k + 1) = nchoosek(n, k) * (p^k) * ((1-p)^(n-k)); +end + +% Comparando os valores teóricos com os estimados +fprintf('Comparação entre valores teóricos e estimados:\n'); +fprintf('%-10s %-10s %-10s\n', 'Coroas (K)', 'Teórico', 'Estimado'); +for x = 0:4 + fprintf('%-10d %-10.4f %-10.4f\n', x, pX_teorico(x + 1), pX(x + 1)); +end + +%% e) +fprintf("\n====================\n\ne)\n"); +% Parâmetros da distribuição +n = 4; % número de lançamentos +p = 0.5; % probabilidade de obter uma coroa + +% Cálculo teórico do valor esperado +E_X_teorico = n * p; + +% Cálculo teórico da variância +Var_X_teorico = n * p * (1 - p); + +% Exibindo os resultados +fprintf('Comparação entre valores teóricos e estimados:\n'); +fprintf('%-20s %-10s %-10s\n', 'Descrição', 'Teórico', 'Estimado'); +fprintf('%-20s %-10.4f %-10.4f\n', 'E[X]', E_X_teorico, E_X); +fprintf('%-20s %-10.4f %-10.4f\n', 'Var(X)', Var_X_teorico, Var_X); + +%% f) +fprintf("\n====================\n\nf)\n"); +% Valores teóricos da função massa de probabilidade +pX_teorico = zeros(1, 5); +for k = 0:n + pX_teorico(k + 1) = nchoosek(n, k) * (p^k) * ((1-p)^(n-k)); +end + +% Cálculo das probabilidades +P_ge_2 = 1 - (pX_teorico(1) + pX_teorico(2)); % P(X >= 2) +P_le_1 = pX_teorico(1) + pX_teorico(2); % P(X <= 1) +P_between_1_and_3 = pX_teorico(2) + pX_teorico(3) + pX_teorico(4); % P(1 <= X <= 3) + +% Exibindo os resultados +fprintf('Probabilidades:\n'); +fprintf('P(X >= 2) = %.4f\n', P_ge_2); +fprintf('P(X <= 1) = %.4f\n', P_le_1); +fprintf('P(1 <= X <= 3) = %.4f\n', P_between_1_and_3); diff --git a/3ano/1semestre/mpei/aula03/ex4.m b/3ano/1semestre/mpei/aula03/ex4.m new file mode 100644 index 0000000..162f457 --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex4.m @@ -0,0 +1,48 @@ +% Parâmetros do problema +n = 5; % número de peças +p = 0.3; % probabilidade de uma peça ser defeituosa +num_simulacoes = 10000; % número total de simulações + +% Simulação +defeituosas = binornd(n, p, num_simulacoes, 1); + +% Cálculo da PMF +pmf = histcounts(defeituosas, 0:n+1, 'Normalization', 'probability'); + +% Cálculo da CDF +cdf = cumsum(pmf); + +% Cálculo da probabilidade de no máximo 2 defeituosas +prob_max_2 = sum(pmf(1:3)); % PMF para 0, 1 e 2 peças defeituosas + +% Exibição dos resultados +disp('PMF:'); +disp(pmf); +disp('CDF:'); +disp(cdf); +disp(['Probabilidade de no máximo 2 peças defeituosas: ', num2str(prob_max_2)]); + +% Gráfico na mesma figura, gráficos diferentes +figure; + +% Subplot para a PMF +subplot(2, 1, 1); % 2 linhas, 1 coluna, 1º gráfico +bar(0:n, pmf, 'FaceColor', 'b', 'EdgeColor', 'k'); +title('Função Massa de Probabilidade (PMF)'); +xlabel('Número de Peças Defeituosas'); +ylabel('Probabilidade'); +xlim([-0.5 n + 0.5]); +grid on; + +% Subplot para a CDF +subplot(2, 1, 2); % 2 linhas, 1 coluna, 2º gráfico +cdf_plot = [0; cdf(:)]; % Adiciona um zero no início +x_values = 0:n; % Valores do eixo x +x_values = [0; x_values(:)]; % Adiciona um zero no início + +plot(x_values, cdf_plot, '-o', 'Color', 'r'); +title('Função Distribuição Acumulada (CDF)'); +xlabel('Número de Peças Defeituosas'); +ylabel('Probabilidade Acumulada'); +xlim([-0.5 n + 0.5]); +grid on; diff --git a/3ano/1semestre/mpei/aula03/ex5.m b/3ano/1semestre/mpei/aula03/ex5.m new file mode 100644 index 0000000..73ca53c --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex5.m @@ -0,0 +1,22 @@ +% Valores de p variando de 0.001 a 0.5 +p = logspace(-3, log10(0.5), 100); + +% Probabilidades de despenho +P_2_motores = p.^2; +P_4_motores = 4 * p.^3 .* (1 - p) + p.^4; + +% Plotando os resultados +figure; +plot(p, P_2_motores, 'b-', 'LineWidth', 2); +hold on; +plot(p, P_4_motores, 'r-', 'LineWidth', 2); +hold off; + +% Configurações do gráfico +xlabel('Probabilidade de falha (p)'); +ylabel('Probabilidade de despenho'); +title('Probabilidade de Despenho vs. Probabilidade de Falha'); +legend('2 Motores', '4 Motores'); +grid on; +set(gca, 'XScale', 'log'); +ylim([0 1]); diff --git a/3ano/1semestre/mpei/aula03/ex6.m b/3ano/1semestre/mpei/aula03/ex6.m new file mode 100644 index 0000000..9b33c05 --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex6.m @@ -0,0 +1,21 @@ +% Parâmetros +n = 8000; +p = 1/1000; +k = 7; + +% (a) Cálculo usando a distribuição binomial +% Cálculo da combinação diretamente +comb = 1; +for i = 1:k + comb = comb * (n - (i - 1)) / i; % Cálculo da combinação n!/(k!(n-k)!) +end + +P_binomial = comb * (p^k) * ((1 - p)^(n - k)); + +% (b) Cálculo usando a aproximação de Poisson +lambda = 8; % média de defeituosos em 8000 chips +P_poisson = (lambda^k * exp(-lambda)) / factorial(k); + +% Resultados +fprintf('Probabilidade (Binomial) de 7 defeituosos: %.6f\n', P_binomial); +fprintf('Probabilidade (Poisson) de 7 defeituosos: %.6f\n', P_poisson); diff --git a/3ano/1semestre/mpei/aula03/ex7.m b/3ano/1semestre/mpei/aula03/ex7.m new file mode 100644 index 0000000..9bb73f0 --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex7.m @@ -0,0 +1,14 @@ +% Parâmetros +lambda = 60; % média em 4 segundos + +% (a) Probabilidade de não receber nenhuma mensagem +P_0 = exp(-lambda); % P(X = 0) + +% (b) Probabilidade de receber mais de 40 mensagens +% Usando a soma das probabilidades de 0 a 40 +P_leq_40 = sum(exp(-lambda) * (lambda.^(0:40)) ./ factorial(0:40)); % P(X <= 40) +P_gt_40 = 1 - P_leq_40; % P(X > 40) + +% Resultados +fprintf('Probabilidade de não receber nenhuma mensagem: %.10f\n', P_0); +fprintf('Probabilidade de receber mais de 40 mensagens: %.10f\n', P_gt_40); diff --git a/3ano/1semestre/mpei/aula03/ex8.m b/3ano/1semestre/mpei/aula03/ex8.m new file mode 100644 index 0000000..4a7c55d --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex8.m @@ -0,0 +1,12 @@ +% Parâmetros +lambda = 2; % média de erros em 100 páginas + +% Cálculo das probabilidades +P_0 = exp(-lambda); % P(X = 0) +P_1 = (lambda^1 * exp(-lambda)) / factorial(1); % P(X = 1) + +% Probabilidade de no máximo 1 erro +P_leq_1 = P_0 + P_1; + +% Resultados +fprintf('Probabilidade de no máximo 1 erro em 100 páginas: %.6f\n', P_leq_1); diff --git a/3ano/1semestre/mpei/aula03/ex9.m b/3ano/1semestre/mpei/aula03/ex9.m new file mode 100644 index 0000000..7fe0829 --- /dev/null +++ b/3ano/1semestre/mpei/aula03/ex9.m @@ -0,0 +1,31 @@ +% Parâmetros +mu = 14; % média +sigma = 2; % desvio padrão +n_samples = 100000; % número de amostras + +% Gerar amostras da distribuição normal +X = mu + sigma * randn(n_samples, 1); % amostras + +% (a) Probabilidade de um aluno ter classificação entre 12 e 16 +P_a = mean(X >= 12 & X <= 16); + +% (b) Probabilidade de os alunos terem classificações entre 10 e 18 +P_b = mean(X >= 10 & X <= 18); + +% (c) Probabilidade de um aluno passar (classificação maior ou igual a 10) +P_c = mean(X >= 10); + +% Exibir resultados +fprintf('Estimativa da probabilidade (a) entre 12 e 16: %.4f\n', P_a); +fprintf('Estimativa da probabilidade (b) entre 10 e 18: %.4f\n', P_b); +fprintf('Estimativa da probabilidade (c) para passar (>= 10): %.4f\n', P_c); + +% Verificação usando normcdf() +P_a_exact = normcdf(16, mu, sigma) - normcdf(12, mu, sigma); +P_b_exact = normcdf(18, mu, sigma) - normcdf(10, mu, sigma); +P_c_exact = 1 - normcdf(10, mu, sigma); % P(X >= 10) + +% Exibir resultados da verificação +fprintf('Probabilidade exata (a) entre 12 e 16: %.4f\n', P_a_exact); +fprintf('Probabilidade exata (b) entre 10 e 18: %.4f\n', P_b_exact); +fprintf('Probabilidade exata (c) para passar (>= 10): %.4f\n', P_c_exact);