python scipy integrate - 更改依赖于状态空间的参数

时间:2017-04-17 20:51:35

标签: python scipy ode

我正在开发一个项目,该项目需要找到具有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]?

1 个答案:

答案 0 :(得分:0)

使用评论的帮助,我只是将参数实现为状态空间的函数。它在下面:

$startTime  = new \DateTime('2010-01-01 00:00');
$endTime    = new \DateTime('2010-01-01 23:55');
$timeStep   = 15;
$timeArray  = array();

while($startTime <= $endTime)
{
    $timeArray[] = $startTime->format('H:i');
    $startTime->add(new \DateInterval('PT'.$timeStep.'M'));
}

var_dump($timeArray);