如何在python中阅读polyfit函数?

时间:2018-06-14 14:17:20

标签: python python-3.x numpy

我想通过给出值并获得等式来生成多项式方程。然而,当我用给定的x值控制它时,我得到的公式中的不同值是我的代码和输出:

points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])

x = points[:,0]
y = points[:,1]

# calculate polynomial
z = np.polyfit(x, y, 2)
f = np.poly1d(z)

它给了我这个等式:-0.001416*x^2 + 0.1504*x + 1.72

OUTPUTS

x   expected(y) returned(y)

1     1         1.868984
2     4         2.015136
3     1         2.158456
9     3         2.9589040000000004

我错了还是我读错了?

1 个答案:

答案 0 :(得分:2)

你似乎误解了多项式拟合的概念。当你调用polyfit(x, y, n)时,它所做的就是给你最适合点集(x,y)的第n(或更小)度多项式。因此,通过使用n = 2调用polyfit,它会返回最适合您给出的点的二次多项式。这个多项式只是你的集合的近似值,因此预期返回值与预期值不同,由于二次多项式很难表示它们而恶化。

以下代码直观地演示了这是如何实现的。更改您的积分,n函数的polyfit()值,看看您是否能更好地掌握这一概念:

import numpy as np
import matplotlib.pyplot as plt

points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)])

x = points[:,0]
y = points[:,1]

# calculate polynomial
z = np.polyfit(x, y, 2)
f = np.poly1d(z)

x_fit = np.linspace(-100, 100, 1000)
y_fit = [f(_x) for _x in x_fit]

plt.plot(x, y)
plt.plot(x_fit, y_fit)
plt.show()