numpy.polynomial.polynomial.Polynomial.fit()函数的结果

tct7dpnv  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(89)

我在使用numpy的多项式方法时感到困惑。
我尝试了这3种方法,但只有numpy.polynomial.polynomial.Polynomial.fit()返回不同的结果。

x = [0.0, 0.44721, 0.94868, 1.3784, 2.21359]
y = [100.0, 99.77908, 97.99978, 95.56167, 88.42727]

coef00, coef11 = np.polynomial.polynomial.Polynomial.fit(x, y, 1)
coef_0, coef_1 = np.polynomial.polynomial.polyfit(x, y, 1)
coef1, coef0 = np.polyfit(x, y, 1)

print(coef00, coef11)
print(coef_0, coef_1)
print(coef0, coef1)

>>
95.77300574959435 -5.883175469265392
101.65618121885973 -5.315506005416914
101.65618121885977 -5.315506005416928

我觉得这个功能有些不同,但我不知道是什么。

ajsxfq5m

ajsxfq5m1#

原因是fitdomain的可选参数与其前身polyfit的默认值不同。
来自文档:
domain{None,[beg,end],[]},optional
用于返回的系列的域。如果为None,则选择覆盖点x的最小域。如果[],则使用类域。默认值是NumPy 1.4中的class domain,在更高版本中为None。numpy 1.5.0中添加了[]选项。

coef00, coef11 = np.polynomial.Polynomial.fit(x, y, 1, domain=[])

101.65618121885974 -5.315506005416907

和其他的一样(模舍入误差),但是你应该不指定它,除非你知道你在设置拟合域方面做了什么。
https://numpy.org/doc/stable/reference/routines.polynomials.html的相应部分中阅读更多内容

相关问题