我用于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
,我仍无法调试代码
文档末尾甚至有一个示例,演示了以与我相同的方式实现的参数传递。
我认为问题出在我上面两个很长的代码中提供的两个代码中。
答案 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