【发布时间】:2020-07-17 16:38:49
【问题描述】:
我正在尝试使用 SciPy 模拟一些动态模型。
我有模型定义:
def model(y, t, control_signal):
dy/dt = some_function_of_time_and_y
return dy
我定义了要模拟模型的时间戳列表:t_list=np.linspace(0, 5, 100)。我想使用为每个时间戳定义的 control_signal 值来模拟模型。我试图通过使用来实现:
controls = [list_of_values]
scipy.integrate.odeint(model, 0, t_list, args=(controls))
但我得到The size of the array returned by func (5) does not match the size of y0 (1). 好像
我的 controls 被解释为模型的状态,而不是每个时间戳中的输入。如何将controls 作为每个时间戳的值传递?
谢谢!
【问题讨论】:
-
使用
args=(controls,)传递附加参数,以确保它是包含controls值的长度为1 的元组。 (我不确定这是否会完全解决您的所有问题,但肯定是一个需要解决的问题。)
标签: python scipy simulation ode