0

我编写了以下代码来使用辛普森规则来集成任意函数,在我的例子中是 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”。有谁知道可能出了什么问题?

谢谢 :)

4

1 回答 1

1

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

你应该只是通过math.sin,它将simpson()在循环中被调用。

print(simpson(0,math.pi,math.sin,100))
于 2017-12-05T20:49:40.233 回答