begin process at 2012 05 27 20:03:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > INTEGRATION NUMERIQUE PAR LA METHODE DE SIMPSON (C)

INTEGRATION NUMERIQUE PAR LA METHODE DE SIMPSON (C)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :24/11/2004 Vu :17 865

Auteur : Jarod1980

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

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

  • #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;
  • }
#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;
}



 Sources du même auteur

Source avec une capture FRACTALE NEWTON-RAPHSON VERSION GLUT
Source avec Zip FAST FOURIER TRANSFORM
TRANSFORMEE DE FOURIER DISCRETE
Source avec une capture FRACTALE TREE (ARBRE) VERSION GLUT
Source avec une capture COURBE DE GUMOWSKI & MIRA VERSION GLUT

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales