使用scipy解决僵硬的ODE

时间:2017-07-08 08:59:43

标签: python scipy ode numerical-integration

对不起,这是一个非常基本的问题。我试图在set.integrator的帮助下解决僵硬的ODE(' vode',method =' bdf')。但是,我无法完全理解语法和错误不断出现。这是我第一次处理这个问题,这对我来说很有帮助。 这是我使用过的代码:

def f(y,t):
    f0 = y[0]*(onr/(y[0]**3) + (H**2)*(y[2]**2)/(2.0*rho_c) + (v0*np.exp(-l*y[1]*k))/(rho_c))**(1.0/2.0)
    f1 =  y[2]
    f2 =  -3*y[2]*(H**2)*(onr/(y[0]**3) + (H**2)*(y[2]**2)/(2.0*rho_c) + (v0*np.exp(-l*y[1]*k))/(rho_c))**0.5 + (l*k*v0*np.exp(-l*y[1]*k))/(H**2)
    return [f0,f1,f2]

#y[0] = 1.0
#y[1] = 1.0
#y[3] = c
y0 = [1.0,1.0,c]
t0 = 1.0
t1 = 0.0
t = np.linspace(start=1.0,stop=0.0,num=100001)

solver = ode(f).set_integrator('vode',method='bdf')
solver.set_initial_value(y0,t0)

y,t = [],[]

while solver.t>t1:
    solver.integrate(t1,step=True)
    y.append(solver.y)
    t.append(solver.t)
y = np.array(y)
t = np.array(t)


X = solver[:,0]
Y = solver[:,1]
Z = solver[:,2]

我不确定这里有什么问题。当我运行时TypeError: 'float' object is not subscriptable一直显示。

0 个答案:

没有答案