我对 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()
2 回答
让我们在
deriv
中使用Y
而不是y
,其余的答案要清楚:函数
deriv
将Y = [y, y']
作为输入 .它应该输出它们的衍生物(
[y', y'']
) .y' = Y[1]
y'' = a*Y[0]+b*Y[1]
阅读odeint上的文档 . 它需要作为以下类型的输入方程:
据我了解,
array([ y[1], a*y[0]+b*y[1] ])
的第一个元素,即y[1]
在dy/dt
中被设为y
,它给出dy[1]/dt = y[2]
. 第二个元素,即a*y[0]+b*y[1]
,作为func(y,t0,...)