2010-11-22 52 views
0

我正在做一个物理课程,而我目前被困在这一部分。 我试过了,但我无法弄清楚。 真的需要帮助。我如何插入输入来查找python中积分的值?

及其有关梯形规则, 问题:什么是积分的公式F(X)= X4 *(1-x)的值44 /(1 + X^2)

这是代码我试过了,但我无法得到答案

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 

回答

2

您对f的定义是虚假的。这是所有你需要写:

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

你的代码的其余部分对我来说很好,只要你拨打trap0与浮点参数为ab

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

如果你想与整数ab然后事情都可能出错称呼它,因为f最终做整数除法,而不是浮点师:

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

最简单的修复程序是强迫分工中的浮点,也许是这样的:

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

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

烨,在蟒蛇做了。但是我也没办法弄清楚 – deanie 2010-11-22 16:25:08

0
from math import * 

进行导入时被认为不正确。当然,这只是一个十分钟的奇迹,这种导入方式令人不悦,因为它们会混乱命名空间并覆盖局部变量,如果它们也被分配到模块或源代码中的话。

考虑到你使用** over pow()意味着你实际上并不需要从数学导入开始。但是,如果你使用的是Python 2.x,你可能需要使用它。

from __future__ import division 

加雷斯具有功能正确的答案,虽然我只是抱怨作风问题

相关问题