鱼C论坛

 找回密码
 立即注册
查看: 1526|回复: 1

[已解决]for 循环 out of range

[复制链接]
发表于 2023-9-21 14:53:51 | 显示全部楼层 |阅读模式
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 也是这个报错
最佳答案
2023-9-21 14:53:52
你的代码中出现了数组下标越界的问题。当你把第二个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数组,然后从第二个元素开始填充即可。修改后的代码如下:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-21 14:53:52 | 显示全部楼层    本楼为最佳答案   
你的代码中出现了数组下标越界的问题。当你把第二个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--')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 10:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表