我有以下几行代码
import numpy as np
from numpy.polynomial import Polynomial
x=Polynomial.fit([0,1,2,3,4],[0,1,2,3,4],4)
print(x)
print(x.call(0))
我希望 numpy 将数据拟合到多项式 f(x)=x。但它输出 2.0 + 2.0 x + (1.2915422e-15) x2 - (7.05812123e-16) x3 - (9.57512621e-17) x**4.
更奇怪的是,当我让它在 x=0 处进行评估时,它给出了 1.1102230246251565e-15,这是我对 f(x)=x 的预期,但不是 2.0。有谁知道发生了什么事吗?
使用 numpy 的旧多项式特征,即 np.polyfit 我得到了正确的答案,但我项目的其余部分使用了新特征。
如果你阅读文档,你会发现
fit
返回的并不是字面上的系数。如果你print(x.convert().coef)
,你会发现它确实是f(x) = x
:
[-1.77635684e-15 1.00000000e+00 1.22916662e-15 -3.08599735e-16
1.95879353e-17]
https://numpy.org/doc/stable/reference/generated/numpy.polynomial.polynomial.Polynomial.fit.html