2010-11-22 5 views
0

Je travaille un cours de physique, et je suis actuellement bloqué à cette section. J'ai essayé mais je n'ai pas réussi. Vraiment besoin d'aide ici.comment puis-je insérer des entrées pour trouver la valeur des intégrales en python?

Son au sujet de la règle de trapèze, Question: Quelle est la valeur de l'intégrale dans l'équation f (x) = x4 * (1-x) 44/(1 + x^2)

tel est le code que j'ai essayé, mais je ne peux pas obtenir la réponse

from math import * 

def f(x): 
    f(x)=x**4*(1-x)**4/(1+x**2) 
    return f(x) 

def trap0 (f,a,b,n): 
    h= float (b-a)/n 
    s =0.5*(f(a)+f(b)) 
    for i in range (1,n): 
     s=s+f(a+i*h) 
    return s*h 

Répondre

2

Votre définition f est faux. Ceci est tout ce que vous devez écrire:

def f(x): 
    return x**4 * (1 - x)**4/(1 + x**2) 

Le reste de votre code semble bon pour moi, tant que vous appelez trap0 avec des arguments à virgule flottante pour a et b.

>>> trap0(math.cos, 0.0, math.pi/2, 100) 
0.99997943823960744 

Si vous voulez appeler avec entier a et b alors les choses peuvent mal tourner, parce que f finit par faire la division entière au lieu de division à virgule flottante:

>>> f(4.0) 
1219.7647058823529 
>>> f(4) 
1219 

Le moyen le plus correctif pour est de contraindre la division à être, peut-être comme à virgule flottante ceci:

def g(x): 
    return x**4 * (1 - x)**4/(1.0 + x**2) 

>>> g(4.0) == g(4) 
True 
+0

yup, fait en python. Huu mais je ne pouvais pas le faire non plus – deanie

0
from math import * 

Est considéré comme incorrect lors des importations. Bien que ce soit juste une merveille de dix minutes, ce style d'importation est désapprouvé car il encombre les espaces de noms et écrase les variables locales si elles sont également assignées dans le module ou dans votre source. Considérant que vous avez utilisé ** over pow(), cela signifie que vous n'avez pas besoin de l'importation mathématique pour commencer. Mais si vous êtes sur python 2.x vous pourriez vouloir utiliser.

from __future__ import division 

Gareth a la bonne réponse pour la fonction si im se plaindre que sur des questions de style

Questions connexes