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中有这样做的问题。
由于
答案 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])
当i
为100
时,您可以访问a[i+1]
a[101]
,但只能通过0
将100
编入索引(大小为n=101
)
答案 2 :(得分:0)
当您将n = 101更改为n = 102时,您的代码可以正常工作。