Résolution intégrale - Méthode Trapèzes

Résolu
Bonjour tout le monde !

J'ai un programme à faire de résolution intégrale par la méthode des trapèzes.

J'ai fait un programme, je ne comprend pas pourquoi il ne fonctionne pas

def moyenne2(f,a,b,h):
    aire=0
    x=0
    for i in range(a,b):
        aire+=h*(f(x)+(f(x+h)-f(x))/2) ##méthode des trapèzes : (xk+1-xk)*f(xk) (aire du rectangle) + {(xk+1 - xk)*[f(xk+1)-f(xk)]}/2 (aire du triangle)
        x+=h
    return (1/b)*aire


J'ai définit a côté une fonction cosinus ou sinus pour vérifier
from math import cos,sin
def f(x):
    return cos(x)


J'ai lancé le programme pour moyenne2(f,0,400,0.2). Pour cosinus ca me renvoie bien quelque chose proche de 0. Mais pour f(x)=cos(x)+2, ca ne me renvoie pas 2 ^^

Merci de l'aide apportée !

N'essaie pas, fais le ou ne le fais pas.

2 réponses

  1. Contributeur
    Salut
    je n'y connais rien en math mais si tu utilises Python version 2.x alors il faut lire la chapitre sur les types
    Python 2.x effectue une division euclidienne.
    1. Salut !

      Tu penses que l'erreur vient d'une des divisions ? Dans ce cas ca afficherait une erreur plutôt qu'un résultat faux non ?
      1. Contributeur
        lis ;)
      2. Oui, j'utilise python 3.3.2 ^^ désolé j'ai pas précisé