from scipy.integrate import quaddef integrand(a, b): return a * x ** 2 + ba = 2b = 1I = quad(integrand, 0, 1, args=(a,b))I这是我的程序。当我尝试运行它时,它显示错误:integrand () takes 2 positional arguments but 3 were given ....我不明白为什么只有两个变量(即a和)时为什么要问3个参数b。谁能帮我?谁能澄清我的疑惑?
2 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
只需更换
def integrand(a, b):
经过
def integrand(x, a, b):
问题在于,在函数中,您使用了变量,x但没有将变量x作为参数传递给函数。0并1作为积分的极限,但是由于要集成wrt x,因此会出现此错误。
输出
(1.6666666666666667, 1.8503717077085944e-14)
慕的地6264312
TA贡献1817条经验 获得超6个赞
a*x**2+b您正在使用的此函数包含一个变量x,在您的情况下def integrand(a, b): 不包含变量 x,它使用您正在使用的积分的 0 到 1 限制I=quad(integrand,0,1,args=(a,b))。
因此,您要做的就是添加x到您的def中。
def integrand(x, a, b):
return a * x ** 2 + b
a = 2
b = 1
I = quad(integrand,0,1,args=(a,b))
I
添加回答
举报
0/150
提交
取消