Algorithme de la Méthode de Simpson pour le calcul d'intégral en langage C :
On souhaite calculer l’intégrale de la fonction suivante :
On souhaite calculer l’intégrale de la fonction suivante :
f(x) = exp(-x)
Dans l’intervalle : [0, 1]// METHODE D'INTEGRATION : SIMPSON #include <stdio.h> #include <stdlib.h> #include <math.h> #define a 0.0 // Borne inférieure d'intégration #define b 1.0 // Borne supérieure d'intégration #define N 100 // Nombre de points double f(double x) { return exp(-x); // fonction à intégrer } void main() { double *x; x = (double *)calloc(N, sizeof(double)); // Allocation dynamique des abscisses xi double Somme_Paire, Somme_Impaire, I; double h = (b-a)/N; // Pas d'intégration int i; Somme_Impaire = 0.0; for(int j=0; j<= (int)(N/2 - 1); j++) // remarquons que l'indice s'arrête à N-1 pour i impaire { i = 2*j + 1; // astuce pour utiliser i impaire x[i] = a + i*h; // calcul des abscisses xi Somme_Impaire += f(x[i]); // calcul de la somme des termes à indice impaire } i = 0; // Ici on initialise i pour calculer les termes paires Somme_Paire = 0.0; for(int k=1; k<= (int)((N-2)/2); k++) // remarquons que l'indice s'arrête à N-2 pour i paire { i = 2*k; // astuce pour utiliser i paire x[i] = a + i*h; // calcul des abscisses xi Somme_Paire += f(x[i]); // calcul de la somme des termes à indice ipaire } I = (h/3)*( f(a) + f(b) + 4*Somme_Impaire + 2*Somme_Paire ); // valeur finale de l'intégrale printf("\n L'integrale I = %18.16g \n\n",I); // Affichage du résultat delete [] x; // Libération de la mémoire } |
Aucun commentaire:
Enregistrer un commentaire