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实现二维曲线拟合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。