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

Python基于Chebyshev节点实现插值多项式报IndexError如何解决

问题排查与解决方法

1 直接报错原因

你的cardinal函数的return语句缩进位置错误,被放在了for i in range(n)的循环内部,导致第一次循环仅完成i=0的计算后就直接返回了只有1个元素的l列表。而你的ydata长度为5(你传入了n+1=5个切比雪夫节点),当lagrange函数循环到i=1尝试访问l[1]时,自然触发数组越界错误。

2 修复方案

仅需要调整cardinal函数的return缩进,放到循环外部即可,顺便把数值比较的is not换成更规范的!=,修改后的代码如下:

# 基函数计算
def cardinal(xdata, x):
    n=len(xdata)
    l = []
    for i in range(n):
        li = np.ones(len(x))
        for j in range(n):
            if i != j:
                li = li*(x-xdata[j])/(xdata[i]-xdata[j])
        l.append(li)
    return l # return调整到和for循环同缩进位置

3 可选优化调整

如果你需要严格使用4个切比雪夫节点,把xdata = chebyshev_nodes(a, b, n+1)改成xdata = chebyshev_nodes(a, b, n)即可。修改完成后运行代码就能正常输出插值结果和对比图像。

内容的提问来源于stack exchange,提问作者Lene Johaug Karlsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:48:01