Python を使い始めたばかりで、Matlab から移行したいコードがたくさんあります。私は単純な連結差分 eq から始めましたが、何が間違っているのかわかりません。2 番目の diff 式はほぼ適切な結果を示しているようですが、最初の式は全期間にわたって初期状態のままです。最初の画像は Python の結果で、2 番目の画像は 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')