|
5鱼币
import numpy as np
import matplotlib.pyplot as plt
ts_length = 100
e_values = []
for i in range(ts_length):
e = np.random.randn()
e_values.append(e)
T=100
a=0.8
b=1.5
x0=2
x = []
x.append(x0)
for i in range(T): #for i in range(1,T):
x[i]=a*x[i-1]+e_values[i]+b*e_values[i-1]
x.append(x[i])
plt.plot(x,'k--')
老师让写的一个循环计算,我想在第二部分里i是0-99,那i-1不就是取的-1 的值吗,所以想改成#号代码,从1开始,但是这样之后,就会显示out of range ,如果把i,i-1改成i+1,i,不改range 也是这个报错
你的代码中出现了数组下标越界的问题。当你把第二个for循环的i从0开始改成从1开始时,x数组中的第一个元素就没有被初始化,因此在第一次循环中就会出现越界错误。你可以将x数组的初始化改成一个长度为T的0数组,然后从第二个元素开始填充即可。修改后的代码如下:
import numpy as np
import matplotlib.pyplot as plt
ts_length = 100
e_values = []
for i in range(ts_length):
e = np.random.randn()
e_values.append(e)
T=100
a=0.8
b=1.5
x0=2
x = [0] * T # 初始化x数组为长度为T的0数组
x[0] = x0
for i in range(1, T): # 修改循环从1开始
x[ i] = a * x[i-1] + e_values[ i] + b * e_values[i-1]
plt.plot(x,'k--')
|
最佳答案
查看完整内容
你的代码中出现了数组下标越界的问题。当你把第二个for循环的i从0开始改成从1开始时,x数组中的第一个元素就没有被初始化,因此在第一次循环中就会出现越界错误。你可以将x数组的初始化改成一个长度为T的0数组,然后从第二个元素开始填充即可。修改后的代码如下:
|