【发布时间】:2019-09-17 09:45:42
【问题描述】:
该问题需要创建适合某些数据的二次多项式,然后打印出系数。我必须绘制原始数据并将多项式拟合覆盖在同一个图中。
我以前做过一个几乎相同的问题,没有问题,所以我有点不知道为什么它不起作用。 错误消息指出:
y1=p[0]*x+p[1] TypeError:不能将序列乘以“numpy.float64”类型的非整数
我想我明白这个错误消息的出现是因为它不喜欢 [ ] 但这是我之前的做法所以我不知道? 我已经把方程式弄乱了一点,试图让它工作,但没有什么是正确的。
x=(0.0,0.45,0.89,1.34,1.79,2.24,2.69,3.14,3.59,4.04,4.49,4.94,5.39,5.83,6.28)
y=(0.36,0.30,0.311,0.09,0.51,0.55,1.10,1.11,1.45,1.74,2.30,2.52,3.26,3.69,4.12)
r,s=st.pearsonr(x,y)
print'The Pearson Correlation Coefficient of this polynomial is',r
p=np.polyfit(x,y,2)
y1=p[0]*x+p[1]
plt.plot(x,y1,'-r')
plt.plot(x,y,'o')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Polynomial')
plt.show()
我希望生成一个图表,绘制实际数据,并在顶部绘制一条直线,表示多项式拟合。
【问题讨论】:
-
你确实意识到二次多项式意味着你有 ax^2+bx+c 拟合。那你为什么要使用线性拟合 p[0]*x+p[1].
标签: python python-2.7 numpy matplotlib