Affichage de l'intégrale approximative
Dans cette étape, nous allons améliorer notre programme d'approximation d'intégrale en ajoutant des informations de sortie plus détaillées et en comparant le résultat numérique à la valeur intégrale exacte.
Ouvrez le fichier source précédent et mettez à jour le code :
cd ~/project
nano integral_approximation.c
Modifiez le code pour inclure une sortie plus complète :
#include <stdio.h>
#include <math.h>
// Définition de la fonction à intégrer f(x)
double f(double x) {
return x * x;
}
// Calcul de l'intégrale exacte de x^2 de 0 à 1
double exactIntegral() {
return 1.0 / 3.0;
}
// Implémentation de la méthode du trapèze
double trapezoidalRule(double a, double b, int n) {
double h = (b - a) / n; // Largeur de chaque trapèze
double sum = 0.5 * (f(a) + f(b)); // Premiers et derniers points
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f(x);
}
return sum * h;
}
int main() {
// Définition de l'intervalle [a, b]
double a = 0.0; // Borne inférieure
double b = 1.0; // Borne supérieure
int n = 100; // Nombre de trapèzes
double approximateIntegral = trapezoidalRule(a, b, n);
double exact = exactIntegral();
double error = fabs(approximateIntegral - exact);
double percentError = (error / exact) * 100.0;
// Sortie formatée avec des informations détaillées
printf("Résultats de l'approximation de l'intégrale\n");
printf("------------------------------\n");
printf("Fonction : f(x) = x^2\n");
printf("Intervalle : [%.2f, %.2f]\n", a, b);
printf("Nombre de trapèzes : %d\n", n);
printf("\nRésultats numériques :\n");
printf("Intégrale approximative : %.6f\n", approximateIntegral);
printf("Intégrale exacte : %.6f\n", exact);
printf("\nAnalyse d'erreur :\n");
printf("Erreur absolue : %.6f\n", error);
printf("Erreur relative : %.4f%%\n", percentError);
return 0;
}
Compilez et exécutez le code mis à jour :
gcc -o integral_approximation integral_approximation.c -lm
./integral_approximation
Sortie exemple :
Résultats de l'approximation de l'intégrale
------------------------------
Fonction : f(x) = x^2
Intervalle : [0.00, 1.00]
Nombre de trapèzes : 100
Résultats numériques :
Intégrale approximative : 0.333333
Intégrale exacte : 0.333333
Analyse d'erreur :
Erreur absolue : 0.000000
Erreur relative : 0.0000%
Améliorations clés de cette version :
- Ajout de la fonction
exactIntegral()
pour comparer le résultat numérique.
- Calcul des erreurs absolue et relative.
- Sortie plus détaillée et formatée.