参数未传递给 Scipy solve_ivp
Args not being passed to Scipy solve_ivp
我已经从文档 here 中复制并粘贴了 Scipy 的 solve_ivp
函数的 Lotka-Volterra 示例,但我收到错误
lotkavolterra() missing 4 required positional arguments: 'a', 'b', 'c', and 'd'
在我看来,参数并未传递给 lotkavolterra
,尽管它是“带有附加参数的系统示例”。代码如下。
from scipy.integrate import solve_ivp
def lotkavolterra(t, z, a, b, c, d):
x, y = z
return [a*x - b*x*y, -c*y + d*x*y]
sol = solve_ivp(lotkavolterra, [0, 15], [10, 5], args=(1.5, 1, 3, 1), dense_output=True)
print(sol)
如何解决我的问题?
如果您的 solve_ivp 版本不提供 args
参数,您可以使用 lambda 函数:
sol = solve_ivp(lambda t, z: lotkavolterra(t, z, 1.5, 1, 3, 1), [0, 15], [10, 5], dense_output=True)
但是,强烈建议更新您的 scipy 版本,就像 Warren 已经在评论中暗示的那样。
我已经从文档 here 中复制并粘贴了 Scipy 的 solve_ivp
函数的 Lotka-Volterra 示例,但我收到错误
lotkavolterra() missing 4 required positional arguments: 'a', 'b', 'c', and 'd'
在我看来,参数并未传递给 lotkavolterra
,尽管它是“带有附加参数的系统示例”。代码如下。
from scipy.integrate import solve_ivp
def lotkavolterra(t, z, a, b, c, d):
x, y = z
return [a*x - b*x*y, -c*y + d*x*y]
sol = solve_ivp(lotkavolterra, [0, 15], [10, 5], args=(1.5, 1, 3, 1), dense_output=True)
print(sol)
如何解决我的问题?
如果您的 solve_ivp 版本不提供 args
参数,您可以使用 lambda 函数:
sol = solve_ivp(lambda t, z: lotkavolterra(t, z, 1.5, 1, 3, 1), [0, 15], [10, 5], dense_output=True)
但是,强烈建议更新您的 scipy 版本,就像 Warren 已经在评论中暗示的那样。