Python实现二维曲线拟合的方法
如下所示:
fromnumpyimport*
importnumpyasnp
importmatplotlib.pyplotasplt
plt.close()
fig=plt.figure()
plt.grid(True)
plt.axis([0,10,0,8])
#列出数据
point=[[1,2],[2,3],[3,6],[4,7],[6,5],[7,3],[8,2]]
plt.xlabel("X")
plt.ylabel("Y")
#用于求出矩阵中各点的值
XSum=0.0
X2Sum=0.0
X3Sum=0.0
X4Sum=0.0
ISum=0.0
YSum=0.0
XYSum=0.0
X2YSum=0.0
#列出各点的位置
foriinrange(0,len(point)):
xi=point[i][0]
yi=point[i][1]
plt.scatter(xi,yi,color="red")
show_point="("+str(xi)+","+str(yi)+")"
plt.text(xi,yi,show_point)
XSum=XSum+xi
X2Sum=X2Sum+xi**2
X3Sum=X3Sum+xi**3
X4Sum=X4Sum+xi**4
ISum=ISum+1
YSum=YSum+yi
XYSum=XYSum+xi*yi
X2YSum=X2YSum+xi**2*yi
#进行矩阵运算
#_mat1设为mat1的逆矩阵
m1=[[ISum,XSum,X2Sum],[XSum,X2Sum,X3Sum],[X2Sum,X3Sum,X4Sum]]
mat1=np.matrix(m1)
m2=[[YSum],[XYSum],[X2YSum]]
mat2=np.matrix(m2)
_mat1=mat1.getI()
mat3=_mat1*mat2
#用list来提取矩阵数据
m3=mat3.tolist()
a=m3[0][0]
b=m3[1][0]
c=m3[2][0]
#绘制回归线
x=np.linspace(0,10)
y=a+b*x+c*x**2
plt.plot(x,y)
show_line="y="+str(a)+"+("+str(b)+"x)"+"+("+str(c)+"x2)";
plt.title(show_line)
plt.show()
以上这篇Python实现二维曲线拟合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。