《一位插值二维插值课件.ppt》由会员分享,可在线阅读,更多相关《一位插值二维插值课件.ppt(28页珍藏版)》请在三一办公上搜索。
1、实验十二 实验数据的插值,一、实验目的,学会MATLAB软件中利用给定数据进行插值运算的方法。,二、相关知识,在生产和科学实验中,自变量 与因变量 间的函数关系 有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂需要较大的计算量而只能计算函数在若干点的函数值或导数值,当要求知道其它点的函数值时,需要估计函数值在该点的值。为了完成这样的任务,需要构造一个比较简单的函数 ,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于或者接近已知的值,寻找这样的函数 有很多方法。根据测量数据的类型有以下两类处理观测数据的方法。,二、相关知识,(1)测量数据的数据量较小并
2、且数据值是准确的,或者基本没有误差,这时我们一般用插值的方法来解决问题。(2)测量数据的数据量较大或者测量值与真实值有误差,这时一般用曲线拟合的方法来解决问题。为了完成这样的任务,需要构造一个比较简单的函数 ,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于或者接近已知的值,寻找这样的函数 有很多方法。根据测量数据的类型有以下两类处理观测数据的方法。,(1)测量数据的数据量较小并且数据值是准确的,或者基本没有误差,这时我们一般用插值的方法来解决问题。(2)测量数据的数据量较大或者测量值与真实值有误差,这时一般用曲线拟合的方法来解决问题。在MATLAB中,无论是插值还是拟合,都有相应的
3、命令来处理。本实验讨论插值。,一维插值已知离散点上的数据集 ,即已知在点集 上的函数值 ,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。完成这一过程可以有多种方法,我们现在在MATLAB中,无论是插值还是拟合,都有相应的命令来处理。本实验讨论插值。,一维插值已知离散点上的数据集 ,即已知在点集 上的函数值 ,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。完成这一过程可以有多种方法,我们现在利用MATLAB提供的函数interp1,这个函数的调用格式为:yi=interp1(X,Y,xi,method
4、) 该命令用指定的算法找出一个一元函数 ,然后以 给出 处的值。,xi 可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一: nearest:最近邻点插值,直接完成计算; spline:三次样条函数插值;linear:线性插值(缺省方式),直接完成计算利用MATLAB提供的函数interp1,这个函数的调用格式为:yi=interp1(X,Y,xi,method) 该命令用指定的算法找出一个一元函数 ,然后以 给出 处的值。,xi 可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一: nearest:最近邻点插值,直接完成计算;
5、spline:三次样条函数插值;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年的产量,用三次样条插值的方法,画出每隔一年的插值曲线图形,同时将原始的数据画在同一图上。 cubic:三次函数插值;对于minxi,ma
6、xxi外的值,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.995,91.972,105.711,123.203,131.699,150.697,179.323,20
7、3.212,226.505,249.633,256.344,267.893p1995=interp1(year,product,1995,spline),x=1900:2010;y=interp1(year,product,x,spline);plot(year,product,o,x,y);计算结果为:p1995=253.2278 如果用线性插值,则程序的后四行改为:解:程序如下year=1900:10:2010;product=75.995,91.972,105.711,123.203,131.699,150.697,179.323,203.212,226.505,249.633,256.
8、344,267.893p1995=interp1(year,product,1995,spline),x=1900:2010;y=interp1(year,product,x,spline);plot(year,product,o,x,y);计算结果为:p1995=253.2278 如果用线性插值,则程序的后四行改为:p1995=interp1(year,product,1995,linear) x=1900:2010;y=interp1(year,product,x,linear);plot(year,product,o,x,y);计算结果为:p1995=252.9885,这两种计算方法得到
9、的数据有微小的差异,这种差异我们从两个图形上也能够看到,主要表现在节点(那些绘制成圆点的点)的附近。前者是光滑的,后者有角点出现。p1995=interp1(year,product,1995,linear) x=1900:2010;y=interp1(year,product,x,linear);plot(year,product,o,x,y);计算结果为:p1995=252.9885,这两种计算方法得到的数据有微小的差异,这种差异我们从两个图形上也能够看到,主要表现在节点(那些绘制成圆点的点)的附近。前者是光滑的,后者有角点出现。,二维插值已知离散点上的数据集 即已知在点集 上的函数值 ,
10、构造一个解析函数 (其图形为一曲面)通过这些点,并能够求出这些已知点以外的点的函数值,这一过程称为二维插值。MATLAB命令:Zi=interp2(X,Y,Z,Xi,Yi,method)该命令用指定的算法找出一个二元函数 ,然后以 给出 处的值。返回数据矩阵Zi,Xi,Yi是向量,且必须单调,Zi和meshgrid(Xi,Yi)是同类型的。,method可以下列方法之一:nearest:最近邻点插值,直接完成计算; spline:三次样条函数插值;linear:线性插值(缺省方式),直接完成计算 cubic:三次函数插值; MATLAB命令:Zi=interp2(X,Y,Z,Xi,Yi,met
11、hod)该命令用指定的算法找出一个二元函数 ,然后以 给出 处的值。返回数据矩阵Zi,Xi,Yi是向量,且必须单调,Zi和meshgrid(Xi,Yi)是同类型的。,method可以下列方法之一:nearest:最近邻点插值,直接完成计算; spline:三次样条函数插值;linear:线性插值(缺省方式),直接完成计算 cubic:三次函数插值;,例2:已知1950年到1990年间每隔10年,服务年限从10年到30年每隔10年的劳动报酬表如下:某企业工作人员的月平均工资(元)试计算1975年时,15年工龄的工作人员平均工资。,解:程序如下:years=1950:10:1990;service
12、=10:10:30;wage=150.697 169.592 187.652 179.323 195.072 250.287试计算1975年时,15年工龄的工作人员平均工资。,解:程序如下:years=1950:10:1990;service=10:10:30;wage=150.697 169.592 187.652 179.323 195.072 250.287 203.212 239.092 322.767 226.505 273.706 426.730 249.633 370.281 598.243w=interp2(service,years,wage,15,1975)计算结果为:23
13、5.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,25 203.212 239.092 322.767 226.505 273.706 426.730 249.633 370.281 598.243w=interp2(service,years,wage,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,2
14、8,35,27,2018,21,26,32,28,2520,25,30,33,32,20画出原始网格图和将网格细化为间隔为0.1后的插值网格图。解:程序为:x=1:6;y=1:4;,t=12,10,11,11,13,1516,22,28,35,27,20 18,21,26,32,28,25; 20,25,30,33,32,20subplot(1,2,1)mesh(x,y,t)20,25,30,33,32,20画出原始网格图和将网格细化为间隔为0.1后的插值网格图。解:程序为:x=1:6;y=1:4;,t=12,10,11,11,13,1516,22,28,35,27,20 18,21,26,3
15、2,28,25; 20,25,30,33,32,20subplot(1,2,1)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);,结果如图。左图是给定的网格处的数据,右图是插值后的数据。,三、实验内容,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已知二元函数 在点集 上的值为 ,,其中,左上角位置表示 ,右下角位置表示 画出原始网格图和将网格细化为间隔为0.1后的插值网格图。*3学习函数interp3(X,Y,Z,V,X1,Y1,Z1,method) , 对MATLAB提供的flow数据实现三维插值。4完成实验报告。,
链接地址:https://www.31ppt.com/p-1482594.html