【发布时间】:2020-08-27 22:55:47
【问题描述】:
如何将数组传递给 scipy.integate.solve_ivp 函数?现在是u=1.0,我想要的是u=np.random.uniform(-1, 1, 1000)。
scipy版本是1.4.1
代码是:
import numpy as np
from scipy.integrate import solve_ivp
def func(t, x, u):
dydt = (-x + u) / 5
return dydt
y0 = 0
t_span = [0, 10]
t_eval = np.linspace(0, 10, 1000)
u = 1.0
sol = solve_ivp(func, t_span=t, y0=y0, t_eval=t_eval, args=(u, ))
任何帮助将不胜感激!
不要忘记arg=(u, ) 中的逗号,否则会出现错误odepack.error: Extra arguments must be in a tuple。感谢@Bear Brown 解决了这个问题。
【问题讨论】:
-
不是。 @BearBrown
-
您需要在代码中添加逗号
(u,),因为(u)不是元组 -
哦,太好了,它有效。非常感谢。还有一个问题:我想传一个数组,比如
u = np.linspace(0, 10, 1000),怎么办? @BearBrown -
是的,错误是
RuntimeError: The size of the array returned by func (1000) does not match the size of y0 (1).