我在使用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
我觉得这个功能有些不同,但我不知道是什么。
1条答案
按热度按时间ajsxfq5m1#
原因是
fit
domain
的可选参数与其前身polyfit
的默认值不同。来自文档:
domain{None,[beg,end],[]},optional
用于返回的系列的域。如果为None,则选择覆盖点x的最小域。如果[],则使用类域。默认值是NumPy 1.4中的class domain,在更高版本中为None。numpy 1.5.0中添加了[]选项。
做
给
和其他的一样(模舍入误差),但是你应该不指定它,除非你知道你在设置拟合域方面做了什么。
在https://numpy.org/doc/stable/reference/routines.polynomials.html的相应部分中阅读更多内容