Introduction
Dans ce laboratoire, vous apprendrez à calculer la Fonction de Répartition Cumulée (CDF) en C. Le laboratoire couvre deux étapes principales : la lecture des paramètres de la distribution et de la valeur x, puis le calcul de la CDF en sommant les probabilités de moins l'infini à la valeur x donnée en utilisant la distribution normale standard. Le laboratoire fournit la mise en œuvre complète du code et vous guide pas à pas dans le processus, vous assurant une compréhension solide du calcul de la CDF en C.
Lecture des paramètres de la distribution et de la valeur x
Dans cette étape, vous apprendrez à lire les paramètres de la distribution et la valeur x pour calculer la Fonction de Répartition Cumulée (CDF) en C.
Tout d'abord, créons un nouveau fichier C pour implémenter notre calcul de CDF :
cd ~/project
nano cdf_calculator.c
Maintenant, ajoutez le code suivant pour lire les paramètres de la distribution :
#include <stdio.h>
#include <stdlib.h>
int main() {
// Paramètres de la distribution
double moyenne, ecart_type;
double valeur_x;
// Demander les paramètres de la distribution à l'utilisateur
printf("Entrez la moyenne (μ) : ");
scanf("%lf", &moyenne);
printf("Entrez l'écart type (σ) : ");
scanf("%lf", &ecart_type);
// Demander la valeur x à l'utilisateur
printf("Entrez la valeur x pour calculer la CDF : ");
scanf("%lf", &valeur_x);
// Afficher les paramètres d'entrée pour vérification
printf("\nParamètres d'entrée :\n");
printf("Moyenne (μ) : %.2f\n", moyenne);
printf("Écart type (σ) : %.2f\n", ecart_type);
printf("Valeur X : %.2f\n", valeur_x);
return 0;
}
Compilez et exécutez le programme :
gcc cdf_calculator.c -o cdf_calculator
./cdf_calculator
Exemple de sortie :
Entrez la moyenne (μ) : 5.0
Entrez l'écart type (σ) : 2.0
Entrez la valeur x pour calculer la CDF : 3.5
Paramètres d'entrée :
Moyenne (μ) : 5.00
Écart type (σ) : 2.00
Valeur X : 3.50
Somme des probabilités de -∞ à x
Dans cette étape, vous apprendrez à calculer la Fonction de Répartition Cumulée (CDF) en sommant les probabilités de moins l'infini à une valeur x donnée en utilisant la distribution normale standard.
Modifions le programme C précédent pour implémenter le calcul de la CDF :
cd ~/project
nano cdf_calculator.c
Remplacez le code précédent par l'implémentation suivante :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Fonction d'approximation de la CDF normale standard (Abramowitz et 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;
// Gérer les valeurs négatives
int signe = (x < 0) ? -1 : 1;
x = fabs(x);
// Formule d'approximation
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 + signe * y);
}
// Calculer la CDF pour la distribution normale
double normal_cdf(double x, double moyenne, double ecart_type) {
// Calcul du score z
double score_z = (x - moyenne) / ecart_type;
return standard_normal_cdf(score_z);
}
int main() {
// Paramètres de la distribution
double moyenne, ecart_type;
double valeur_x;
// Demander les paramètres de la distribution à l'utilisateur
printf("Entrez la moyenne (μ) : ");
scanf("%lf", &moyenne);
printf("Entrez l'écart type (σ) : ");
scanf("%lf", &ecart_type);
// Demander la valeur x à l'utilisateur
printf("Entrez la valeur x pour calculer la CDF : ");
scanf("%lf", &valeur_x);
// Calculer et afficher la CDF
double valeur_cdf = normal_cdf(valeur_x, moyenne, ecart_type);
printf("\nRésultats du calcul de la CDF :\n");
printf("Moyenne (μ) : %.2f\n", moyenne);
printf("Écart type (σ) : %.2f\n", ecart_type);
printf("Valeur X : %.2f\n", valeur_x);
printf("CDF P(X ≤ x) : %.4f\n", valeur_cdf);
return 0;
}
Compilez le programme avec la bibliothèque mathématique :
gcc cdf_calculator.c -o cdf_calculator -lm
Exécutez le programme et testez avec des entrées d'exemple :
./cdf_calculator
Exemple de sortie :
Entrez la moyenne (μ) : 5.0
Entrez l'écart type (σ) : 2.0
Entrez la valeur x pour calculer la CDF : 3.5
Résultats du calcul de la CDF :
Moyenne (μ) : 5.00
Écart type (σ) : 2.00
Valeur X : 3.50
CDF P(X ≤ x) : 0.2525
Affichage de la valeur CDF
Dans cette étape, vous apprendrez à améliorer le programme de calcul de la Fonction de Répartition Cumulée (CDF) en ajoutant des sorties plus détaillées et une interprétation des résultats.
Modifions le programme C précédent pour améliorer la sortie et ajouter des commentaires interprétatifs :
cd ~/project
nano cdf_calculator.c
Mettre à jour la fonction main() pour inclure une sortie plus détaillée :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Les fonctions précédentes standard_normal_cdf et normal_cdf restent les mêmes
int main() {
// Paramètres de la distribution
double moyenne, ecart_type;
double valeur_x;
// Demander les paramètres de la distribution à l'utilisateur
printf("Calculateur de Fonction de Répartition Cumulée (CDF)\n");
printf("------------------------------------------------\n");
printf("Entrez la moyenne (μ) : ");
scanf("%lf", &moyenne);
printf("Entrez l'écart type (σ) : ");
scanf("%lf", &ecart_type);
// Demander la valeur x à l'utilisateur
printf("Entrez la valeur x pour calculer la CDF : ");
scanf("%lf", &valeur_x);
// Calculer et afficher la CDF
double valeur_cdf = normal_cdf(valeur_x, moyenne, ecart_type);
// Sortie détaillée avec interprétation
printf("\n--- Résultats du calcul de la CDF ---\n");
printf("Moyenne (μ) : %.2f\n", moyenne);
printf("Écart type (σ) : %.2f\n", ecart_type);
printf("Valeur X : %.2f\n", valeur_x);
printf("CDF P(X ≤ x) : %.4f (%.2f%%)\n",
valeur_cdf, valeur_cdf * 100);
// Interpréter la valeur CDF
printf("\nInterprétation :\n");
if (valeur_cdf < 0.5) {
printf("La valeur est en dessous de la distribution moyenne.\n");
} else if (valeur_cdf > 0.5) {
printf("La valeur est au-dessus de la distribution moyenne.\n");
} else {
printf("La valeur est à la moyenne de la distribution.\n");
}
// Explication de la probabilité
printf("Probabilité d'observer une valeur inférieure ou égale à %.2f : %.2f%%\n",
valeur_x, valeur_cdf * 100);
return 0;
}
Compilez le programme :
gcc cdf_calculator.c -o cdf_calculator -lm
Exécutez le programme avec des entrées d'exemple :
./cdf_calculator
Exemple de sortie :
Calculateur de Fonction de Répartition Cumulée (CDF)
------------------------------------------------
Entrez la moyenne (μ) : 5.0
Entrez l'écart type (σ) : 2.0
Entrez la valeur x pour calculer la CDF : 3.5
--- Résultats du calcul de la CDF ---
Moyenne (μ) : 5.00
Écart type (σ) : 2.00
Valeur X : 3.50
CDF P(X ≤ x) : 0.2525 (25.25%)
Interprétation :
La valeur est en dessous de la distribution moyenne.
Probabilité d'observer une valeur inférieure ou égale à 3.50 : 25.25%
Résumé
Dans ce laboratoire, vous avez appris à lire les paramètres de distribution (moyenne et écart type) et une valeur x pour calculer la Fonction de Répartition Cumulée (CDF) en C. Vous avez ensuite implémenté le calcul de la CDF en sommant les probabilités de moins l'infini à la valeur x donnée en utilisant la fonction d'approximation de la distribution normale standard. Enfin, vous avez affiché la valeur de la CDF pour les paramètres d'entrée fournis.
Les points clés de ce laboratoire sont les étapes nécessaires pour calculer la CDF, y compris la lecture des données d'entrée nécessaires et l'application de la formule d'approximation de la CDF normale standard pour calculer la valeur de la CDF souhaitée.



