Affichage des approximations
Dans cette étape, vous améliorerez le programme pour afficher les résultats d'approximation détaillés et les comparer à la dérivée réelle.
Ouvrez le fichier précédent et modifiez le code pour inclure une sortie complète :
cd ~/project
nano finite_difference.c
Mettez à jour le code pour afficher les approximations détaillées :
#include <stdio.h>
#include <math.h>
// Définition de la fonction f(x)
double f(double x) {
return x * x; // Fonction d'exemple : f(x) = x^2
}
// Fonction de la dérivée réelle
double actual_derivative(double x) {
return 2 * x; // Dérivée de x^2 est 2x
}
int main() {
// Définition de plusieurs tailles d'étape pour la comparaison
double step_sizes[] = {0.1, 0.01, 0.001, 0.0001};
int num_steps = sizeof(step_sizes) / sizeof(step_sizes[0]);
// Point d'évaluation de la dérivée
double x = 2.0;
// Valeur de la dérivée réelle
double true_derivative = actual_derivative(x);
printf("Analyse de l'approximation de la dérivée\n");
printf("----------------------------------------\n");
printf("Fonction : f(x) = x^2\n");
printf("Point d'évaluation : x = %f\n", x);
printf("Dérivée réelle : %f\n\n", true_derivative);
printf("Taille d'étape | Diff. avant | Diff. arrière | Erreur avant | Erreur arrière\n");
printf("-----------------------------------------------------------------------\n");
// Calcul et affichage des approximations pour différentes tailles d'étape
for (int i = 0; i < num_steps; i++) {
double h = step_sizes[i];
// Approximation par différence avant
double forward_diff = (f(x + h) - f(x)) / h;
// Approximation par différence arrière
double backward_diff = (f(x) - f(x - h)) / h;
// Calcul des erreurs absolues
double forward_error = fabs(forward_diff - true_derivative);
double backward_error = fabs(backward_diff - true_derivative);
printf("%9f | %11f | %12f | %11f | %12f\n",
h, forward_diff, backward_diff, forward_error, backward_error);
}
return 0;
}
Compilez et exécutez le programme :
gcc -o finite_difference finite_difference.c -lm
./finite_difference
Exemple de sortie :
Analyse de l'approximation de la dérivée
----------------------------------------
Fonction : f(x) = x^2
Point d'évaluation : x = 2.000000
Dérivée réelle : 4.000000
Taille d'étape | Diff. avant | Diff. arrière | Erreur avant | Erreur arrière
-----------------------------------------------------------------------
0.100000 | 4.100000 | 3.900000 | 0.100000 | 0.100000
0.010000 | 4.010000 | 3.990000 | 0.010000 | 0.010000
0.001000 | 4.001000 | 3.999000 | 0.001000 | 0.001000
0.000100 | 4.000100 | 3.999900 | 0.000100 | 0.000100
Observations clés :
- À mesure que la taille d'étape
h
diminue, l'approximation devient plus précise.
- Les différences avant et arrière convergent vers la dérivée réelle.
- L'erreur diminue avec des tailles d'étape plus petites.