【发布时间】:2017-04-17 20:51:34
【问题描述】:
我正在开展一个项目,该项目需要找到具有 6 个状态变量的 ODE 系统的轨迹。问题是某些参数取决于状态空间。系统本身并不重要,但如果您有兴趣,请参阅Adams et al 2004 中的图 2.1。我了解如何按时间改变参数,但我不确定如何使其成为状态空间本身的函数
这是我正在寻找的一个示例(a 是时间的函数)
from scipy import integrate
import numpy as np
t = np.linspace(1, 10, 0.5)
X0 = [0.1]
def func(X,t)
a = 0.5 * t
return [a * b * X[0]**2]
X, infodict = integrate.odeint(func, X0, t, full_output=True, mxstep=5000000)
如何让参数b成为状态空间的函数,比如b = 1/X[0]?
【问题讨论】:
-
我不明白这个问题。为什么不直接实现
func()中的功能呢?也就是说,添加行b = 1/X[0](或任何你需要计算“参数”的表达式),然后在你的公式中使用b。 -
我想我不完全确定集成是如何工作的。每次调用 func 时,X 是状态空间当前值的数组吗?如果是这样,我可以照你说的做。
-
是的,它就是这样工作的。