Integration numerique par la methode de simpson (c)

Contenu du snippet

METHODE DE SIMPSON:
C'est une méthode de Newton-Cotes: on subdivise l'intervalle d'intégration [a,b] en n sous-intervalles de longueur égale h.

h=(b-a)/n
xi = a+i*h avec : i=0,...,n

Sur chaque sous-intervalle [xi, xi+2], avec i pair, on remplace f par son polynôme d'interpolation de degré 2 (arc de la parabole) passant par les points (xi, f(xi)), (xi+1, f(xi+1)) et (xi+2, f(xi+2)). Conséquence n doit être pair.
Notation: I(a,b)=>f(x): integrale de a à b de f(x).
S(i=1,n): Somme de i=1 à n.

FORMULE DE BASE:
I(xi, xi+2)=>f(x) = h/3*[f(xi) + 4*f(xi+1) + f(xi+2) ]; i= 0,..., n-2, i pair.

FORMULE COMPOSITE:
I(a,b)=>f(x) = h/3*[f(a) + f(b) + 2*S(i=1, n/2-1)f(a+2*i*h) + 4*S(i=1,n/2)f(a + (2*i-1)*h)]

Source / Exemple :


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

double F(double x)
{
  return exp(-x*x/2.0);
}

double simpson(int N, double A, double B)
{
  double X, h, Iapp0, Iapp1, Iapp2, Iapp;
  int NN, i;

  // Etape 1
  h = (B - A) / N;

  // Etape 2
  Iapp0 = F(A) + F(B);
  Iapp1 = 0.0;
  Iapp2 = 0.0;

  // Etape 3
  NN = N -1;
  for (i=1; i<=NN; i++)
    {
      // Etape 4
      X = A + i*h;
      // Etape 5
      if ((i%2) == 0)
        Iapp2 = Iapp2 + F(X);
      else
        Iapp1 = Iapp1 + F(X);
    }

  // Etape 6
  Iapp = (Iapp0 + 2.0 * Iapp2 + 4.0 * Iapp1) * h / 3.0;

  // Etape 7
  return (Iapp);

}
int main(int argc, char *argv[])
{
  int i,n;
  double a,b,spmthd;

  a=1.0; /* Borne inferieure */
  b=2.0; /* Borne superieure */
  n=10; /* Nombre d'iteration  */

  simpson(n,a,b);
  spmthd=simpson(n,a,b);  /* on stock dans une variable tampon */
  printf("\n %.16e",spmthd); /* on affiche le résultat */
  return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.