dimanche 26 mai 2013

Algorithme de la Méthode de Simpson pour le calcul d'intégral en langage C

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 :
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