resolve_ivp错误:“缺少2个必需的位置参数:”

时间:2020-01-31 11:17:19

标签: python solver

我用于resolve_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'

即使我已经按照solve_ivp的scipy文档定义(https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html)的方式定义了函数ydot,我仍无法调试代码

文档末尾甚至有一个示例,演示了以与我相同的方式实现的参数传递。

我认为问题出在我上面两个很长的代码中提供的两个代码中。

2 个答案:

答案 0 :(得分:2)

我能够使用scipy 1.1.0复制错误。 通过cmd(pip install scipy==1.4.1)将scipy升级到最新版本为我解决了该错误消息。

然后最小的可复制示例给出了另一个错误:

TypeError:*之后的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)

答案 1 :(得分:1)

我最近也遇到过同样的问题。 但是伟大的Warren Weckesser helped让我出去。 更改

args =(10)

args =(10,)

,您的MWE将正常运行。 发生这种情况是因为具有单个元素的元组。 作为参考,请参见python.org上的Python教程pdf(第3.5.1版)的pg 30