我编写了以下代码,使用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'。谁知道什么可能是错的?
谢谢:)
答案 0 :(得分:1)
函数的f
参数应该是一个函数。 math.sin(x)
不返回函数,它计算x
的罪并返回该数字。 simpson()
然后尝试将其称为函数。
您应该传递math.sin
,它将在循环中被simpson()
调用。
print(simpson(0,math.pi,math.sin,100))