下面程序报错说e[int(t)-1]这里index 80 is out of bounds for axis 0 with size 60,但我不知道为什么这里错了,哪位能帮忙看下,python版本3.0,windows环境
def SIR(y, t, e):
S, I = y
dSdt = e[int(t)-1]
dIdt = 1
return [dSdt, dIdt]
e=np.array([0.2691217 , 0.89603752, 0.94555248, 0.96039339, 0.96565525,
0.96761869, 0.96836432, 0.96864926, 0.96875838, 0.96880021,
0.96881624, 0.96882239, 0.96882475, 0.96882565, 0.968826 ,
0.96882613, 0.96882618, 0.9688262 , 0.96882621, 0.96882621,
0.96882621, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622,
0.96882622, 0.96882622, 0.96882622, 0.96882622, 0.96882622])
y0=[2,1]
t = np.linspace(1,60,60)
solution = odeint(SIR, y0, t, args = (e,))
你把你的SIR函数定义的第一行输入一个print(t),你可以看一下你的t的取值,不是你想的t取1-60的整数值,会有大于60的值,而你的e是60个值,当索引大于60时,就会报错了啊