Python数值求解差分方程触发IndexError报错如何解决
问题排查与解决
错误原因
你定义的数组/列表长度为N+1,合法索引范围是0到N。循环遍历n的范围是1到N,当n=N时你访问了x[n+1]也就是x[11],超出了索引上限,因此触发IndexError。
修正代码
有两种等效的修改方式,可任选一种:
方式1:调整循环范围
import numpy as np N = 10 # 两种初始化方式都可正常运行,这里保留numpy数组写法 x = np.zeros(N+1, float) x[0] = 1000 r = 1.02 for n in range(N): x[n+1] = r**(n+1)*x[0] print(f"x[{n+1}] = {x[n+1]}")
方式2:调整赋值与打印的下标对应关系
import numpy as np N = 10 x = (N+1)*[0] x[0] = 1000 r = 1.02 for n in range(1, N+1): x[n] = r**n*x[0] print(f"x[{n}] = {x[n]}")
内容的提问来源于stack exchange,提问作者fredericoamigo
相关产品推荐
相关产品推荐

