You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

计算n=2至10的傅里叶系数时遇IndexError:列表索引越界

傅里叶系数计算代码索引越界错误修正

问题描述

需要获取n取值为2到10时的锯齿波(width=0.5,即三角波)傅里叶系数,编写的Python代码运行时出现IndexError: list index out of range错误,无法定位原因。

错误原因分析

  1. 变量名冲突导致索引越界:
    代码中先将x定义为np.linspace(-L,L,1000)的数组,随后在生成n的循环中,将x重新赋值为整数(最后一次循环后x=10)。后续循环中使用n[x]时,x=10超出了列表n的索引范围(n的长度为9,最大索引为8),直接触发索引越界错误。

  2. 数组初始化错误:
    np.zeros(n)的用法错误,np.zeros需要传入形状参数(整数或元组),而非列表,这会导致后续数组操作异常。

  3. 循环逻辑错误:
    循环for i in range(1,n[x]+1)完全偏离需求,目标是计算n=2到10的系数,而非从1到某个错误值的循环。

  4. 后续变量复用冲突:
    求和与绘图部分仍使用被覆盖的x(此时是整数10),而非最初的采样数组,会导致计算和绘图错误。

修正后的代码

import numpy as np
import scipy.integrate as integrate
from scipy.signal import sawtooth
import matplotlib.pyplot as plt

L = np.pi
# 重命名采样数组,避免变量冲突
x_arr = np.linspace(-L, L, 1000)
f = sawtooth(x_arr, width=0.5)

# 直接生成n=2到10的列表,简化逻辑
n_list = list(range(2, 11))
print("n的取值列表:", n_list)

# 根据n的长度初始化系数数组
an = np.zeros(len(n_list))
bn = np.zeros(len(n_list))

li = -L
lf = L
L1 = (lf - li) / 2
a0 = (1.0 / L1) * integrate.quad(lambda x: sawtooth(x, width=0.5), li, lf)[0]

# 遍历n_list中的每个n值,计算对应系数
for idx, n_val in enumerate(n_list):
    an[idx] = (1.0 / L1) * integrate.quad(
        lambda x: sawtooth(x, width=0.5) * np.cos(n_val * np.pi * x / L1),
        li, lf
    )[0]
    bn[idx] = (1.0 / L1) * integrate.quad(
        lambda x: sawtooth(x, width=0.5) * np.sin(n_val * np.pi * x / L1),
        li, lf
    )[0]

# 输出所有系数
print("傅里叶系数A_n =", an)
print("傅里叶系数B_n =", bn)

# 计算傅里叶级数拟合结果,使用正确的采样数组x_arr
s = a0 * 0.5 + sum([
    an[idx] * np.cos(n_val * np.pi * x_arr / L1) + bn[idx] * np.sin(n_val * np.pi * x_arr / L1)
    for idx, n_val in enumerate(n_list)
])

# 绘图
plt.plot(x_arr, s, label="傅里叶拟合")
plt.plot(x_arr, f, label="原始三角波")
plt.grid()
plt.legend()
plt.show()

关键修正点说明

  • 重命名采样数组为x_arr,彻底避免变量名冲突;
  • 用list(range(2,11))直接生成n的取值列表,简化且不易出错;
  • 用len(n_list)初始化系数数组,保证数组长度与n的数量匹配;
  • 用enumerate遍历n的取值,同时获取索引和n值,准确对应系数数组的位置;
  • 求和与绘图部分使用x_arr,确保基于采样数组计算和展示。

内容的提问来源于stack exchange,提问作者Eeshani Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:45:22