在 Python 中从 Apple 的 Numbers 应用程序重新创建多项式

Re-Creating Polynomial From Apple's Numbers App in Python

我目前正在寻找多项式方程来描述 Python 中的数据集(具有一个 x 和一个 y 值的简单表格)。我需要一个多项式方程来描述数据集,以便给定一个数字 x 我可以得出它的 y 值。

如果我将这些数据集输入 Apple 的 Numbers 应用程序并将它们绘制在图表上,我可以获得一个非常有用的多项式方程,它可以非常准确地预测我的 y 值以达到我的目的。然而,当使用 Numpy 推导具有相同数据集的多项式方程时,我得到了一个非常不同的多项式方程,它做出了难以置信的不准确预测。我希望我的 Python 程序创建多项式方程,这些方程更接近数字应用程序生成的方程。

一些细节:

我的 x 值 (x_list):3.75652173913043、3.79130434782609、3.82608695652174

我的 y 值 (y_list):0.0872881944444445、0.0872522935779816、0.0858840909090909

我的 Numbers 多项式:y = -0.5506x^2 + 4.1549x - 7.7508

我的 Numpy 多项式:y = -7.586x^2 + 57.53x - 108.7

我如何使用 Numpy:多项式 = numpy.poly1d(numpy.polyfit(x_list, y_list, deg=2))

我在Python中的数字四舍五入到小数点后8位,但我认为差异太大,不是四舍五入的问题。

简而言之,我想知道 Numbers 是如何导出这个多项式的,而 Numpy 是如何导出的,以及我如何复制 Numbers 方法,最好是不使用 Numpy。 (我最终不得不将我的程序从 Python 翻译成 Swift。)

我用这段代码得到的结果是准确的。也许如果您可以 post 您的代码,我们可以提供更多帮助。

% x_list = [3.75652173913043, 3.79130434782609, 3.82608695652174]
% y_list = [0.0872881944444445, 0.0872522935779816, 0.0858840909090909]
% fit = numpy.polyfit(x_list, y_list, deg=2)
% y = numpy.poly1d(fit)
% print y
         2
-0.5506 x + 4.155 x - 7.751