《matlab编程:插值》由会员分享,可在线阅读,更多相关《matlab编程:插值(34页珍藏版)》请在金锄头文库上搜索。
1、数学建模与数学实验后勤工程学院数学教研室插 值1实验目的实验内容2、掌握用数学软件包求解插值问题。1、了解插值的基本内容。1一维插值2二维插值 3实验作业2拉格朗日插值分段线性插值三次样条插值一 维 插 值一、插值的定义二、插值的方法三、用Matlab解插值问题返回3返回二维插值一、二维插值定义二、网格节点插值法三、用Matlab解插值问题最邻近插值分片线性插值双线性插值网格节点数据的插值散点数据的插值4一维插值的定义已知 n+1个节点其中互不相同,不妨设求任一插值点处的插值节点可视为由 产生,, 表达式复杂,, 或无封闭形式,, 或未知.。5构造一个(相对简单的)函数通过全部节点, 即再用计
2、算插值,即返回 6称为拉格朗日插值基函数。已知函数f(x)在n+1个点x0,x1,xn处的函数值为 y0,y1,yn 。求一n次多项式函数Pn(x),使其满足:Pn(xi)=yi,i=0,1,n.解决此问题的拉格朗日插值多项式公式如下其中Li(x) 为n次多项式:拉格朗日(Lagrange)插值7拉格朗日(Lagrange)插值特别地:两点一次(线性)插值多项式:三点二次(抛物)插值多项式:8拉格朗日多项式插值的 这种振荡现象叫 Runge现象采用拉格朗日多项式插值:选取不同插值 节点个数n+1,其中n为插值多项式的次数,当n 分别取2,4,6,8,10时,绘出插值结果图形.例返回To Mat
3、lablch(larg1)9分段线性插值计算量与n无关;n越大,误差越小. xjxj-1xj+1x0xnxoy10To MATLABxch11,xch12 ,xch13, xch14 返回例用分段线性插值法求插值,并观察插值误差.1.在-6,6中平均选取5个点作插值(xch11)4.在-6,6中平均选取41个点作插值(xch14)2.在-6,6中平均选取11个点作插值(xch12)3.在-6,6中平均选取21个点作插值(xch13)11比分段线性插值更光滑。 xyxi-1 xiab在数学上,光滑程度的定量描述是:函数(曲 线)的k阶导数存在且连续,则称该曲线具有k阶光 滑性。光滑性的阶次越高,
4、则越光滑。是否存在较低 次的分段多项式达到较高阶光滑性的方法?三次 样条插值就是一个很好的例子。三次样条插值12三次样条插值g(x)为被插值函数。13例用三次样条插值选取11个基点计算插值(ych)返回To MATLABych(larg1)14用MATLAB作插值计算 一维插值函数: yi=interp1(x,y,xi,method)插值方法被插值点插值节点xi处的插 值结果nearest :最邻近插值 linear : 线性插值; spline : 三次样条插值 ; cubic : 立方插值。 缺省时: 分段线性插值 。注意:所有的插值方法都要求x是单调的,并且xi不 能够超过x的范围。15
5、mthod含义特点用途linear线性插值较快,有足够精度最常用,作为缺省设置cubic三次多项 式插值较慢,精度高,平滑 性好作平滑用spline三次样条 插值最慢,精度高,最平 滑作平滑用nearst最邻近插 值最快,占用存储最 少,精度低,不平滑实时使用;特大数据量处理;需保持 基准数据,不增加新函数值的特殊 场合 说明:本表的插值算法名,同样适用于其它多维插值指令 interp2,interp3,interpn16例:在1-12的11小时内,每隔1小时测量一次温 度,测得的温度依次为:5,8,9,15,25,29,31 ,30,22,25,27,24。试估计每隔1/10小时的温 度值。
6、To MATLAB(temp)hours=1:12; temps=5 8 9 15 25 29 31 30 22 25 27 24; h=1:0.1:12; t=interp1(hours,temps,h,spline); (直接输出数据将是很多的) plot(hours,temps,+,h,t,hours,temps,r:) %作图 xlabel(Hour),ylabel(Degrees Celsius)17 xy机翼下 轮廓线例 已知飞机下轮廓线上数据如下,求x每改变0.1时的y值。To MATLAB(plane)返回18二维插值的定义xyO第一种(网格节点) :19已知 mn个节点 其中
7、互不相同,不妨设构造一个二元函数通过全部已知节点,即再用计算插值,即 20第二种(散乱节点): yx0 21已知n个节点其中互不相同,构造一个二元函数通过全部已知节点,即再用计算插值,即返回22注意:最邻近插值一般不连续。具有连续性的最简单 的插值是分片线性插值。最邻近插值xy(x1, y1)(x1, y2)(x2, y1)(x2, y2)O二维或高维情形的最邻近插值,与被插值点最邻近的 节点的函数值即为所求。返回23将四个插值点(矩形的四个顶点)处的函数值依次 简记为:分片线性插值xy(xi, yj)(xi, yj+1)(xi+1, yj)(xi+1, yj+1)Of (xi, yj)=f1
8、,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f424插值函数为:第二片(上三角形区域):(x, y)满足插值函数为:注意:(x, y)当然应该是在插值节点所形成的矩形区 域内。显然,分片线性插值函数是连续的;分两片的函数表达式如下: 第一片(下三角形区域): (x, y)满足返回25双线性插值是一片一片的空间二次曲面构成。 双线性插值函数的形式如下:其中有四个待定系数,利用该函数在矩形的四个顶 点(插值节点)的函数值,得到四个代数方程,正 好确定四个系数。双线性插值xy(x1, y1)(x1, y2)(x2, y1)(x2, y2)O返回26
9、要求x0,y0单调;x,y可取为矩阵,或x取 行向量,y取为列向量,x,y的值分别不能超出 x0,y0的范围。z=interp2(x0,y0,z0,x,y,method)被插值点插值方法用MATLAB作网格节点数据的插值插值 节点被插值点 的函数值nearest 最邻近插值 linear 双线性插值 cubic 双三次插值 缺省时, 双线性插值27例:测得平板表面3*5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形 。输入以下命令: x=1:5; y=1:3; temps=82
10、 81 80 82 84;79 63 61 65 81;84 84 82 85 86; mesh(x,y,temps)1.先在三维坐标画出原始数据,画出粗糙的温度分布曲图.2以平滑数据,在x、y方向上每隔0.2个单位的地方进行插值.28再输入以下命令:xi=1:0.2:5;yi=1:0.2:3;zi=interp2(x,y,temps,xi,yi,cubic);mesh(xi,yi,zi)画出插值后的温度分布曲面图. To MATLAB(wendu)29通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插 值效果进行比较。To MATLAB (moutain)返回30插值函数gridda
11、ta格式为:cz =griddata(x,y,z,cx,cy,method)用MATLAB作散点数据的插值计算要求cx取行向量,cy取为列向量。被插值点插值方法插值 节点被插值点 的函数值nearest 最邻近插值 linear 双线性插值 cubic 双三次插值 v4- Matlab提供的插值方法 缺省时, 双线性插值31例 在某海域测得一些点(x,y)处的水深z由下 表给出,船的吃水深度为5英尺,在矩形区域(75 ,200)*(-50,150)里的哪些地方船要避免进入 。32To MATLAB hd1返回4.作出水深小于5的海域范围,即z=5的等高 线.3.作海底曲面图33实验作业山区地貌:在某山区测得一些地点的高程如下表:(平 面区域1200=x=4000,1200=y=3600),试作出该山区的 地貌图和等高线图,并对几种插值方法进行比较。返回34