索引越界错误
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])
当i
是100
时,你访问a[i+1]
是a[101]
,但是a只能通过[=12=索引0
](大小为n=101
)
当您将 n= 101 更改为 n= 102 时,您的代码可以正常工作。
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])
当i
是100
时,你访问a[i+1]
是a[101]
,但是a只能通过[=12=索引0
](大小为n=101
)
当您将 n= 101 更改为 n= 102 时,您的代码可以正常工作。