uaveiro-leci/3ano/1semestre/mpei/aula03/ex3.m

108 lines
2.9 KiB
Mathematica
Raw Normal View History

% 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);