首页 理论教育 一般形式的拟合实现方法

一般形式的拟合实现方法

时间:2022-02-12 理论教育 版权反馈
【摘要】:在前面已经介绍Malthus、Logistic两种预测模型,这是两种典型的数学模型.但是这两种拟合方式可以实现的非多项式模型是非常有限的,如何自定函数形式进行数据拟合是本节所要介绍的内容.在Matlab语言中,有许多方式可以实现非多项式拟合,其中的lsqcurvefit(@myfun,x0,xdata,ydata)和nlinfit(X,y,fun,beta0)是最常用的命令,下面将介绍它们的实现方

在前面已经介绍Malthus、Logistic两种预测模型,这是两种典型的数学模型.但是这两种拟合方式可以实现的非多项式模型是非常有限的,如何自定函数形式进行数据拟合是本节所要介绍的内容.在Matlab语言中,有许多方式可以实现非多项式拟合,其中的lsqcurvefit(@myfun,x0,xdata,ydata)和nlinfit(X,y,fun,beta0)是最常用的命令,下面将介绍它们的实现方式.

例3-8 输入输出测量问题

有一个原理未知的黑箱系统:在这个系统中每输入一个数据都会输出一个数据.经过若干次试验,测量数据如表3-12所示.为了能够深入对该黑箱进行研究,请找出输入与输出之间的关系式.

表3-12 输入输出测量数据

【解题思路】

图3-18 输入输出测量数据散点图

为了确定函数形式,首先使用Matlab画出数据的散点图,以便观察数据的规律,如图3-18所示.

通过对于图像所呈现规律的分析,认为可以用以下函数对数据进行描述.其中,x表示系统的输入,y表示系统的输出;参数a,b,c就是通过拟合需要求解的参数.

y=ax2+b sin(x)+cx3

估计一般形式拟合函数参数的Matlab源程序如下所示:

1.首先需要通过Matlab新建一M文件,命名为myfun.m,其内容如下:function F=myfun(x,xdata)

F=x(1)*xdata.^2+x(2)*sin(xdata)+x(3)*xdata.^3;

2.然后在Command Window窗口中键入命令进行参数拟合,其内容如下:

xdata=[3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];

ydata=[16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];

x0=[10,10,10];

[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata)

在以上命令中,首先建立一个M文件,用于存放自定的函数形式,参数x与data就是函数参数接口.在命令窗口输入的命令中,第一、二行为测量数据,第三行x0是参数预估计数值,而第四行核心程序就是对参数进行估计.在程序运行后得到的x是一个1×3的数组,分别代表abc;而resnorm得到的将是该拟合函数所产生的拟合平方误差.可以得到拟合函数如下所示:

y=0.2269x2+0.3385sin(x)+0.3021x3

使用M文件编程过程中,需要注意将M文件存放在当前的运行目录下,并且以函数名命名,否则将会发生编译错误.

例3-9 公司销售量预测问题

为了指导生产,现有一家公司对本年度前十个月的销售量作了数据统计,统计数据如表3-13所示.该公司希望能够通过统计数据进行分析,找出数据内在的关系式,并对该年的后两个月进行销售量预测.

表3-13 公司销售量统计数据

【解题思路】

图3-19 公司销售量数据散点图

为了确定函数形式,首先使用Matlab画出数据的散点图,以便观察数据的规律,如图3-19所示.

通过对于图所呈现规律的分析,认为可以用以下函数对数据进行描述.其中,x表示时间月份,y表示公司的销售量;参数a,b,c就是通过拟合需要求解的参数.

y=ax+b ln x+c

估计一般形式拟合函数参数的Matlab源程序如下所示:

1.首先需要通过Matlab新建一个M文件,命名为myfun.m,其内容如下:

function yy=myfun(b)eta0,x

a=beta0(1);

b=beta0(2);

c=beta0(3);

yy=c*x+b*log(x)+a;

2.然后在Command Window窗口中键入命令进行参数拟合,其内容如下:

x=[1 2 3 4 5 6 7 8 9 10];

y=[10 16 21 26 30 34 38 41 45 49];

beta0=[3 6 5];

betafit=nlinfit(x,y,′myfun1′,beta0)

在以上命令中,首先建立一个M文件,用于存放自定的函数形式.在命令窗口中输入的命令中,第一、二行为测量数据,第三行beta0是参数预估计数值,而第四行核心程序就是对参数进行估计.在程序运行后得到的x是一个1×3的数组,分别代表abc,可以得到拟合函数如下所示:

y=6.7347x+4.6543lnx+3.1337

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