我用于solve_ivp的函数定义为:
def ydot(t,y,kappa4,kappa16):
使用solve_ivp时如下:
sol=solve_ivp(ydot,[0,10],initial_condition(),args=(50,100))
我收到以下错误:
ydot() missing 2 required positional arguments: 'kappa4' and 'kappa16'
即使我已经定义了该函数,我也无法调试代码ydot
solve_ivp 的 scipy 文档定义的方式(https://docs.scipy.org/doc/scipy/reference/ generated/scipy.integrate.solve_ivp.html https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html)
文档末尾甚至还有一个示例,演示了以与我相同的方式实现的参数传递。
我相信问题出在我从一个很长的代码中提供的上述两段代码中的某个地方。
我能够使用 scipy 1.1.0 复制该错误。
通过cmd将scipy升级到最新版本(pip install scipy==1.4.1
)为我解决了该错误消息。
然后最小的可重现示例给出了另一个错误:
类型错误: * 之后的 ydot() 参数必须是可迭代的,而不是 int
Tejas给出的解决方案解决了这个问题。因此,完整的工作最小脚本是:
from scipy.integrate import solve_ivp
def ydot(t,y,a): return -a*y
sol=solve_ivp(ydot,[0,10],[5],args=(8,))
print(sol.y)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)