我刚开始使用 Python 并且有一堆我想从 Matlab 转移过来的代码。我从一个简单的耦合 diff eq 开始,似乎无法弄清楚我做错了什么。似乎第二个 diff eq 几乎给了我适当的结果,但第一个方程在整个时间跨度内仅保持在其初始条件。第一个图像是 Python 结果,第二个是 Matlab 的正确结果。
1) 2)
from scipy.integrate import odeint
from pylab import *
minfH_ab = lambda v: 1/(1 + exp((v+70)/6))
taumH_ab = lambda v: 272 + 1499/(1 + exp(-(v+42.2)/8.73))
Csn = 9
I_ab_sn = 0
gL_ab_sn = 0.045
El_ab_sn = -50
gH_ab = 0.054
Eh_ab = -20
def dy_dt(y, t):
dy1 = (1/Csn)*(I_ab_sn -((gH_ab*y[1]*(y[0]-Eh_ab))+(gL_ab_sn*(y[0]-El_ab_sn))))
dy2 = (minfH_ab(y[0])-y[1])/taumH_ab(y[0])
return [dy1, dy2]
t = linspace(0,1000,10000)
y_init = [-50, .0004]
sol = odeint(dy_dt, y_init, t)
S0 = sol[:, 0]
S1 = sol[:, 1]
figure()
plot(t, S0)
xlabel('time')
ylabel('voltage')
title('H & L Current')