python中的polyfit二次图

问题描述

我试图在给出点y = a_0 + a_1*x + a_2*(x**2)的python中绘制二次方程(x,y)。我已经将这些点放入数组中,但是在绘图上遇到了麻烦。有人可以帮助我了解我的代码在哪里出问题吗?

    data = np.array([[0,0],[1,1],[2,8],[3,8]])
    x = data[:,0]
    y = data[:,1]
    a_0,a_1,a_2 = np. polyfit(x,y,z,1)

最后一行返回错误

没有足够的值可解压(预期3,得到2)

解决方法

您的数据

import numpy as np
data = np.array([[0,0],[1,1],[2,8],[3,8]])
x = data[:,0]
y = data[:,1]

您可以使用numpy.polyfit仅返回一个输出参数来拟合二次多项式

z = np.polyfit(x,y,2)
z
array([-0.25,3.85,-0.65])

然后您可以将系数分配给多项式p,以便将该多项式应用于某些值

p = np.poly1d(z)
p(x)
array([-0.65,2.95,6.05,8.65])