0
私は、レーザー速度方程式(常微分方程式1次)をPython(odeint)で解くための小さなプログラムに問題があります。エラー:インデックス2は、軸1のサイズが1の範囲外です。
私はプログラムを実行すると、エラーが常に現れる:
index 2 is out of bounds for axis 0 with size 1
方程式は正しいです。私はこのエラーの意味を知らない。
誰でもこの意味と解決方法を説明できますか?
def Rate(y,t):
D = y[0]
P = y[1]
w = 1.3
F = 0.0001
R = 90
dD_dt= w - D*P -D
dP_dt= R*D*P - R*P +F*D
dydt = [dD_dt,dP_dt]
return dydt
y0=0
t=np.arange(0,100,0.01)
sol=odeint(Rate,y0,t)
plt.plot(t,sol[:,0],'b',label='normalized inversion(t)')
plt.plot(t,sol[:,1],'g',label='normalized photon density(t)')
plt.legend()
plt.xlabel('t')
plt.grid()
plt.show()
とエラーになります:
IndexError Traceback (most recent call last)
<ipython-input-20-50f3d07b9161> in <module>()
----> 1 sol=odeint(Rate,y0,t)
C:\Users\asem\Anaconda2\lib\site-packages\scipy\integrate\odepack.pyc in
odeint(func, y0, t, args, Dfun, col_deriv, full_output, ml, mu, rtol, atol,
tcrit, h0, hmax, hmin, ixpr, mxstep, mxhnil, mxordn, mxords, printmessg)
213 output = _odepack.odeint(func, y0, t, args, Dfun, col_deriv, ml, mu,
214 full_output, rtol, atol, tcrit, h0, hmax,
hmin,
--> 215 ixpr, mxstep, mxhnil, mxordn, mxords)
216 if output[-1] < 0:
217 warning_msg = _msgs[output[-1]] + " Run with full_output = 1 to
get quantitative information."
<ipython-input-18-2f25cf16efde> in Rate(y, t)
1 def Rate(y,t):
2 D =y[0]
----> 3 P =y[2]
4 w = 1.3
5 F = 0.0001
IndexError: index 2 is out of bounds for axis 0 with size 1