《matlab曲线拟合问题分析说课讲解.doc》由会员分享,可在线阅读,更多相关《matlab曲线拟合问题分析说课讲解.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。matlab曲线拟合问题分析-2013高教社杯全国大学生数学建模竞赛承诺书我们仔细阅读了全国大学生数学建模竞赛章程和全国大学生数学建模竞赛参赛规则(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文
2、引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。我们参赛选择的题号是(从A/B/C/D中选择一项填写):我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):中国人民解放军理工大学参赛队员(打印并签名):1.韦炜致2.盛俊3.秦鹏飞指导教师或指导教师组负责人(打印并签名):刘守生(论文纸质版与电子版中的以上信息必须一致,只是电子版中
3、无需签名。以上内容请仔细核对,提交后将不再允许做任何修改。如填写错误,论文可能被取消评奖资格。)日期:2014年7月21日赛区评阅编号(由赛区组委会评阅前进行编号):2013高教社杯全国大学生数学建模竞赛编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):赛区评阅记录(可供赛区评阅时使用):评阅人评分备注全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):-通过曲线拟合的方法探究两个相关量之间的关系一、摘要本文采用最小二乘法、最小一乘法的分析方法,通过建立线性规划模型与非线性规划模型等多种形式,利用Matlab、Lingo编程实现曲线拟合,以探究两个相关量
4、量与量之间的关系。对于问题一,在拟合准则为偏差平方和最小的前提下,采用最小二乘法,通过Matlab编程得到0.012,0.803,即可得拟合直线。对于问题二,在拟合准则为绝对偏差总和最小的前提下,采用最小一乘法,并将无约束不可微最优化问题转化为解决线性规划问题,通过Matlab编程得到0.750,0.575,即可得拟合直线。对于问题三,在拟合准则为最大偏差极小化的前提下,采用线性规划模型,通过Matlab编程得到-4.758,1.130,即得拟合直线。对于问题四,在拟合准则为偏差平方和最小的前提下,继续采用最小二乘法,得到1.425,-0.139,0.097,则为所拟合的曲线。在拟合准则为绝对
5、偏差总和最小的前提下,构造非线性规划模型,得到1.000,-0.805,0.160,则为所拟合的曲线。在拟合准则为最大偏差极小化的前提下,也是构造非线性规划模型,得到0.469,0.766,0.025,则为所拟合的曲线。对于问题五,重新观察散点图的图像特征,采用最小二乘法,拟合出相应的指数函数曲线图像和对数函数曲线图像,发现的指数函数曲线方程较对数函数曲线方程更准确地表现出量与量之间的关系。关键词最小二乘法最小一乘法线性规划曲线拟合二、问题重述已知一个量依赖于另一个量,现收集有数据如下:0.00.51.01.51.92.53.03.54.04.51.00.90.71.52.02.43.22.0
6、2.73.55.05.56.06.67.67.68.59.010.01.04.07.62.75.74.66.06.812.3(1)求拟合以上数据的直线。目标为使的各个观察值同按直线关系所预期的值的偏差平方和为最小。(2)求拟合以上数据的直线,目标为使的各个观察值同按直线关系所预期的值的绝对偏差总和为最小。(3)求拟合以上数据的直线,目标为使的各个观察值同按直线关系所预期的值的最大偏差为最小。(4)求拟合以上数据的曲线,实现(1)(2)(3)三种目标。(5)试一试其它的曲线,可否找出最好的?三、问题分析由题目可知,量依赖于量,也就是说量与量之间存在着必然的联系。这就要求我们通过曲线拟合的方式来探
7、究量与量之间的关系。对于问题一,拟合题中所给数据的直线,目标为使的各个观察值同按直线关系所预期的值的偏差平方和为最小。拟合准则偏差平方和最小,即为最为常用的最小二乘准则,故该问就转化为了在最小二乘准则下的曲线拟合问题,也就是一个多元函数的最小值问题,故而可采用最小二乘法,利用Matlab编程进行曲线拟合进行求解。对于问题二,拟合题中所给数据的直线,目标为使的各个观察值同按直线关系所预期的值的绝对偏差总和为最小。对于要在拟合准则绝对偏差总和最小的情况下拟合曲线,应采用最小一乘法原理,又因求解存在一定的困难,其困难就在于绝对值的存在,应设法化去绝对值,所以在所要求拟合的曲线函数形式简单的前提下,将
8、问题转化为了线性规划的求解问题。对于问题三,拟合题中所给数据的直线,目标为使的各个观察值同按直线关系所预期的值的最大偏差为最小。对于要在拟合准则最大偏差为最小的情况下拟合曲线,可以在第二问的基础上加以改进,继续采用线性规划模型,并利用Lingo编程进行问题的求解。对于问题四,拟合题中所给数据的曲线,分别实现问题一、问题二、问题三中的三种目标。针对这一问题,只需将前三问中的原理加以改进,将原理中的线性部分转化为非线性部分,即可对该问进行求解。对于问题五,因为前三问要求拟合的都是直线,第四问要求拟合的是二次曲线,拟合完后发现均呈现函数值与观测值都存在一定的偏差,说明拟合的曲线并非是关于量和量的最佳
9、拟合曲线。故而可以重新观察散点图的图像特点,充分考虑之前拟合曲线中的奇异点的位置,分别尝试拟合指数函数曲线和对数函数曲线,以找到关于量和量的最佳拟合曲线。四、模型的建立与求解设表示按拟合曲线求得的近似值,它不同于实测值,两者之间的差值就是大家熟知的偏差(或残差)。通常我们构造拟合曲线有3种准则可供选择(即如题所问),具体内容如下:1、最大偏差达到最小:;2、偏差的绝对值之和达到最小:;3、偏差的平方和达到最小:。6.1问题模型的建立和解答6.1.1问题模型的建立直线拟合数据点的最小二乘法,即找一个一次函数,使二元函数达到最小。由多元函数取得极值的必要条件知,由方程组:,化简可得正规方程组:。6
10、.1.2问题模型的解答要求解最小二乘线性回归方程,运用Matlab实现极为简洁(具体程序详见附录1)。得出0.803,-0.012。也就是说拟合成的直线为。拟合后的图像见下图1:图1问题一函数拟合结果4.2问题模型的建立和解答4.2.1建立最小一乘线性回归模型设观测数据为,即样本个数大于变量个数,线性模型为,(1)其中为元素全为1的维列向量,为回归系数向量,。接下来是确定对最小一乘线性回归系数的估计,这就需要求解下面的无约束不可微最优化问题,(2)即要求超定矛盾线性方程组,(3)的的范数极小解。令,可以看做两个非负的维列向量之差,令,又设为非负的维列向量,则(3)可以变成一个相容性的线性方程。
11、(4)问题(2)变为求最小的问题,再设分别表示含有个0,个1的列向量,于是问题转化为求解如下的线性规划问题模型目标值为,(5)约束条件为,(6)接着利用求解线性规划的算法,求出问题(5)的最优解后,即可得到问题(1)的最优解。4.2.2求解最小一乘线性回归模型要求解最小一乘线性回归方程,关键就是计算出最小一乘线性回归系数向量,而计算值运用Matlab实现极为简洁。故下面就利用Matlab优化工具箱中的线性规划命令linprog求解最小一乘线性回归系数向量(具体程序详见附录1)。得出0.5750,0.6500,即0.575,0.750。也就是说拟合成的直线为。拟合后的图像见下图2:图2问题二函数
12、拟合结果4.3问题模型的建立和解答4.3.1问题模型的建立问题三归结为求直线。目标为使的各个观察值同按直线关系所预期的值的最大偏差为最小(即最大偏差极小化)。则对于任意的,令那么,可建立线性规划模型如下:4.3.2问题模型的解答要求解上述线性规划的方程,运用Lingo实现极为简洁(具体程序详见附录2)。得出1.130,-4.758。也就是说拟合成的直线为。拟合后的图像如图3:图3问题三函数拟合结果4.4问题模型的建立和解答问题四归结为求非线性曲线,其要求分别从问题一、问题二、问题三的拟合准则出发进行求解,故而可继续采用前三问中的原理,将线性部分的约束条件转变为非线性下的约束条件即可对该问进行求
13、解。4.4.1针对问题中的拟合准则求解问题对于拟合准则为偏差平方和最小,采用最小二乘法,用Matlab编程(详见附录1)得出1.425,-0.139,0.097,即可得出拟合的函数曲线方程为,图4问题四(1)函数拟合结果拟合后的图像如下图4:4.4.2针对问题中的拟合准则求解问题对于拟合准则为绝对偏差总和最小,通过建立如下非线性规划模型,和利用Matlab编程(详见附录1)得出1.000,-0.805,0.1601,即可得出拟合的函数曲线方程为。拟合后的图像如下图5:图5问题四(2)函数拟合结果4.4.3针对问题中的拟合准则求解问题对于拟合准则为绝对偏差总和最小,通过非线性规划模型,和利用Li
14、ngo编程(详见附录2)得出0.025,-0.766,0.469,即可得出拟合的函数曲线方程为,图6问题四(3)函数拟合结果拟合后的图像如下图6:4.5问题模型的建立和解答重新观察散点图的图像特点,充分考虑之前拟合曲线中的奇异点的位置,分别尝试拟合指数函数曲线和对数函数曲线,以找到关于量和量的最佳拟合曲线(采用最小二乘法)。4.5.1拟合指数函数曲线利用Matlab编程(详见附录1)得出拟合的函数曲线方程为拟合后的图像如下图7:图7问题五(1)函数拟合结果4.5.2拟合对数函数曲线利用Matlab编程(详见附录1)得出拟合的函数曲线方程为图8问题五(2)函数拟合结果拟合后的图像如下图8:由图像
15、观察可得,因拟合得的指数函数的图像较对数函数图像,以及前四问中拟合的直线函数图像、二次函数图像而言,指数函数的图像中的分散点在曲线上更为均匀地分布,奇异点较少,且更为美观,故而将量与量之间的关系拟合为指数函数的曲线更为合适。五、模型的评价5.1.1优点1、曲线拟合转变为数学规划模型,降低了算法的难度,增强了结果的准确性。2、建立的模型对于实际应用具有一定意义。5.1.2缺点1、算法较为简单,不够严谨。2、第五问中曲线拟合方法只采用了最小二乘法,方法较为单一,应尝试多种方法,以求得更为完善的模型。六、参考文献1王福昌,胡顺昌,张艳芳,最小一乘回归系数估计及其MATLAB实现,防灾科技学院学报,2
16、007年12月。2张小勇,徐香勤,基于LINGO的曲线拟合,2007年1月。3杨启帆,何勇,谈之奕,数学建模,浙江:浙江大学出版社,2006年5月。七、附录附录一:matlab相关程序%求解问题一、问题二、问题四(1)、问题五%数据为题目所给源数据,手动输入%运用最小二乘算法和最小一乘算法分别满足残差平方极小与残差绝对值之和极小的条件%计算结果为生成拟合函数的相关系数%大部分程序为顺序结构,部分运用了创建和调用函数的方法,结合循环结构完成算法*%第一问的求解%数据输入x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y=1
17、.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3;Y=polyfit(x,y,1);%对数据进行最小二乘拟合plot(x,y,*r);holdonezplot(Y,0,10);*%第二问的求解clearall;clc;%定义函数functionbetaL1norm=ladregression(y,X)n=length(y);p=size(X,2);X=ones(n,1)X;f=zeros(2*(p+1),1);ones(2*n,1);b=y;A=X,-X,eye(n),-eye(n);lb=zeros(2*(n+p+1),1);
18、x,fval=linprog(f,A,b,lb);%调用线性规划函数进行运算beta=x(1:p+1)-x(p+2:2*(p+1);L1norm=sum(abs(y-X*beta);ifabs(fval-L1norm)1e-6options=optimset(MaxIter,100000,LargeScale,off,Simplex,on);x,fval=linprog(f,A,b,lb,options);beta=x(1:p+1)-x(p+2:2*(p+1);end%分支结构L1norm=sum(abs(y-X*beta);%计算偏差绝对值之和%数据输入X=0.00.51.01.51.92.
19、53.03.54.04.55.05.56.06.67.67.68.59.010.0y=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3betaL1norm=ladregression(y,X)%调用自建函数*%第四问(1)的求解clearall;clc;x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y1=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3;c1=polyfit(x,y1,
20、2)tp1=0:0.01:12.3;x1=polyval(c1,tp1);plot(tp1,x1,x,y1,*r);*%第五问求解%猜测使用指数、对数函数来拟合题目所给数据%数据来源同上%运用matlab的拟合工具箱,以及设定拟合形式来进行最小二乘拟合%结果为函数的相关系数%程序为顺序结构*%指数函数拟合x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3;cftool(x,y)%调用拟合工具箱*%对数函数
21、拟合clearall;clc;x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3;f=fittype(a*log(x+b);%拟合自定义函数的形式fit1=fit(x,y,f,StartPoint,x(1)y(1);a=fit1.a;%a的值b=fit1.b;%b的值fdata=feval(fit1,x);%用拟合函数来计算yfigureplot(x,y,*r);holdonplot(x,fdata,r)
22、;holdofflegend(Oridata,Fittingdata);%作图例附录二:lingo相关程序!运用线性规划解决问题三,问题四(2)(3);!数据为题目所给源数据,手动输入;!运用lingo的线性规划工具进行求解,;!输出所求的最小距离;!程序为顺序结构;!问题三求解;model:sets:f/1.19/:x,y,u,v,e;endsetsdata:x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.81
23、2.3;enddatamin=max(f(i):u(i)+v(i);!目标函数;for(f(i):e(i)=y(i)-(b*x(i)+a);!限定条件;for(f(i):e(i)=u(i)-v(i);!限定条件;free(a);free(b);End*!第四问(2)(3)求解;model:sets:f/1.19/:x,y,u,v,e;endsetsdata:x=0.00.51.01.51.92.53.03.54.04.55.05.56.06.67.67.68.59.010.0;y=1.00.90.71.52.02.43.22.02.73.51.04.07.62.75.74.66.06.812.3;enddatamin=sum(f(i):u(i)+v(i);!第二种方法目标函数,使用时将下句注释;min=max(f(i):u(i)+v(i);!第三种方法目标函数,使用时将上句注释;for(f(i):e(i)=y(i)-c*x(i)2-b*x(i)-a);for(f(i):e(i)=u(i)-v(i);free(a);free(b);End*