У меня возникла проблема с решением двух очень простых несвязанных ODE с использованием scipy.integrate.ode. Например, следующий простой код:
from scipy.integrate import ode
def f(t, y, r_r=1.68,mu_ext=0. ,tau_m=0.020, tau_s=0.005, gs= 0.5):
dmu = (1./tau_s)*(-y[0] + mu_ext + gs*r_r)
dx = (1./tau_m)*(-y[1] + y[0])
return [dmu, dx]
t0 = 0.0 #Intial time
y0 = [4.0, 0.0] #initial condition for x = 0
y1 = [4.0, 1.0] #inital condition for x = 1
x0m = ode(f)
x0m.set_initial_value(y0, t0)
x1m = ode(f)
x1m.set_initial_value(y1, t0)
t1 = 1.0
dt = 0.0001
x0 = []
x1 = []
t=0
for i in xrange(1000):
t +=dt
x0m.integrate(t)
x0.append(x0m.y)
x1m.integrate(t)
x1.append(x1m.y)
Интересно, что каждый из них может быть решен идеально в двух разных циклах, но я не понимаю, почему это заставляет второй решатель ODE возвращать ерунду.