数据的插值与逼近_第1页
数据的插值与逼近_第2页
数据的插值与逼近_第3页
数据的插值与逼近_第4页
数据的插值与逼近_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 数据的插值与逼近数学建模课程1第二节 数据的最小二乘逼近最小二乘逼近理论1利用Matlab实现最小二乘逼近22一、最小二乘逼近理论最小二乘逼近的定义 插值所需的数据往往来源于观察测量,本身有一定的误差。要求插值曲线通过这些本身有误差的点,势必使结果更加不准确。 另外,如果由试验提供的数据量比较大,又容易使得插值多项式的次数过高而效果不理想。所以在对离散数据建立模型时,并不需要函数曲线一定要插值所有给定的数据点。 ,在取定的函数类 中,求定义1.对给定数据 即,使误差,的平方和最小,函数称为最小二乘解, 求的方法称为最小二乘逼近。 3一、最小二乘逼近理论 对离散数据点进行最小二乘逼近首先

2、要确定的是用什么类型的函数作为模型,然后通过计算求得该类函数中的参数。 按照求解参数在最小二乘逼近解中的地位,最小二乘分为线性最小二乘逼近和非线性最小二乘逼近。例如:线性最小二乘逼近非线性最小二乘逼近 线性最小二乘逼近的求解比非线性最小二乘逼近容易,一定条件下,非线性最小二乘逼近可以转化为线性最小二乘逼近。4一、最小二乘逼近理论线性最小二乘逼近第一步:先选定一组函数 r1(x), r2(x), rm(x), mn, 令 f(x)=a1r1(x)+a2r2(x)+ +amrm(x) (1)其中 a1,a2, am 为待定系数。 第二步: 确定a1,a2, am 的准则(最小二乘准则):使n个点(

3、xi,yi) 与曲线 y=f(x) 的距离i 的平方和最小 。记 问题归结为,求 a1,a2, am 使 J(a1,a2, am) 最小。5一、最小二乘逼近理论将J(a1,a2, am)看作是 a1,a2, am的m元函数。最小二乘问题就是这个m元函数的最小值问题,由极值的必要条件:得:其中:该方程组的解就是最小二乘问题的解6一、最小二乘逼近理论线性最小二乘拟合 f(x)=a1r1(x)+ +amrm(x)中函数r1(x), rm(x)的选取 1. 通过机理分析建立数学模型来确定 f(x);+f=a1+a2xf=a1+a2x+a3x2f=a1+a2x+a3x2f=a1+a2/xf=aebxf=

4、ae-bx 2. 将数据 (xi,yi) i=1, n 作图,通过直观判断确定 f(x):可化为线性最小二乘7一、最小二乘逼近理论非线性最小二乘逼近 如果要用非线性模型对离散数据进行最小二乘逼近,一般的方法是将其线性化,然后求解线性化以后的最小二乘逼近问题。 可线性化的非线性最小二乘逼近(线性化后为 )8一、最小二乘逼近理论可线性化的非线性最小二乘逼近(线性化后为 )9二、利用MATLAB实现最小二乘逼近利用MATLAB实现多项式最小二乘逼近 在MATLAB中,要利用多项式f(x)=a1xm+ +amx+am+1对离散数据进行线性拟合,可利用命令:a=polyfit(x,y,m)输出拟合多项式

5、系数a=a1, am , am+1 (数组))输入同长度的数组X,Y拟合多项式次数 要计算多项式在x处的值y可用以下命令计算: y=polyval(a,x)10二、利用MATLAB实现最小二乘逼近例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) %作出数据点和拟合曲线的图形11二、利用MATLAB实现最小二乘逼近2)计算结果: = -9.8108 20.1293

6、-0.0317原始数据及拟合曲线12二、利用MATLAB实现最小二乘逼近 下面在更多点比较2次和10次最小二乘逼近多项式的逼近效果 xi=linspace(0, 1, 100); % x-axis data for plotting z=polyval(p, xi); xi=linspace(0, 1, 100); % x-axis data for plotting z=polyval(p, xi); pp=polyfit(x, y, 10) ; zz=polyval(pp, xi); % evaluate 10th order polynomial plot(x, y, o , xi, z

7、, : , xi, zz) % plot data xlabel( x );ylabel( y=f(x) ); title( 2nd and 10th Order curve Fitting );13二、利用MATLAB实现最小二乘逼近2次和10次最小二乘多项式逼近效果比较14二、利用MATLAB实现最小二乘逼近利用MATLAB实现非线性最小二乘逼近对于非线性最小二乘逼近,在Matlab中有两种途径解决: (1)如果模型可以线性化,可先线性化后,再利用polyfit求解; (2)利用Matlab中直接求解非线性最小二乘逼近的两种函数 lsqcurvefit和lsqnonlin。例2. 在人口的

