索引越界错误

Index out of bounds Error

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 中执行此操作时遇到问题。

谢谢

i在内循环中达到100时(顺便说一句,我怀疑你是否需要外循环),a[i+1]将尝试访问a[101],这不存在。

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

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],但是a只能通过[=12=索引0 ](大小为n=101

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