对不起,这是一个非常基本的问题。我试图在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
一直显示。