8、logistic模型中,人口总数y与时间t之间的关系满足 ,下表是某地区1971年2000年之间的人口统计数据,试确定logistic模型中的a,b。15二、利用MATLAB实现最小二乘逼近年人口总数年人口总数197133 815198634 520197233 981198734 507197334 004198834 509197434 165198934 521197534 212199034 513197634 327199134 515197734 344199234 517197834 458199334 519197934 498199434 519198034 47619953

9、4 521198134 483199634 521198234 488199734 520198334 513199834 507198434 497199934 509198534 511200034 52116二、利用MATLAB实现最小二乘逼近解:先线性化,设y为人口总数,t年份1970,即。令,则logistic模型可线性化为 。下面在Matlab下编程进行最小二乘逼近: clear;clc;t1:30;y=33815,33981,34004,34165,34212,34327,34344,34458,34498,34476,34483,34488,34513,34497,34511,

10、34520, 34507,34509,34521,34513,34515,34517,34519,34519,34521,34521,34520,34507,34509,34521for i = 1:30, x(i)=exp(-t(i); yy(i)=1/y(i); %线性化end17二、利用MATLAB实现最小二乘逼近程序运行结果%对线性化后的模型用polyfit进行一次多项式最小二乘逼近pp=polyfit(x,yy,1); %对逼近结果绘图for j=1:30 Y(j)=1/(pp(2)+pp(1)*exp(-j);endplot(t,Y);app(2)= 0.182105,bpp(1)

11、= 0.2902104,18二、利用MATLAB实现最小二乘逼近 Matlab提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和lsqnonlin。两个命令都要先建立M-文件,在其中定义函数f(x),但两者定义f(x)的方式是不同的。1. lsqcurvefit已知数据点:xdata=(xdata1,xdata2,xdatan), ydata=(ydata1,ydata2,ydatan) fun是一个事先建立的定义函数F(x,xdata) 的M-文件, 自变量为x和xdata说明:x = lsqcurvefit (fun,x0,xdata,ydata,options);迭代初值已知

12、数据点选项见无约束优化19二、利用MATLAB实现最小二乘逼近输入格式为:(1)x=lsqcurvefit (fun,x0,xdata,ydata);(2)x=lsqcurvefit (fun,x0,xdata,ydata,options);(3)x=lsqcurvefit (fun,x0,xdata,ydata,options,grad); 例:用下面一组数据拟合 中的参数a,b,k.20二、利用MATLAB实现最小二乘逼近该问题即解最优化问题:1)编写M-文件 curvefun1.m function f=curvefun1(x,tdata) f=x(1)+x(2)*exp(-0.02*x

13、(3)*tdata) %其中 x(1)=a; x(2)=b;x(3)=k;2)输入程序tdata=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; x=lsqcurvefit (curvefun1,x0,tdata,cdata) f= curvefun1(x,tdata) 21二、利用MATLAB实现最小二乘逼近3)运算结果为:f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0

14、.0063 x = 0.0063 -0.0034 0.25424)结论:a=0.0063, b=-0.0034, k=0.254222二、利用MATLAB实现最小二乘逼近2. lsqnonlin lsqnonlin用以求含参量x(向量)的向量值函数 f(x)=(f1(x),f2(x),fn(x)T 中的参量x,使得: 最小。 其中 fi(x)=f(x,xdatai,ydatai) =F(x,xdatai)-ydatai23二、利用MATLAB实现最小二乘逼近说明:x= lsqnonlin (fun,x0,options);fun是一个事先建立的定义函数f(x)的M-文件,自变量为x迭代初值选项

15、见无约束优化输入格式为: 1) x=lsqnonlin(fun,x0); 2) x= lsqnonlin (fun,x0,options); 3) x= lsqnonlin (fun,x0,options,grad);24二、利用MATLAB实现最小二乘逼近利用lsqnonlin计算上例: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)

16、*tdata)- cdata2)输入命令: x0=0.2,0.05,0.05;x=lsqnonlin(curvefun2,x0)f= curvefun2(x)25二、利用MATLAB实现最小二乘逼近 3)运算结果为 f =1.0e-003 *(0.2322 -0.1243 -0.2495 -0.2413 -0.1668 -0.0724 0.0241 0.1159 0.2030 0.2792 x =0.0063 -0.0034 0.25424)结论:即拟合得a=0.0063 b=-0.0034 k=0.2542可以看出,两个命令的计算结果是相同的.26二、利用MATLAB实现最小二乘逼近结束语(1)无论是何种方法得到的逼近结果,在对结果进行评价时,主要采用最大误差、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论