1数学建模与数学实验插值2实验目的实验内容2、掌握用数学软件包求解插值问题。1、了解插值的基本内容。[1]一维插值[2]二维插值[3]实验作业3拉格朗日插值分段线性插值三次样条插值一维插值一、插值的定义二、插值的方法三、用Matlab解插值问题返回4返回二维插值一、二维插值定义二、网格节点插值法三、用Matlab解插值问题最邻近插值分片线性插值双线性插值网格节点数据的插值散点数据的插值5一维插值的定义已知n+1个节点,,1,0(),(njyxjj其中jx互不相同,不妨设),10bxxxan求任一插值点)(*jxx处的插值.*y0x1xnx0y1y节点可视为由)(xgy产生,,g表达式复杂,,或无封闭形式,,或未知.。*x*y6构造一个(相对简单的)函数),(xfy通过全部节点,即),1,0()(njyxfjj再用)(xf计算插值,即).(**xfy0x1xnx0y1y*x*y返回7称为拉格朗日插值基函数。n0iiiny)x(L)x(P已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为y0,y1,…,yn。求一n次多项式函数Pn(x),使其满足:Pn(xi)=yi,i=0,1,…,n.解决此问题的拉格朗日插值多项式公式如下其中Li(x)为n次多项式:)xx()xx)(xx()xx)(xx()xx()xx)(xx()xx)(xx()x(Lni1ii1ii1i0in1i1i10i拉格朗日(Lagrange)插值8拉格朗日(Lagrange)插值特别地:两点一次(线性)插值多项式:101001011yxxxxyxxxxxL三点二次(抛物)插值多项式:2120210121012002010212yxxxxxxxxyxxxxxxxxyxxxxxxxxxL.,满足插值条件直接验证可知xLn9拉格朗日多项式插值的这种振荡现象叫Runge现象55,11)(2xxxg采用拉格朗日多项式插值:选取不同插值节点个数n+1,其中n为插值多项式的次数,当n分别取2,4,6,8,10时,绘出插值结果图形.例返回ToMatlablch(larg1)functiony=lagrange(x0,y0,x)ii=1:length(x0);y=zeros(size(x));fori=iiij=find(ii~=i);y1=1;forj=1:length(ij),y1=y1.*(x-x0(ij(j)));end***+y1*y0(i)/prod(x0(i)-x0(ij));end算例:给出f(x)=ln(x)的数值表,用Lagrange计算ln(0.54)的近似值。x=[0.4:0.1:0.8];y=[-0.916291,-0.693147,-0.510826,-0.356675,-0.223144];lagrange(x,y,0.54)ans=-0.6161(精确解-0.616143)11()()nnjkkjkjjkxxyxyxxRunge现象问题的提出:根据区间[a,b]上给出的节点做插值多项式p(x)的近似值,一般总认为p(x)的次数越高则逼近f(x)的精度就越好,但**并非如此。反例:在区间[-5,5]上的各阶导数存在,但在此区间上取n个节点所构成的Lagrange插值多项式在全区间内并非都收敛。取n=10,用Lagrange插值法进行插值计算。21()1fxxx=[-5:1:5];y=1./(1+x.^2);x0=[-5:0.1:5];y0=lagrange(x,y,x0);y1=1./(1+x0.^2);%绘制图形plot(x0,y0,'--r')%插值曲线holdonplot(x0,y1,‘-b')%原曲线13分段线性插值其它,0,,)()()(1111110jjjjjjjjjjjnjjjnxxxxxxxxxxxxxxxlxlyxL计算量与n无关;n越大,误差越小.nnnxxxxgxL0),()(limxjxj-1xj+1x0xnxoy14ToMATLABExam_1.m返回66,11)(2xxxg例用分段线性插值法求插值,并观察插值误差.1.在[-6,6]中平均选取5个点作插值(xch11)4.在[-6,6]中平均选取41个点作插值(xch14)2.在[-6,6]中平均选取11个点作插值(xch12)3.在[-6,6]中平均选取21个点作插值(xch13)15比分段线性插值更光滑。xyxi-1xiab在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性。光滑性的阶次越高,则越光滑。是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子。三次样条插值16三次样条插值},1],,[),({)(1nixxxxsxSiii],[)()3),1,0()()2),1()()10223niiiiiiixxCxSniyxSnidxcxbxaxs)1,,1()()(),()(),()(111nixsxsxsxsxsxsiiiiiiiiiiii自然边界条件)(0)()()40nxSxS)(,,,)4)3)2xSdcbaiiii)()(limxgxSng(x)为被插值函数。17例66,11)(2xxxg用三次样条插值选取11个基点计算插值(ych)返回ToMATLABExam_118用MATLAB作插值计算一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’:最邻近插值‘linear’:线性插值;‘spline’:三次样条插值;‘cubic’:立方插值。缺省时:分段线性插值。注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。19例:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。ToMATLAB(temp)hours=1:12;temps=[589152529313022252724];h=1:0.1:12;t=interp1(hours,temps,h,'spline');%(直接输出数据将是很多的)plot(hours,temps,'+',h,t,hours,temps,'r:')%作图xlabel('Hour'),ylabel('DegreesCelsius’)20xy机翼下轮廓线X035791112131415Y01.21.72.02.12.01.81.21.01.6例已知飞机下轮廓线上数据如下,求x每改变0.1时的y值。ToMATLABExam_2返回21二维插值的定义xyO第一种(网格节点):22已知mn个节点其中互不相同,不妨设构造一个二元函数通过全部已知节点,即再用计算插值,即23第二种(散乱节点):yx024已知n个节点其中互不相同,构造一个二元函数通过全部已知节点,即再用计算插值,即返回25注意:最邻近插值一般不连续。具有连续性的最简单的插值是分片线性插值。最邻近插值xy(x1,y1)(x1,y2)(x2,y1)(x2,y2)O二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求。返回26将四个插值点(矩形的四个顶点)处的函数值依次简记为:分片线性插值xy(xi,yj)(xi,yj+1)(xi+1,yj)(xi+1,yj+1)Of(xi,yj)=f1,f(xi+1,yj)=f2,f(xi+1,yj+1)=f3,f(xi,yj+1)=f427插值函数为:)**)(ff()xx)(ff(f)y,x(fj23i121第二片(上三角形区域):(x,y)满足iii1ij1jy)xx(xx**y插值函数为:)xx)(ff()**)(ff(f)y,x(fi43j141注意:(x,y)当然应该是在插值节点所形成的矩形区域内。显然,分片线性插值函数是连续的;分两片的函数表达式如下:第一片(下三角形区域):(x,y)满足返回28双线性插值是一片一片的空间二次曲面构成。双线性插值函数的形式如下:)dcy)(bax()y,x(f其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数。双线性插值xy(x1,y1)(x1,y2)(x2,y1)(x2,y2)O返回29要求x0,y0单调;x,y可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围。z=interp2(x0,y0,z0,x,y,’method’)被插值点插值方法用MATLAB作网格节点数据的插值插值节点被插值点的函数值‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值缺省时,双线性插值30例:测得平板表面3*5网格点处的温度分别为:828180828479636165818484828586试作出平板表面的温度分布曲面z=f(x,y)的图形。输入以下命令:x=1:5;y=1:3;temps=[8281808284;7963616581;8484828586];mesh(x,y,temps)1.先在三维坐标画出原始数据,画出粗糙的温度分布曲图.2.以平滑数据,在x、y方向上每隔0.2个单位的地方进行插值.31再输入以下命令:xi=1:0.2:5;yi=1:0.2:3;zi=interp2(x,y,temps,xi',yi,'cubic');mesh(xi,yi,zi)画出插值后的温度分布曲面图.ToMATLABExam_332例表10-1是气象学家测量得到的气象资料,它们分别表示在南半球地区按不同纬度、不同月份的平均气旋数字.根据这些数据,绘制出气旋分布曲面图形.表10-1南半球地区按不同纬度不同月份的平均气旋数据0-1010-2020-3030-4040-5050-6060-7070-8080-901月2.418.720.822.137.348.225.65.30.32月1.621.418.520.128.836.624.25.303月2.416.218.220.527.835.525.55.404月3.29.216.525.137.24024.**.90.35月1.02.812.929.240.337.621.14.906月0.51.710.132.**1.735.422.27.107月0.41.48.333.046.23520.25.30.18月0.22.411.231.039.934.721.27.30.29月0.55.812.528.635.935.722.670.310月0.89.221.132.040.339.528.58.6011月2.410.323.928.138.24025.36.30.112月3.61625.525.**3.441.924.36.60.3ToMATLABexam_5返回33插值函数griddata格式为:cz=griddata(x,y,z,cx,cy,‘method’)用MATLAB作散点数据的插值计算要求cx取行向量,cy取为列向量。被插值点插值方法插值节点被插值点的函数值‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值'v4'-***