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

Python中使用Chebyshev多项式拟合的数值计算及结果对比问题

切比雪夫拟合结果数值计算方法

numpy.polynomial.Chebyshev生成的拟合对象自带求值逻辑,直接传入待计算的x序列即可得到对应预测值,无需手动实现切比雪夫多项式展开。

修改后的示例代码如下,可以直接输出两种拟合结果做对比:

import numpy as np
from numpy.polynomial import Chebyshev as T
from mpmath import *
mp.dps = 16 
mp.pretty = True

x = [1, 2, 3, 4, 5]
y = [0.90, 8.15, 26.84, 64.87, 124.0]

deg = 3
# 普通多项式拟合
popt_poly = np.polyfit(x, y, deg)
ypred_poly = np.polyval(popt_poly, x)
# 切比雪夫多项式拟合
popt_cheb = T.fit(x, y, deg)
# 直接调用拟合对象计算切比雪夫预测值
ypred_cheb = popt_cheb(x)

print("普通多项式拟合系数(幂次从高到低):", popt_poly)
print("普通多项式预测值:", ypred_poly)
print("切比雪夫拟合系数(切比雪夫基阶数从低到高):", popt_cheb.coef)
print("切比雪夫预测值:", ypred_cheb)
print("两种拟合结果的平均绝对误差:", np.mean(np.abs(ypred_poly - ypred_cheb)))

补充说明

  • 若需要将切比雪夫拟合转换为标准幂次多项式格式,可调用convert方法:std_poly = popt_cheb.convert(kind=np.polynomial.Polynomial),其coef属性为幂次从低到高的标准多项式系数,倒序后和np.polyfit输出的系数顺序一致。
  • 普通np.polyfit出现Rank Warning是因为原生范德蒙德矩阵在x取值范围大、拟合阶数高时,高阶项数值差异过大导致矩阵条件数过高,数值稳定性差;而Chebyshev拟合会自动将输入x归一化到[-1,1]区间,基于正交基计算,数值稳定性远高于普通多项式拟合,因此不会触发秩警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:02