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

Numpy Polynomial类拟合系数显示与实际求值结果不符问题

为什么Polynomial.fit输出的系数与实际求值结果不符?

核心原因是np.polynomial.Polynomial.fit()默认会对输入的x做归一化处理(将x线性映射到[-1,1]区间),目的是提升拟合的数值稳定性。打印出的系数和表达式,是对应这个归一化后变量的,不是原始x坐标系下的系数。

验证归一化映射

可以查看拟合后多项式的domain和window属性:

print(poly.domain)  # 输出[-3.1, -2.3],即输入x的范围
print(poly.window)  # 输出[-1., 1.],归一化后的目标区间

归一化的映射公式为:
x_normalized = (2 * x - (domain[0] + domain[1])) / (domain[1] - domain[0])
代入你的x范围计算:
domain_min=-3.1,domain_max=-2.3,所以:
x_normalized = (2x +5.4)/0.8 = 2.5x +6.75

转换回原始坐标系的多项式

拟合后的多项式是基于x_normalized的:p(x_normalized) = 2.96978417 -0.56115108*x_normalized
将x_normalized代入,转换为原始x的表达式:

p(x) = 2.96978417 -0.56115108*(2.5x +6.75)
     = 2.96978417 -1.4028777x -3.78776978
     = -0.81798561 -1.4028777x

这个表达式的结果就和你调用poly(0)、poly(1)-poly(0)的输出完全一致了。

获取原始坐标系的系数

如果需要直接得到原始x下的系数,可以调用convert()方法:

poly_original = poly.convert()
print(poly_original.coef)  # 输出[-0.81798561, -1.4028777]
print(poly_original)       # 输出-0.8179856115107942 - 1.4028776978417268·x¹

此时用这个多项式求值就和直观的系数计算一致了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:55:15