Introdução
Neste laboratório, você aprenderá a calcular a Função de Distribuição Acumulativa (CDF) em C. O laboratório cobre dois passos principais: ler os parâmetros de distribuição e o valor de x, e então calcular a CDF somando as probabilidades de menos infinito até o valor de x dado, utilizando a distribuição normal padrão. O laboratório fornece a implementação completa do código e guia você através do processo passo a passo, garantindo que você tenha uma compreensão sólida do cálculo da CDF em C.
Ler Parâmetros de Distribuição e x
Neste passo, você aprenderá a ler os parâmetros de distribuição e o valor de x para calcular a Função de Distribuição Acumulativa (CDF) em C.
Primeiro, vamos criar um novo arquivo C para implementar o cálculo da CDF:
cd ~/project
nano cdf_calculator.c
Agora, adicione o seguinte código para ler os parâmetros de distribuição:
#include <stdio.h>
#include <stdlib.h>
int main() {
// Parâmetros de distribuição
double media, desvio_padrao;
double valor_x;
// Solicitar os parâmetros de distribuição ao usuário
printf("Digite a média (μ): ");
scanf("%lf", &media);
printf("Digite o desvio padrão (σ): ");
scanf("%lf", &desvio_padrao);
// Solicitar o valor de x ao usuário
printf("Digite o valor de x para calcular a CDF: ");
scanf("%lf", &valor_x);
// Imprimir os parâmetros de entrada para verificação
printf("\nParâmetros de Entrada:\n");
printf("Média (μ): %.2f\n", media);
printf("Desvio Padrão (σ): %.2f\n", desvio_padrao);
printf("Valor de X: %.2f\n", valor_x);
return 0;
}
Compilar e executar o programa:
gcc cdf_calculator.c -o cdf_calculator
./cdf_calculator
Exemplo de saída:
Digite a média (μ): 5.0
Digite o desvio padrão (σ): 2.0
Digite o valor de x para calcular a CDF: 3.5
Parâmetros de Entrada:
Média (μ): 5.00
Desvio Padrão (σ): 2.00
Valor de X: 3.50
Somar Probabilidades de -∞ a x
Neste passo, você aprenderá a calcular a Função de Distribuição Acumulativa (CDF) somando as probabilidades de menos infinito até um determinado valor de x utilizando a distribuição normal padrão.
Vamos modificar o programa C anterior para implementar o cálculo da CDF:
cd ~/project
nano cdf_calculator.c
Substitua o código anterior pela seguinte implementação:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Função de aproximação da CDF Normal Padrão (Abramowitz e Stegun)
double standard_normal_cdf(double x) {
const double a1 = 0.254829592;
const double a2 = -0.284496736;
const double a3 = 1.421413741;
const double a4 = -1.453152027;
const double a5 = 1.061405429;
const double p = 0.3275911;
// Lidar com valores negativos
int sinal = (x < 0) ? -1 : 1;
x = fabs(x);
// Fórmula de aproximação
double t = 1.0 / (1.0 + p * x);
double y = 1.0 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t * exp(-x * x);
return 0.5 * (1.0 + sinal * y);
}
// Calcular a CDF para a distribuição normal
double normal_cdf(double x, double media, double desvio_padrao) {
// Cálculo do escore z
double escore_z = (x - media) / desvio_padrao;
return standard_normal_cdf(escore_z);
}
int main() {
// Parâmetros de distribuição
double media, desvio_padrao;
double valor_x;
// Solicitar os parâmetros de distribuição ao usuário
printf("Digite a média (μ): ");
scanf("%lf", &media);
printf("Digite o desvio padrão (σ): ");
scanf("%lf", &desvio_padrao);
// Solicitar o valor de x ao usuário
printf("Digite o valor de x para calcular a CDF: ");
scanf("%lf", &valor_x);
// Calcular e imprimir a CDF
double valor_cdf = normal_cdf(valor_x, media, desvio_padrao);
printf("\nResultados do Cálculo da CDF:\n");
printf("Média (μ): %.2f\n", media);
printf("Desvio Padrão (σ): %.2f\n", desvio_padrao);
printf("Valor de X: %.2f\n", valor_x);
printf("CDF P(X ≤ x): %.4f\n", valor_cdf);
return 0;
}
Compilar o programa com a biblioteca matemática:
gcc cdf_calculator.c -o cdf_calculator -lm
Executar o programa e testar com entradas de exemplo:
./cdf_calculator
Exemplo de saída:
Digite a média (μ): 5.0
Digite o desvio padrão (σ): 2.0
Digite o valor de x para calcular a CDF: 3.5
Resultados do Cálculo da CDF:
Média (μ): 5.00
Desvio Padrão (σ): 2.00
Valor de X: 3.50
CDF P(X ≤ x): 0.2525
Imprimir o Valor da CDF
Neste passo, você aprenderá a aprimorar o programa de cálculo da CDF adicionando saídas mais detalhadas e interpretação dos resultados da Função de Distribuição Acumulativa (CDF).
Vamos modificar o programa C anterior para melhorar a saída e adicionar alguns comentários interpretativos:
cd ~/project
nano cdf_calculator.c
Atualize a função main() para incluir uma saída mais detalhada:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// As funções anteriores standard_normal_cdf e normal_cdf permanecem as mesmas
int main() {
// Parâmetros de distribuição
double media, desvio_padrao;
double valor_x;
// Solicitar parâmetros de distribuição ao usuário
printf("Calculadora de Função de Distribuição Acumulativa (CDF)\n");
printf("------------------------------------------------\n");
printf("Digite a média (μ): ");
scanf("%lf", &media);
printf("Digite o desvio padrão (σ): ");
scanf("%lf", &desvio_padrao);
// Solicitar o valor de x ao usuário
printf("Digite o valor de x para calcular a CDF: ");
scanf("%lf", &valor_x);
// Calcular e imprimir a CDF
double valor_cdf = normal_cdf(valor_x, media, desvio_padrao);
// Saída detalhada com interpretação
printf("\n--- Resultados do Cálculo da CDF ---\n");
printf("Média (μ): %.2f\n", media);
printf("Desvio Padrão (σ): %.2f\n", desvio_padrao);
printf("Valor de X: %.2f\n", valor_x);
printf("CDF P(X ≤ x): %.4f (%.2f%%)\n",
valor_cdf, valor_cdf * 100);
// Interpretar o valor da CDF
printf("\nInterpretação:\n");
if (valor_cdf < 0.5) {
printf("O valor está abaixo da distribuição média.\n");
} else if (valor_cdf > 0.5) {
printf("O valor está acima da distribuição média.\n");
} else {
printf("O valor está na média da distribuição.\n");
}
// Explicação da probabilidade
printf("Probabilidade de observar um valor menor ou igual a %.2f: %.2f%%\n",
valor_x, valor_cdf * 100);
return 0;
}
Compilar o programa:
gcc cdf_calculator.c -o cdf_calculator -lm
Executar o programa com entradas de exemplo:
./cdf_calculator
Exemplo de saída:
Calculadora de Função de Distribuição Acumulativa (CDF)
------------------------------------------------
Digite a média (μ): 5.0
Digite o desvio padrão (σ): 2.0
Digite o valor de x para calcular a CDF: 3.5
--- Resultados do Cálculo da CDF ---
Média (μ): 5.00
Desvio Padrão (σ): 2.00
Valor de X: 3.50
CDF P(X ≤ x): 0.2525 (25.25%)
Interpretação:
O valor está abaixo da distribuição média.
Probabilidade de observar um valor menor ou igual a 3.50: 25.25%
Resumo
Neste laboratório, você aprendeu como ler os parâmetros de distribuição (média e desvio padrão) e um valor x para calcular a Função de Distribuição Acumulativa (CDF) em C. Você então implementou o cálculo da CDF somando as probabilidades de menos infinito até o valor x fornecido, utilizando a função de aproximação da distribuição normal padrão. Finalmente, você imprimiu o valor da CDF para os parâmetros de entrada fornecidos.
Os pontos-chave aprendidos neste laboratório são os passos necessários para calcular a CDF, incluindo a leitura dos dados de entrada necessários e a aplicação da fórmula de aproximação da CDF normal padrão para calcular o valor desejado da CDF.



