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

基于Chebyshev极值点与FFT的插值结果错误排查

Chebyshev插值错误排查与修正

问题根源

你的代码存在三个核心错误:

  • FFT类型与缩放规则错误:用正FFT计算Chebyshev系数是错误的,且统一乘以2/N的缩放逻辑不符合Chebyshev系数的计算规则——常数项c₀和最高次项c_{N-1}仅需除以N,中间项才需要乘以2/N。
  • 系数顺序错误:np.polynomial.chebyshev.chebval要求系数按低阶到高阶([c₀, c₁, c₂, ..., c_{N-1}])排列,你用[::-1]反转顺序导致求值完全偏离预期。

修正后的代码

import numpy as np
import matplotlib.pyplot as plt

N = 10

def f(x):
    return x**2

# 生成Chebyshev极值点(这部分是正确的)
x = np.cos(np.arange(N) * np.pi / N)
y = f(x)

# 用逆FFT计算Chebyshev系数
cheb_coeffs = np.fft.ifft(y).real
# 应用正确的缩放规则
cheb_coeffs *= 2/N
cheb_coeffs[0] /= 2
cheb_coeffs[-1] /= 2

# 直接使用低阶到高阶的系数求值
x_eval = np.linspace(-1, 1, 100)
y_approx = np.polynomial.chebyshev.chebval(x_eval, cheb_coeffs)

# 绘图对比
plt.plot(x, y, 'o', label='原函数采样点')
plt.plot(x_eval, f(x_eval), '--', label='原函数')
plt.plot(x_eval, y_approx, '-', label='Chebyshev近似')
plt.legend()
plt.show()

效果说明

修正后,Chebyshev近似曲线会完全贴合原函数x²,因为x²是二次多项式,用10个Chebyshev点插值可以完美还原目标函数。

内容的提问来源于stack exchange,提问作者Kristoffer Lindvall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:20:28