为了账号安全,请及时绑定邮箱和手机立即绑定

使用scipy积分方程

使用scipy积分方程

芜湖不芜 2021-05-30 10:50:51
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)


查看完整回答
反对 回复 2021-06-01
?
慕的地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


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 299 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信