我辛普森一家规则整合中的错误

时间:2017-12-05 20:46:45

标签: python integration simpsons-rule

我编写了以下代码,使用simpson的规则来集成任意函数,在我的例子中,sin(x):

import math


delta_x=(x2-x1)/N

def simpson(x1,x2,f,N):
    sum=0
    i=1
    for i in range(1,N+1):

        sum+=f(x1+i*delta_x)

    sum1=(3*delta_x)*sum

    return(sum1)

print(simpson(0,math.pi,math.sin(x),100))

但是我在sum + = f(x1 + i * delta_x)行上得到错误'float object not callable'。谁知道什么可能是错的?

谢谢:)

1 个答案:

答案 0 :(得分:1)

函数的f参数应该是一个函数。 math.sin(x)不返回函数,它计算x的罪并返回该数字。 simpson()然后尝试将其称为函数。

您应该传递math.sin,它将在循环中被simpson()调用。

print(simpson(0,math.pi,math.sin,100))