已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
曲线拟合(curve-fitting):工程实践中,用测量到的一些离散的数据求一个近似的函数来拟合这组数据,要求所得的拟合曲线能最好的反映数据的基本趋势(即使最好地逼近,而不必满足插值原则。因此没必要取=,只要使尽可能地小)。原理:给定数据点。求近似曲线。并且使得近似曲线与的偏差最小。近似曲线在该点处的偏差,i=1,2,.,m。 常见的曲线拟合方法: 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小 3.使偏差平方和最小 最小二乘法: 按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。推导过程: 1. 设拟合多项式为: 2. 各点到这条曲线的距离之和,即偏差平方和如下: 3. 问题转化为求待定系数.对等式右边求偏导数,因而我们得到了: . 4、 把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵: 5. 将这个范德蒙得矩阵化简后可得到: 6. 也就是说X*A=Y,那么A = (X*X)-1*X*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。MATLAB实现:MATLAB提供了polyfit()函数命令进行最小二乘曲线拟合。调用格式:p=polyfit(x,y,n) p,s= polyfit(x,y,n) p,s,mu=polyfit(x,y,n)x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s包括R(对x进行QR分解的三角元素)、df(自由度)、normr(残差)用于生成预测值的误差估计。 p,s,mu=polyfit(x,y,n)在拟合过程中,首先对x进行数据标准化处理,以在拟合中消除量纲等影响,mu包含标准化处理过程中使用的x的均值和标准差。polyval( )为多项式曲线求值函数,调用格式: y=polyval(p,x) y,DELTA=polyval(p,x,s)y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。y,DELTA=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。如下给定数据的拟合曲线:x=0.5,1.0,1.5,2.0,2.5,3.0,y=1.75,2.45,3.81,4.80,7.00,8.60。解:MATLAB程序如下:x=0.5,1.0,1.5,2.0,2.5,3.0;y=1.75,2.45,3.81,4.80,7.00,8.60;p=polyfit(x,y,2)x1=0.5:0.05:3.0;y1=polyval(p,x1);plot(x,y,*r,x1,y1,-b)运行结果如图1计算结果为:p =0.5614 0.8287 1.1560即所得多项式为y=0.5614x2+0.08287x+1.15560 图1 最小二乘法曲线拟合示例对比检验拟合的有效性:例:在0,区间上对正弦函数进行拟合,然后在0,2区间画出图形,比较拟合区间和非拟合区间的图形,考察拟合的有效性。在MATLAB中输入如下代码:clearx=0:0.1:pi;y=sin(x);p,mu=polyfit(x,y,9)x1=0:0.1:2*pi;y1=sin(x1);%实际曲线y2=polyval(p,x1);%根据由区间0到pi上进行拟合得到的多项式计算0到2pi上的函数值, %需要注意的是polyval()返回的函数值在pi到2pi上并没有进行拟合plot(x1,y2,k*,x1,y1,k-)运行结果:p = 0.0000 0.0000 -0.0003 0.0002 0.0080 0.0002 -0.1668 0.0000 1.0000 0.0000mu = R: 10x10 double df: 22 normr: 1.6178e-07MATLAB的最优化工具箱还提供了lsqcurvefit()函数命令进行最小二乘曲线拟合(Solve nonlinear curve-fitting (data-fitting) problems in least-squares sense)。调用格式:x = lsqcurvefit(fun,x0,xdata,ydata)x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)x = lsqcurvefit(problem)x,resnorm = lsqcurvefit(.)x,resnorm,residual = lsqcurvefit(.)x,resnorm,residual,exitflag = lsqcurvefit(.)x,resnorm,residual,exitflag,output = lsqcurvefit(.)x,resnorm,residual,exitflag,output,lambda = lsqcurvefit(.)x,resnorm,residual,exitflag,output,lambda,jacobian = x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;lb、ub为解向量的下界和上界 ,若没有指定界,则lb= ,ub= ;options为指定的优化参数;fun为拟合函数,其定义方式为:x = lsqcurvefit(myfun,x0,xdata,ydata),其中myfun已定义为 function F = myfun(x,xdata)F = % 计算x处拟合函数值fun的用法与前面相同;resnorm=sum (fun(x,xdata)-ydata).2),即在x处残差的平方和;residual=fun(x,xdata)-ydata,即在x处的残差;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x处的Lagrange乘子;jacobian为解x处拟合函数fun的jacobian矩阵。例:lsqcurvefit()优化程序Data = . 0.0000 5.8955 0.1000 3.5639 0.2000 2.5173 0.3000 1.9790 0.4000 1.8990 0.5000 1.3938 0.6000 1.1359 0.7000 1.0096 0.8000 1.0343 0.9000 0.8435 1.0000 0.6856 1.1000 0.6100 1.2000 0.5392 1.3000 0.3946 1.4000 0.3903 1.5000 0.5474 1.6000 0.3459 1.7000 0.1370 1.8000 0.2211 1.9000 0.1704 2.0000 0.2636;t = Data(:,1);y = Data(:,2);% axis(0 2 -0.5 6) plot(t,y,ro)title(Data points)%We would like to fit the function y = c(1)*exp(-lam(1)*t) + c(2)*exp(-lam(2)*t) to the data%The lsqcurvefit function solves this type of problem easily.%To begin, define the parameters in terms of one variable x:%x(1) = c(1)%x(2) = lam(1)%x(3) = c(2)%x(4) = lam(2)%Then define the curve as a function of the parameters x and the data t:F = (x,xdata)x(1)*exp(-x(2)*xdata) + x(3)*exp(-x(4)*xdata);x0 = 1 1 1 0;x,resnorm,exitflag,output = lsqcurvefit(F,x0,t,y)hold onplot(t,F(x,t)hold offFsumsquares = (x)sum(F(x,t) - y).2);opts = optimset(LargeScale,off);xunc,ressquared,eflag,outputu = .fminunc(Fsumsquares,x0,opts)fprintf(There were %d iterations using fminunc, . and %d using lsqcurvefit.n, . outputu.iterations,output.iterations)fprintf(There were %d function evaluations using fminunc, . and %d using lsqcurvefit., . outputu.funcCount,output.funcCount)type fitvectorx02 = 1 0;F2 = (x,t) fitvector(x,t,y);x2,resnorm2,exitflag2,output2 = lsqcurvefit(F2,x02,t,y)fprintf(There were %d function evaluations using the 2-d . formulation, and %d using the 4-d formulation., . output2.funcCount,output.funcCount)x0bad = 5 1 1 0;xbad,resnormbad,exitflagbad,outputbad = . lsqcurvefit(F,x0bad,t,y)hold onplot(t,F(xbad,t),g)legend(Data,Global fit,Bad local fit,Location,NE)hold offfprintf(The residual norm at the good ending point is %f, . and the residual norm at the bad ending point is %f., . resnorm,resnormbad)displayEndOfDemoMessage(mfilename)拟合效果如下:直线的最小二乘拟合:ya+bx式中有两个待定参数,a代表截距,b代表斜率。对于等精度测量所得到的N组数据(xi,yi),i1,2,N,xi值被认为是准确的,所有的误差只联系着yi。下面利用最小二乘法把观测数据拟合为直线。 用最小二乘法估计参数时,要求观测值yi的偏差的加权平方和为最小。对于等精度观测值的直线拟合来说,可使下式的值最小:上式分别对a、b求偏导得:整理后得到方程组:解上述方程组便可求得直线参数a和b的最佳估计值。1、 可看成是一阶多项式拟合,跟前面曲线拟合方法一样。2、 利用linefit()函数进行最小二乘的直线拟合 使用: clear x=0.5 1 1.5 2 2.5 3; y= 1.75 2.45 3.81 4.8 8 8.6; k,b=linefit(x,y) %得到斜率k和常数b y1=polyval(k,b,x); plot(x,y1,k-,x,y,k*)MATLAB一元到多元线性回归方程的计算和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学三年级数学两位数乘两位数笔算过关作业试题带答案
- 两位数加两位数计算水平考核试题
- 二年级数学100以内三数加减法混合运算题水平测试训练题大全附答案
- 营销策划 -莱绅通灵FINE系列珠宝发布会
- 【生物】基因工程的应用 2023-2024学年高二生物同步课件(人教版2019选择性必修3)
- 2024年03月广东肇庆广宁县赴肇庆学院招考聘用教师80人笔试参考题库后附答案详解
- 2024年03月四川省泸州市龙马潭区2024年上半年公开考试招聘23名事业单位工作人员220笔试参考题库附带答案详解
- 2024年02月陕西省澄城县政府序列事业单位2024年公开招考(募)73名工作人员笔试参考题库附带答案详解
- 2024年02月重庆市丰都县事业单位2024年第一季度公开招聘42名工作人员401笔试参考题库附带答案详解
- 2024年02月苏州工业园区唯亭学校2024年招聘1名临聘工作人员笔试参考题库后附答案详解
- 海商法-全套课件讲课稿
- 中国主要保险柜生产基地介绍
- 化工课件-化工反应过程之固定床反应器详细解读
- 矿山六类事故案例警示教育课件
- 哈姆雷特市公开课金奖市赛课一等奖课件
- 2022国家GCP培训考试题库及完整答案(全优)
- 血生化血常规的意义
- 绿色建筑案例分析
- 启明星辰产品介绍课件
- 《民法典》合同编实务培训课件
- um-joyo c2001跨平台监控防误一体化系统使用说明书
评论
0/150
提交评论