如何插入输入以在python中查找积分值?

时间:2010-11-22 15:59:33

标签: python input integral

我正在做一个物理课程,目前我仍然坚持这一部分。 我试过但我无法做对。 真的需要帮助。

关于梯形规则, 问题:方程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 个答案:

答案 0 :(得分:2)

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

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

只要您使用trap0a的浮点参数调用b,其余代码对我来说就会很好。

>>> 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

答案 1 :(得分:0)

from math import *

执行导入时被视为不正确。这只是一个十分钟的奇迹,这种类型的导入是不受欢迎的,因为它们会混淆命名空间并覆盖局部变量,如果它们也在模块或源中分配。

考虑到你使用**而不是pow()意味着你实际上并不需要数学导入。但如果您使用的是python 2.x,则可能需要使用。

from __future__ import division

Gareth有正确的答案,虽然我只是抱怨风格问题