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

Python实现切比雪夫求积法计算e^(-x²)积分结果偏差求助

切比雪夫求积法代码错误分析与修正

你的代码存在三个核心问题,导致结果偏离正确值:

  • 节点计算逻辑错误:你通过对称复制生成节点,且用cos(arcsin(l/r))*r计算的实际是sqrt(r² - l²),完全不符合切比雪夫求积的节点定义。切比雪夫节点应基于余弦函数的特定角度值生成,再映射到目标区间。
  • 权重应用错误:切比雪夫求积的权重不是简单的(b-a)/n,而是需要结合π和区间长度的特定系数。
  • 节点重复计算:循环中i>n/2时的对称处理导致节点被重复累加,直接拉高了结果。

修正后的代码

import numpy as np

def f(x):
    return np.exp(-x**2)

def chebyshev(a, b, n):
    # 生成[-1,1]区间的切比雪夫节点(n个)
    k = np.arange(1, n+1)
    x_cheb = np.cos((2*k - 1) * np.pi / (2*n))
    # 将节点映射到[a, b]区间
    t = (a + b)/2 + (b - a)/2 * x_cheb
    # 计算积分近似值,应用切比雪夫求积的标准权重
    integral = (np.pi * (b - a) / (2*n)) * np.sum(f(t))
    return integral

print(chebyshev(0, 1, 1000))

关键说明

  1. 节点生成:切比雪夫求积的节点公式为cos((2k-1)π/(2n))(k从1到n),这是[-1,1]区间上的标准切比雪夫第一类节点,能最大化积分精度。
  2. 区间映射:通过线性变换将[-1,1]的节点转换到目标区间[a,b],保证节点分布符合切比雪夫的最优特性。
  3. 权重计算:积分结果的权重系数为π*(b-a)/(2n),这是切比雪夫求积法针对区间[a,b]的标准权重,替代了你代码中错误的h权重。

运行修正后的代码,n=1000时结果约为0.74682413,与正确值一致。

内容的提问来源于stack exchange,提问作者Fredrik Spalder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:56:06