插值拟合与MATLAB编程_第1页
插值拟合与MATLAB编程_第2页
插值拟合与MATLAB编程_第3页
插值拟合与MATLAB编程_第4页
插值拟合与MATLAB编程_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、如文档对你有用,请下载支持!插值、拟合与MATLAB编程相关知识在生产和科学实验中,自变量x与因变量y间的函数关系y=f有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。当要求知道其它点的函数值时,需要估计函数值在该点的值。为了完成这样的任务,需要构造一个比较简单的函数丫=*(刈,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于已知的值,寻找这样的函数y=*(x)有很多方法。根据测量数据的类型有以下两类处理观测数据的方法。(1)测量值是准确的,没有误差,一般用插值。(2)测量值与真实值有误差,一般用曲线拟合。在MATLAB中,无论是

2、插值还是拟合,都有相应的函数来处理。一、插值1、一维插值:已知离散点上的数据集(Xi,yi),(X2,y2)川l/yn),即已知在点集X=X1,X2,tll,Xn上的函数值Y=yi,y2,M,yn,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。MATLAB命令:yi=interp1(X,Y,xi,method)该命令用指定的算法找出一个一元函数y=f(X),然后以f(X)给出x处的值。Xi可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一:'nearest最近邻点插值,直接完成计算;'spline三

3、次样条函数插值;'linear线性插值(缺省方式),直接完成计算;'cubic三次函数插值;对于minxi,maxxi外的值,MATLAB使用外推的方法计算数值。例1:已知某产品从1900年到2010年每隔10年的产量为:75.995,91.972,105.711,123.203,131.699,150.697,179.323,203.212,226.505,249.633,256.344,267.893,计算出1995年的产量,用三次样条插值的方法,画出每隔一年的插值曲线图形,同时将原始的数据画在同一图上。解:程序如下year=1900:10:2010;product=75.

4、995,91.972,105.711,123.203,131.699,150.697,179.323,203.212,226.505,249.633,256.344,267.893p1995=interp1(year,product,1995)x=1900:2010;y=interp1(year,product,x,'cubic');plot(year,product,'o',x,y);计算结果为:p1995=252.9885o2、二维插值已知离散点上的数据集(。丫1,乙)八2。22),巾,(4,外,4),即已知在点集xyJZzyzlIhiyn上的函数值EzJH

5、z,构造一个解析函数(其图形为一曲面)通过这些点,并能够求出这些已知点以外的点的函数值,这一过程称为二维插值。MATLAB函数:Zi=interp2(X,Y,Z,Xi,Yi,method)该命令用指定的算法找出一个二元函数z=f(x,y),然后以f(x,y)给出(x,y)处的值。返回数据矩阵ZI,Xi,Yi是向量,且必须单调,乙和meshgrid(Xi,Yi)是同类型的。method可以下列方法之一:'nearest最近邻点插值,直接完成计算;'spline三次样条函数插值;'linear线性插值(缺省方式),直接完成计算;'cubic三次函数插值;例2:已知1

6、950年到1990年间每隔10年,服务年限从10年到30年每隔10年的劳动报酬表如下:表:某企业工作人员的月平均工资(元)、艮务年限年份、1020301950150.697169.592187.6521960179.323195.072250.2871970203.212239.092322.7671980226.505273.706426.7301990249.633370.281598.243试计算1975年时,15年工龄的工作人员平均工资解:程序如下:years=1950:10:1990;service=10:10:30;wage=150.697169.592187.652179.323

7、195.072250.287203.212239.092322.767226.505273.706426.730249.633370.281598.243;mesh(service,years,wage)%绘原始数据图w=interp2(service,years,wage,15,1975);%求点(15,1975)处的值计算结果为:235.6288例3:设有数据x=1,2,3,4,5,6,y=1,2,3,4,在由x,y构成的网格上,数据为:12,10,11,11,13,1516,22,28,35,27,2018,21,26,32,28,2520,25,30,33,32,20求通过这些点的插值

