用scipy odeint求解耦合微分方程组

我对odeint有点困惑.

我在下面找到了一个例子来解决y“= ay by”.所以似乎y [0]是函数,y [1]是一阶导数.

那么下面的表达式是指y [1] = y’和y'[1] = a * y [0] b * y [1]?

如果它是y [2],a * y [0] b * y [1],它意味着什么?

我有点困惑,因为表达式没有说左边的等式.

我也遇到了像[a(y [0],y [1]),b(y [0],y [1])]这样的表达式,但没有微分方程的线索.

这是一个例子:

from scipy.integrate import odeint
from pylab import * # for plotting commands

def deriv(y,t): # return derivatives of the array y
    a = -2.0
    b = -0.1
    return array([ y[1], a*y[0]+b*y[1] ])

time = linspace(0.0,10.0,1000)
yinit = array([0.0005,0.2]) # initial values
y = odeint(deriv,yinit,time)
figure()
plot(time,y[:,0])
xlabel('t')
ylabel('y')
show()

最佳答案 让我们在导数而不是y中使用Y来表示其余的答案:

def deriv(Y,t): # return derivatives of the array Y
    a = -2.0
    b = -0.1
    return array([ Y[1], a*Y[0]+b*Y[1] ])

函数导数将Y = [y,y’]作为输入.

它应该输出它们的衍生物([y’,y”]).

y’= Y [1]

y”= a * Y [0] b * Y [1]

点赞