莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

Posts

学习与思考

  • Python最小二乘法拟合与作图

    最小二乘法拟合

    在函数拟合中,如果用p表示函数中需要确定的参数,那么目标就是找到一组p,使得下面函数S的值最小:

    最小二乘

    这种算法称为最小二乘法拟合。Python的Scipy数值计算库中的optimize模块提供了leastsq()函数,可以对数据进行最小二乘拟合计算。

    此处利用该函数对一段弧线使用圆方程进行了拟合,并通过Matplotlib模块进行了作图,程序内容如下:

    #使用最小二乘法拟合圆方程 import numpy as np from scipy.optimize import leastsq from pylab import * x,y=np.loadtxt('num.dat',delimiter=' ',dtype=float,usecols=(0,1),unpack=True) #for i in x: # print i #for j in y: # print j def residuals(p): a,b,r=p return r**2-(y-b)**2-(x-a)**2 result=leastsq(residuals,[1,1,1]) a,b,r=result[0] print "a=",a,"b=",b,"r=",r plot(x,y,color="red",label="origin",linewidth=2) yfit=sqrt(r**2-(x-a)**2)+b plot(x,yfit,"b--",label="fit",linewidth=2) legend(loc="upper right",frameon=False) annotate('(x-112.892403261)$^2$+(y+58.8238235027)$^2$=110.123575696$^2$',xy=(40,15)) annotate('R=110.123575696',xy=(100,10))...