索引超出范围错误

时间:2017-08-31 13:32:00

标签: python python-2.7 octave

import matplotlib.pylab as plt
from math import *
import numpy as np

#parameters
n= 101
delx= 0.5
delt=0.1
D=1.0

alpha=D*delt/(delx*delx)

#initial profile
a=np.zeros(n)
a[0]=1.0

#loop for time and x
 for j in range(0,500):
  for i in range(1,101):
   a[i]=a[i]*(1-2*alpha)+alpha*(a[i-1]+a[i+1]) 
   a[100]=a[i]*(1-2*alpha)+2*alpha*(a[i-1])   

#loop for 20 figures
for j in range(20):
plt.plot(a,'r-')
plt.show()

我得到了Index out of bounds error。我是python的新手,请解释并修复。 (最初是Octave中的代码),所以在python中有这样做的问题。

由于

3 个答案:

答案 0 :(得分:0)

refreshControl.tintColor = .clear 在内循环中达到100时(BTW,我怀疑你是否需要外循环),i将尝试访问a[i+1],这不会存在。

另外,给定当前缩进的最后一个循环将绘制20个相同数据的副本,这可能不是您需要的。

答案 1 :(得分:0)

in

for j in range(0,500):
 for i in range(1,101):
  a[i]=a[i]*(1-2*alpha)+alpha*(a[i-1]+a[i+1]) 
   a[100]=a[i]*(1-2*alpha)+2*alpha*(a[i-1])

i100时,您可以访问a[i+1] a[101],但只能通过0100编入索引(大小为n=101

答案 2 :(得分:0)

当您将n = 101更改为n = 102时,您的代码可以正常工作。