Python最小二乘法拟合与作图

Python最小二乘法拟合与作图,第1张

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

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

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

Python的使用中需要导入相应的模块,此处首先用 import 语句

分别导入了numpy, leastsq与pylab模块,其中numpy模块常用用与数组类型的建立,读入等过程。leastsq则为最小二乘法拟合函数。pylab是绘图模块。

接下来我们需要读入需要进行拟合的数据,这里使用了 numpyloadtxt() 函数:

其参数有:

进行拟合时,首先我们需要定义一个目标函数。对于圆的方程,我们需要圆心坐标(a,b)以及半径r三个参数,方便起见用p来存储:

紧接着就可以进行拟合了, leastsq() 函数需要至少提供拟合的函数名与参数的初始值:

返回的结果为一数组,分别为拟合得到的参数与其误差值等,这里只取拟合参数值。

leastsq() 的参数具体有:

输出选项有:

最后我们可以将原数据与拟合结果一同做成线状图,可采用 pylabplot() 函数:

pylabplot() 函数需提供两列数组作为输入,其他参数可调控线条颜色,形状,粗细以及对应名称等性质。视需求而定,此处不做详解。

pylablegend() 函数可以调控图像标签的位置,有无边框等性质。

pylabannotate() 函数设置注释,需至少提供注释内容与放置位置坐标的参数。

pylabshow() 函数用于显示图像。

最终结果如下图所示:

用Python作科学计算

numpyloadtxt

scipyoptimizeleastsq

不管是单变量函数的拟合数还是多变量面函数的拟合,其方法是一样的。只不过多变量是以向量的形式(如,x=[x1,x2,x3,。。。])来表示。

例如,函数模型,y=a1x1+a2x2+a3x3+。。。,其自定义函数为

func=@(a,x)a(1)x(:,1)+a(2)x(:,2)+a(3)x(:,3)+。。  。  %定义模型函数

a=nlinfit(x,y,func,x0);  %拟合系数

以上就是关于Python最小二乘法拟合与作图全部的内容,包括:Python最小二乘法拟合与作图、有谁会用matlab来进行多面函数拟合,我已经有程序,但是看不懂、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9722568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存