Bonjour,
dans un TP, je dois retrouver l'ordre de la méthode de simpson composite. Je rappelle la formule de Simpson composite :
Voici le programme python implémentant cette méthode :
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.exp(x)
def paire(f, n, a, b):
# Somme des paires pour l'integrale avec Simpson
h = (b-a)/n
x = np.arange(a, b, h)
I_paire = 0
for i in range(1, int(n/2)):
I_paire += f(x[2*i])
return I_paire
def impaire(f, n, a, b):
# Somme des impaires pour l'integrale avec Simpson
h = (b-a)/n
x = np.arange(a, b, h)
I_impaire = 0
for i in range(1, int(n/2 + 1)):
I_impaire += f(x[2*i-1])
return I_impaire
def simpson(f, n, a, b):
# Méthode de simpson
h = (b-a)/n
x = np.arange(a, b, h)
return (h/3)*(f(a) + f(b) + 2*paire(f, n, a, b) + 4*impaire(f, n, a, b))
# Calcul de l'erreur pour la methode Simpson
h = []
err = []
a = 1
b = 2
I_exact = np.exp(2) - np.exp(1)
for i in range(10, 100000, 1000):
x = np.linspace(a, b, i)
h.append((b-a)/i)
err.append(np.abs(I_exact - simpson(f, i, a, b)))
plt.loglog(h, err)
plt.grid()
plt.show()
Bonsoir,
il faut être conscient du fait que l'addition des « réels informatiques » n'est pas l'addition dans R.
Chaque addition provoque une erreur d'arrondi, quand il y a beaucoup ces erreurs deviennent plus importantes que l'erreur due à la méthode de calcul.
À mon avis, qui est peut-être faux, c'est ce que l'on voit sur ton graphique.
Il faudrait donc prendre que la partie linéaire et verifier que le coefficient directeur soit de 4 (c'est l'ordre theorique de la méthode de Simpson composite) ?
C'est ce que je crois, mais je ne suis pas du tout spécialiste de ce genre de choses.
Il faudrait évaluer l'espérance de l'erreur due à n additions et ne pas prendre de valeurs du nombre de points telles que l'erreur due aux additions soit du même ordre de grandeur que l'erreur ( connue ) due à la méthode.
En gros il ne faut pas prendre trop de points d'interpolations.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :