版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验四.Matlab拟合一、实验目的直观了解拟合基本内容;掌握最小二乘拟合的基本原理;掌握用matlab命令求解拟合问题;掌握matlab拟合工具箱的基本使用方法二.实验原理与方法在科学计算中经常要建立实验数据的数学模型。给定函数的实验数据,需要用比较简单和合适的函数来逼近(或拟合)实验数据。这种逼近的特点是:(a) 适度的精度是需要的;(b) 实验数据有小的误差;(c) 对于某些问题,可能有某些特殊的信息能够用来选择实验数据的数学模型。曲线拟合的数学描述描述:已知一组(二维)数据,即平面上 个点, 互不相同。 寻求一个函数(曲线)使在某种准则下与所有数据点最为接近,即拟合的最好,不要求曲线(
2、面)通过所有数据点,而是要求它反映对象整体的变化趋势。逼近离散数据的基本方法就是曲线拟合,常采用最小二乘拟合。最小二乘拟合分为线性最小二乘拟合与非线性最小二乘拟合1线性最小二乘法(一)线性最小二乘法的基本思路:第一步:先选定一组基函数(线性无关) ( m<n), 构造函数其中 为待定系数。第二步: 确定系数,使n个点与曲线的距离的平方和最小,该准则称为最小二乘准则,求系数的方法称为线性最小二乘拟合法。问题归结为,求 a1,a2, am 使 J(a1,a2, am) 最小。(1)记 则为的n元二次函数。由数学分析(或高等数学)的极值理论,J 达到最小的充分必要条件是L满足于是得到求使J 达
3、到最小的 的方法是求解线性方程组:也即求解线性方程组:若记,则线性方程组可表示为:由于当线性无关时,列满秩,可逆所以上述方程组有唯一解:(称为该线性方程组的最小二乘意义下的解)。此即线性最小二乘拟合所得系数。用作线性最小二乘拟合的误差也可以考虑以下两种形式:1最小平方误差:2最大偏差:(二)基函数组的选取线性最小二乘拟合 f(x)=a1r1(x)+ +amrm(x)中函数r1(x), rm(x)的选取 1. 通过机理分析建立数学模型来确定f(x),如果通过机理分析能知道和之间的关系,则很容易可以确定。+2. 若无法知道和之间的关系,则可以通过对数据作图,直观的判断该组数据应用什么样的曲线去拟和
4、。f=a1+a2x f=a1+a2x+a3x2f=aebx+f=a1+a2/x常用曲线有如下几种:(1) 直线:(2) 多项式:(一般m=2,3,不宜太 高)(3) 双曲线(一支):,拟合前需做变量替换转换成多项式,这样做比较简单。(4) 指数函数:,拟合前需做变量替换,转换成,这样做比较简单在实际计算过程中,面对一组数据,到底用什么曲线拟合好,可以在直观判断的基础上,选几种曲线分别拟合,然后作比较,选择拟合效果好的曲线。用MATLAB作线性最小二乘拟合1. 作多项式f(x)=a1xm+ +amx+am+1拟合,也即选取基函数可利用命令:a=polyfit(x,y,m)说明:为原始样本点构成的
5、向量, 为选定的多项式的阶数,为拟合得到的多项式的系数,从高次项到低次项降幂排列,为长度为的数组。注:多项式在x处的值y可用以下命令计算:y=polyval(a,x)2选取基函数:建立超定方程组: 其中使用matlab命令求解:或者例 对下面一组数据作二次多项式拟合xi01yi-0.4471.9783.286.167.087.347.669.569.489.3011.2即要求 出二次多项式:中的系数:,使得达到最小解法1用解方程组的方法1)输入以下命令:x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.3
6、4 7.66 9.56 9.48 9.30 11.2; R=(x.2)' x' ones(11,1); A=Ry'计算结果: = -9.8108 20.1293 -0.0317所求拟合多项式解法2用多项式拟合的命令1)输入以下命令: x=0:0.1:1; y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,'k+',x,z,'r') %作出数据点和拟合曲线的图形2)计算结果: = -9.
7、8108 20.1293 -0.0317所求拟合多项式两种方法是等价的,所求拟合系数也是相同的。用MATLAB作非线性最小二乘拟合非线性最小二乘是假设是待定系数的非线性函数,在最小二乘意义下求解其系数。例如,前面所述常用的双曲线和指数曲线就是非线性最小二乘拟合中最常用的非线性函数,只不过在上面使用中通过变量代换将它们转变成线性最小二乘拟合方法。对于给定的实验数据,通常应根据实验数据的走向、趋势选择合适的数学模型,即拟合函数。例如,当实验数据具有单调性和凸性时,可选择下述适当的数学模型来拟合实验数据:其中为待定参数。Matlab的提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和ls
8、qnonlin。两个命令都要先建立M-文件,在其中定义函数F(x),但两者定义F(x)的方式是不同的.命令一:lsqcurvefit已知数据点: xdata=(xdata1,xdata2,xdatan), ydata=(ydata1,ydata2,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数F(x,xdata)=(F(x,xdata1),F(x,xdatan)T中的参变量x(向量),使得 各种使用格式为:(1) x = lsqcurvefit (fun,x0,xdata,ydata);(2) x =lsqcurvefit (fun,x0,xdata,ydata,op
9、tions);(3) x=lsqcurvefit (fun,x0,xdata,ydata,options,grad);(4)x, options=lsqcurvefit (fun,x0,xdata,ydata,);(5)x,options,funval=lsqcurvefit(fun,x0,xdata,ydata,);(6) x,options,funval,Jacob = lsqcurvefit (fun,x0,xdata, xdata,ydata,);例: 用下面一组数据拟合 中的参数a,b,k,数据如下:10020030040050060070080090010004.544.995.3
10、55.655.906.106.266.396.506.59该问题即求解最优化问题:应用lsqcurvefit求解,此时:1)编写M-文件 curvefun1.mfunction f=curvefun1(x,tdata) %x为由待拟合参数%所组成的数组,其中f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %f为长度与tdata%相同的数组2)建立脚本文件qwe.mtdata=100:100:1000cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;x0=0.2,0.05,0.05; % x0可看作待拟
11、合参数的近似值,或者算法%的初始值x=lsqcurvefit ('curvefun1',x0,tdata,cdata)f= curvefun1(x,tdata) % 计算在数据点上的拟合误差。命令二: lsqnonlin已知数据点: xdata=(xdata1,xdata2,xdatan)ydata=(ydata1,ydata2,ydatan)lsqnonlin用以求含参量x(向量)的向量值函数 f(x)=(f1(x),f2(x),fn(x)T中的参量x,使得最小其中 输入格式为: 1) x=lsqnonlin(fun,x0); 2) x= lsqnonlin (fun,x0,
12、options); 3) x= lsqnonlin (fun,x0,options,grad); 4) x,options= lsqnonlin (fun,x0,);5) x,options,funval= lsqnonlin (fun,x0,)说明:fun是一个事先建立的定义函数f(x)的M-文件,自变量为x,为由待拟和参数所构成的数组, x0为初值(或者看作待拟合参数的近似值)。例: 用下面一组数据拟合 中的参数a,b,k,数据如下:10020030040050060070080090010004.544.995.355.655.906.106.266.396.506.59用命令lsqno
13、nlin求解,此时1)编写M-文件 curvefun2.m function f=curvefun2(x) tdata=100:100:1000; cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata%函数curvefun2的自变量是x, cdata和tdata是已知参数,故将cdata tdata的值写在curvefun2.m中.2)输入命令: x0=0.2,0.05,0.05;x=lsqnonlin('curvefun2',
14、x0)% x为拟合所得最优值。f= curvefun2(x) %计算在数据点上的拟合误差。3)运算结果为:x=0.0063 -0.0034 0.2542f=1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413 -0.1668 -0.0724 0.0241 0.1159 0.2030 0.27924)结论:即拟合得a=0.0063 b=-0.0034 k=0.2542Matlab拟合工具箱简介Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面简单介绍如何使用这个工具箱。1、在command window输
15、入数据:x=110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475;y=5 10 15 20 25 30 35 40 45 50;假设我们要拟合的函数形式是:且2、启动曲线拟合工具箱, 在command window输入Cftool3、进入曲线拟合工具箱界面“Curve Fitting tool”(1)点击“Data”按钮,弹出“Data”窗口;(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Creat
16、e data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;(3)点击“Fitting”按钮,弹出“Fitting”窗口;(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:1Custom Equations:用户自定义的函数类型 .2.Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x) 3.Fourier:傅立叶逼近,有7种类型,基础型是
17、 a0 + a1*cos(x*w) + b1*sin(x*w) 4.Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(-(x-b1)/c1)2) 5.Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving 6.Polynomial:多形式逼近,有9种类型,linear 、quadratic 、cubic 、4-9th degree 7.Power:幂逼近,有2种类型,a*xb 、a*xb + c 8.Rational:有理数逼近,分子、分母共有的类型是linear、quadratic
18、、cubic、4-5th degree;此外,分子还包括constant型 9.Smoothing Spline:平滑逼近 10.Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1) 11.Weibull:只有一种,a*b*x(b-1)*exp(-a*xb)选择好所需的拟合曲线类型及其子类型,并进行相关设置:(1)如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;(2)如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear E
19、quations线性等式”和“General Equations构造等式”两种标签。在本例中选Custom Equations,点击“New”按钮,选择“General Equations”标签,输入函数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。(5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果,如下例:general model:f(x) = a*x*x+b*xCoefficients (with 95% confidence bounds): a = 0.009194 (0.009019, 0.00937) b = 1.78e-
20、011 (fixed at bound)Goodness of fit: SSE: 6.146R-square: 0.997Adjusted R-square: 0.997RMSE: 0.8263同时,也会在工具箱窗口中显示拟合曲线。这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在“Fitting”窗口点击“New fit”按钮,按照步骤进行一次新的拟合。不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变量只能有一个。三、实验内容1已知观测点数据如下x01y-0.4471
21、.9783.286.167.087.347.669.569.489.31.12分别用3次和6次多项式拟合该组数据,并绘出拟合效果图。2.弹簧在力F的作用下伸长x厘米。F和x在一定的范围内服从虎克定律。试根据下列数据确定弹性系数k,并给出不服从虎克定律时的近似公式。X1247912131517F11.715.618.819.620.621.13.某一通信公司在一次施工中,需要在水面宽为20m的河沟底沿线走向铺设一条沟底光缆.在铺设光缆之前需要对沟底的地形做初步探测,从而估计所需光缆的长度,为工程预算提供依据.探测到一组等分点位置的深度数据如下表所示.分点0123456789深度9.018.967.967.968.029.0510.1311.1812.2613.28分点10111213141516171819深度13.3212.6111.2957.958.869.8110.80分点20深度10.93假设所铺设的光缆足够柔软,在铺设过程中光缆触地走势光滑,紧贴地面,并且忽略水流对光缆的冲击.(1) 预测通过这条河沟所需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地产公司员工考核制度
- 机电队班组长考核制度
- 小城镇办公室考核制度
- 管网维护人员考核制度
- 中小学生考试考核制度
- 农村道路保洁考核制度
- 印染企业安全考核制度
- 技术中心绩效考核制度
- 设计公司成本考核制度
- 服装企业绩效考核制度
- 广东深圳市华睿欣能投资控股集团有限公司2026届校园招聘笔试备考题库及答案解析
- 2026浙江省创新投资集团有限公司招聘备考题库含答案详解(能力提升)
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 探秘黄河-中国的河流(第三课时)设计
- 【初中语文】九年级语文春季开学第一课(新教材统编版)
- 2026年ESG专项知识考试题目
- 江西省水投集团招聘笔试题库2026
- 财务安全事故案例讲解
- 2026年上海市春季高考卷试题真题及答案详解(精校打印版)
- 中小学英语教师课堂话语分析研究
- 0-6岁智障儿童康复教育发展性课程评量
评论
0/150
提交评论