Python中的数学函数不能正常工作?

时间:2014-12-09 18:45:51

标签: python macos math integral

def trapezoidal(f, a, b, n):
    h = float(b - a) / n
    s = 0.0
    s = s + f(a)
    i=1
         while i<=n-1:
         s = s + f(a + i*h)
    i= i +1
    s = s + f(b)
    s = s*h
return s
def f(x):
    x = float(x)
    return (-1/6)*(x-1)*(x-2)*(x+2)*(x-4)
lel = trapezoidal(f, -2, 4, 10)
print ("%.3f" % lel)
ok = f(-0.8)
print ok

我正在尝试构建一个使用梯形规则计算积分的程序。当我在纸上做它它工作正常但我的f功能不能正常工作。例如,f(-0.8)应该等于4.8384但是当我运行它时显示29.0304。请帮帮忙?

2 个答案:

答案 0 :(得分:3)

如果您使用的是Python 2.x

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

表达式中的第一项是进行整数除法。该除法的结果将在乘法过程中提升为float,但到那时为时已晚。

>>> (-1/6)
-1

您需要将所有内容保存在floats

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

答案 1 :(得分:1)

尝试

return (-1.0/6)*(x-1)*(x-2)*(x+2)*(x-4)