8、曲面。解:程序为:x=1:6;y=1:4;t=12,10,11,11,13,1516,22,28,35,27,2018,21,26,32,28,25;subplot(1,2,1)20,25,30,33,32,20如文档对你有用,请下载支持!mesh(x,y,t)x1=1:0.1:6;y1=1:0.1:4;x2,y2=meshgrid(x1,y1);t1=interp2(x,y,t,x2,y2,'cubic');subplot(1,2,2)mesh(x1,y1,t1);结果如右图。作业:已知某处山区地形选点测量坐标数据为:x=00.511.522.533.544.55y=00.5

9、11.522.533.544.555.56海拔高度数据为:z=89908785929196939087829296989995918986848284969895929088858483818580818289959693928986868285879899969788858283828589949593929186848888929394958987868381929296979896939584828184858581828080818590939584868198999897969584878081858283848790958688808281848586838281808287888

10、998999796989492871、画出原始数据图;2、画出加密后的地貌图,并在图中标出原始数据。二、拟合曲线拟合已知离散点上的数据集(x1,y)(x2,y2VH,函,yn),即已知在点集x1,x2川,.上的函数值丫1,丫2,出,外,构造一个解析函数(其图形为一曲线)使f(x)在原离散点xi上尽可能接近给定的yi值,这一过程称为曲线拟合。最常用的曲线拟合方法是n2Mf(xi)-yi最小二乘法,该方法是寻找函数f(x)使得y最小。MATLAIS!数:p=polyfit(x,y,n)p,s=polyfit(x,y,n)说明:x,y为数据点,n为多项式阶数,返回p为哥次从高到低的多项式系数向量p。

11、x必须是单调的。矩阵s用于生成预测值的误差估计。(见下一函数polyval)多项式曲线求值函数: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得出误差估计YDELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则YDELTA将至少包含50%的预测值。例5:求如下给定数据的拟合曲线,x=0.5,1.0,1.5,2.0,2.5,3.0,y=1.75,2.45,3.8

12、1,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')计算结果为:p=0.56140.82871.1560此结果表示拟合函数为:f(x)=0.5614x2+0.8287x+1.1560,用此函数拟合数据的效果如图所示。例2:由离散数据x0.1.2.3.4.5.6.7.8.91y.3.511.41.

13、61.9.6.4.81.52拟合出多项式。程序:x=0:.1:1;y=.3.511.41.61.9.6.4.81.52n=3;p=polyfit(x,y,n)xi=linspace(0,1,100);z=polyval(p,xi);%多项式求值plot(x,y,'o',xi,z,'k:',x,y,'b')legend(原始数据,阶加线)结果:16.7832-25.745910.9802-0.0035多项式为:16.7832x3-25.7459x2+10.9802x-0.0035曲线拟合图形:也可由函数给出数据。例3:x=1:20,y=x+3*si

14、n(x)程序:x=1:20;y=x+3*sin(x);p=polyfit(x,y,6)xi=linspace(1,20,100);z=polyval(p,xi);%?&?e?o?。”plot(x,y,'o',xi,z,'k:',x,y,'b')结果:p=0.0000-0.00210.0505-0.59713.6472-9.729511.3304再用10阶多项式拟合程序:x=1:20;y=x+3*sin(x);p=polyfit(x,y,10)xi=linspace(1,20,100);z=polyval(p,xi);plot(x,y,&#

15、39;o',xi,z,'k:',x,y,'b')结果:p=Columns1through70.0000-0.00000.0004-0.01140.1814-1.806511.2360Columns8through11-42.086188.5907-92.815540.267可用不同阶的多项式来拟合数据,但也不是阶数越高拟合的越好作业:1.已知x=0.1,0.8,1.3,1.9,2.5,3.1,y=1.2,1.6,2.7,2.0,1.3,0.5,利用其中的部分数据,分别用线性函数插值,3次函数插值,求x=2.0处的值。2,已知二元函数z=f(x,y)在点集D=(x,y)|x=0,1,2,3,4;y=0,123,4上的值

温馨提示

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

评论

0/150

提交评论