Approximation de la Dérivée en un Point en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous apprendrons à approximer la dérivée d'une fonction à un point spécifique en utilisant le langage de programmation C. Nous commencerons par définir une fonction quadratique simple, puis utiliserons une petite valeur h pour calculer la dérivée numérique à l'aide de la méthode des différences. Enfin, nous afficherons la dérivée approximative. Ce laboratoire vise à fournir une compréhension pratique de l'approximation de la dérivée, un concept fondamental en calcul et en géométrie analytique.

Définition de la fonction f(x)

Dans cette étape, nous définirons une fonction mathématique f(x) en langage C qui sera utilisée pour démontrer l'approximation de la dérivée. Nous créerons une fonction quadratique simple pour illustrer le concept.

Tout d'abord, créons un nouveau fichier C dans le répertoire ~/project :

cd ~/project
nano derivative_approximation.c

Maintenant, écrivons le code initial pour notre fonction :

#include <stdio.h>
#include <math.h>

// Définition d'une fonction quadratique f(x) = x^2 + 2x + 1
double f(double x) {
    return x * x + 2 * x + 1;
}

int main() {
    double x = 2.0;  // Point où nous approximerons la dérivée
    printf("Fonction f(x) = x^2 + 2x + 1\n");
    printf("Évaluée en x = %.2f: f(x) = %.2f\n", x, f(x));

    return 0;
}

Compilons et exécutons le code pour vérifier notre fonction :

gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation

Sortie d'exemple :

Fonction f(x) = x^2 + 2x + 1
Évaluée en x = 2.00: f(x) = 9.00
Explication du code
  • Nous définissons une fonction quadratique f(x) = x^2 + 2x + 1
  • La fonction prend une entrée double x et renvoie un résultat double
  • Dans la fonction main(), nous démontrons l'évaluation de la fonction en x = 2
  • Nous utilisons printf() pour afficher les détails de la fonction et sa valeur

Utilisation d'une petite valeur de h et calcul de (f(x+h)-f(x))/h

Dans cette étape, nous modifierons notre code précédent pour approximer la dérivée à l'aide de la méthode des différences. Nous introduirons une petite valeur h pour calculer la dérivée numérique.

Mettre à jour le fichier derivative_approximation.c :

nano ~/project/derivative_approximation.c

Remplacer la fonction main() précédente par le code suivant :

#include <stdio.h>
#include <math.h>

// Fonction quadratique f(x) = x^2 + 2x + 1
double f(double x) {
    return x * x + 2 * x + 1;
}

// Approximation de la dérivée à l'aide de la méthode des différences
double approximate_derivative(double x, double h) {
    return (f(x + h) - f(x)) / h;
}

int main() {
    double x = 2.0;  // Point d'approximation de la dérivée
    double h = 0.0001;  // Petite valeur pour la méthode des différences

    double approx_derivative = approximate_derivative(x, h);

    printf("Fonction : f(x) = x^2 + 2x + 1\n");
    printf("Approximation de la dérivée en x = %.2f\n", x);
    printf("Pas h = %.6f\n", h);
    printf("Dérivée approximative : %.4f\n", approx_derivative);

    return 0;
}

Compiler et exécuter le code mis à jour :

gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation

Sortie d'exemple :

Fonction : f(x) = x^2 + 2x + 1
Approximation de la dérivée en x = 2.00
Pas h = 0.000100
Dérivée approximative : 5.0001
Explication du code
  • Nous introduisons une nouvelle fonction approximate_derivative() qui calcule la dérivée à l'aide de la méthode des différences.
  • h est une petite valeur (0.0001) qui permet d'approcher le taux de variation instantané.
  • La formule (f(x+h) - f(x)) / h approxime la dérivée au point x.
  • Nous affichons la valeur de la dérivée approximative.

Affichage de la dérivée approximative

Dans cette étape, nous allons étendre notre programme d'approximation de la dérivée pour comparer l'approximation numérique avec la dérivée analytique et afficher les résultats de manière plus informative.

Mettre à jour le fichier derivative_approximation.c :

nano ~/project/derivative_approximation.c

Remplacer le code précédent par le suivant :

#include <stdio.h>
#include <math.h>

// Fonction quadratique f(x) = x^2 + 2x + 1
double f(double x) {
    return x * x + 2 * x + 1;
}

// Dérivée analytique de f(x)
double analytical_derivative(double x) {
    return 2 * x + 2;
}

// Approximation de la dérivée à l'aide de la méthode des différences
double approximate_derivative(double x, double h) {
    return (f(x + h) - f(x)) / h;
}

int main() {
    double x = 2.0;  // Point d'approximation de la dérivée
    double h_values[] = {1e-1, 1e-2, 1e-3, 1e-4, 1e-5};
    int num_h = sizeof(h_values) / sizeof(h_values[0]);

    double true_derivative = analytical_derivative(x);

    printf("Fonction : f(x) = x^2 + 2x + 1\n");
    printf("Point de dérivation : x = %.2f\n", x);
    printf("Dérivée analytique : %.4f\n\n", true_derivative);

    printf("Résultats de l'approximation de la dérivée :\n");
    printf("-----------------------------------\n");
    printf("Pas (h)    Dérivée approximative    Erreur\n");
    printf("-----------------------------------\n");

    for (int i = 0; i < num_h; i++) {
        double h = h_values[i];
        double approx_derivative = approximate_derivative(x, h);
        double error = fabs(true_derivative - approx_derivative);

        printf("%.1e             %.4f               %.6f\n",
               h, approx_derivative, error);
    }

    return 0;
}

Compiler et exécuter le code mis à jour :

gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation

Sortie d'exemple :

Fonction : f(x) = x^2 + 2x + 1
Point de dérivation : x = 2.00
Dérivée analytique : 6.0000

Résultats de l'approximation de la dérivée :
-----------------------------------
Pas (h)    Dérivée approximative    Erreur
-----------------------------------
1.0e-01             6.2000               0.200000
1.0e-02             6.0200               0.020000
1.0e-03             6.0020               0.002000
1.0e-04             6.0002               0.000200
1.0e-05             6.0000               0.000020
Explication du code
  • Ajout de la fonction analytical_derivative() pour calculer la dérivée exacte.
  • Création d'un tableau de différentes valeurs de pas h pour démontrer la convergence.
  • Boucle pour afficher les approximations avec différentes valeurs de pas.
  • Calcul et affichage de l'erreur entre les dérivées analytique et numérique.
  • Démonstration de l'augmentation de la précision avec des valeurs de h plus petites.

Résumé

Dans ce laboratoire, nous avons d'abord défini une fonction quadratique f(x) = x^2 + 2x + 1 en langage C. Ensuite, nous avons introduit une petite valeur h pour approximer la dérivée de la fonction à l'aide de la méthode des différences, (f(x+h)-f(x))/h. Enfin, nous avons affiché la valeur de la dérivée approximative.