第十一讲插值和拟合与MATLAB11.1插值与MATLAB11.2拟合与MATLAB问题一气温测量:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。问题二山区地貌:在某山区测得一些地点的高程如下表。平面区域为1200=x=4000,1200=y=3600)试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。XY12001600200024002800320036004000120011301250128012301040900500700160013201450142014001300700900850200013901500150014009001100106095024001500120011001350145012001150101028001500120011001550160015501380107032001500155016001550160016001600155036001480150015501510143013001200980通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。一、一维插值已知n+1个节点,,1,0(),(njyxjj其中jx互不相同,不妨设),10bxxxan求任一插值点)(*jxx处的插值*.y0x1xnx0y1y节点可视为由()yfx产生,f表达式复杂,或未知。*x*y11.1插值问题1.一维插值的定义()(0,1,)jjxyjn再用()x计算插值,即**().yx0x1xnx0y1y*x*y(),yx构造一个(相对简单的)函数通过全部节点,即(1)现在的问题是怎样来找(x)?选什么类型的函数作为(x)?一种简单自然的方法就是将(x)设为次数不超过n的多项式:nnnxaxaaxP10)((2)满足插值条件(1),可得n+1个方程,而(2)式Pn(x)中恰有n+1个待定参数。Lagrange插值2.插值方法对一般的n,由插值条件(1)可得关于(2)式中待定参数a0,a1,…an的线性方程组:.22101121211000202010nnnnnnnnnnyxaxaxaayxaxaxaayxaxaxaa(3)其系数行列式即为范得蒙(Vandemonde)行列式。nnnnnnxxxxxxxxxV2121102001110.)(jinjixx如果节点x0,x1,…,xn互不相同,则V0,故方程组(3)有唯一解。即n次代数插值问题是存在唯一的。不难得到njjnjiiijinyxxxxxP00.))(()((4)称为拉格朗日插值基函数。n0iiiny)x(L)x(P(4)可以写成如下形式其中Li(x)为n次多项式:)xx()xx)(xx()xx)(xx()xx()xx)(xx()xx)(xx()x(Lni1ii1ii1i0in1i1i10i特别地:n=1,相当于作过点(x0,y0)与(x1,y1)的直线y=P1(x),于是,)(101001011yxxxxyxxxxxP(5)即用线性函数近似代替f(x),称此为线性插值。n=2,即找过三个点(xi,yi)i=0,1,2的抛物线,于是得121012002010212))(())(())(())(()(yxxxxxxxxyxxxxxxxxxP,))(())((2120210yxxxxxxxx(6)称此为抛物线插值。分段线性插值其它,0,,)()()(1111110jjjjjjjjjjjnjjjnxxxxxxxxxxxxxxxlxlyxL计算量与n无关;n越大,误差越小.0lim()(),nnnLxfxxxxxjxj-1xj+1x0xnxoy比分段线性插值更光滑。xyxi-1xiab三次样条插值},1],,[),({)(1nixxxxsxSiii],[)()3),1,0()()2),1()()10223niiiiiiixxCxSniyxSnidxcxbxaxs自然边界条件)(0)()()40nxSxS)(,,,)4)3)2xSdcbaiiiilim()()nsxfx111()(),()(),()()(1,,1)iiiiiiiiiiiisxsxsxsxsxsxin为被插值函数。()fx用MATLAB作插值计算一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’:最邻近插值‘linear’:线性插值;‘spline’:三次样条插值;‘cubic’:立方插值。缺省时:分段线性插值。注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。问题一气温测量:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。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’)二、二维插值的定义xyO第一种(网格节点):1.二维插值的定义12maxxxb12ncyyyd已知mn个节点其中互不相同,不妨设(,,)(1,2,...,;1,2,)ijijxyzimjn,ijxy(,)(0,1,,;0,1,)ijijfxyzimjn再用计算插值,即(,)fxy***(,).zfxy构造一个二元函数通过全部已知(,),zfxy节点,即第二种(散乱节点):yx0已知n个节点其中互不相同。(,,)(1,2,...,)iiixyzin(,)iixy(,)(0,1,,)iiifxyzin再用计算插值,即(,)fxy***(,).zfxy构造一个二元函数通过全部已知(,),zfxy节点,即注意:最邻近插值一般不连续。具有连续性的最简单的插值是分片线性插值。最邻近插值xy(x1,y1)(x1,y2)(x2,y1)(x2,y2)O二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求。2.二维插值方法将四个插值点(矩形的四个顶点)处的函数值依次简记为:分片线性插值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)=f411()jjiiiiyyyxxyxx)yy)(ff()xx)(ff(f)y,x(fj23i121第二片(上三角形区域)插值函数为:)xx)(ff()yy)(ff(f)y,x(fi43j141注意:(x,y)当然应该是在插值节点所形成的矩形区域内。显然,分片线性插值函数是连续的。分两片的函数表达式如下:第一片(下三角形区域)插值函数为:双线性插值是一片一片的空间二次曲面构成。双线性插值函数的形式如下:)dcy)(bax()y,x(f其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数。双线性插值xy(x1,y1)(x1,y2)(x2,y1)(x2,y2)O要求x0,y0单调;x,y可取为矩阵,或x取行向量,y取为列向量,x,y的值分别不能超出x0,y0的范围。z=interp2(x0,y0,z0,x,y,’method’)被插值点插值方法用MATLAB作网格节点数据的插值插值节点被插值点的函数值‘nearest’最邻近插值‘linear’双线性插值‘spline’双三条样插值‘cubic’双三次插值缺省时,双线性插值问题二山区地貌:在某山区测得一些地点的高程如下表。平面区域为1200=x=4000,1200=y=3600)试作出该山区的地貌图和等高线图,并对几种插值方法进行比较。XY12001600200024002800320036004000120011301250128012301040900500700160013201450142014001300700900850200013901500150014009001100106095024001500120011001350145012001150101028001500120011001550160015501380107032001500155016001550160016001600155036001480150015501510143013001200980通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较。插值函数griddata格式为:cz=griddata(x,y,z,cx,cy,‘method’)用MATLAB作散点数据的插值计算要求cx取行向量,cy取为列向量。被插值点插值方法插值节点被插值点的函数值‘nearest’最邻近插值‘linear’双线性插值‘cubic’双三次插值'v4'-Matlab提供的插值方法缺省时,双线性插值曲线拟合问题的提法已知一组(二维)数据,即平面上n个点(xi,yi)i=1,…n,寻求一个函数(曲线)y=f(x),使f(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。+++++++++xyy=f(x)(xi,yi)ii为点(xi,yi)与曲线y=f(x)的距离11.2拟合拟合与插值的关系函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。问题:给定一批数据点,需确定满足特定要求的曲线或曲面。解决方案:•若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。•若要求所求曲线(面)通过所给所有数据点,就是插值问题;一、线性最小二乘拟合1.直线拟合假定数据点(xi,yi)i=0,1,…n的分布大致成一条直线,我们要构造一条直线使之尽量从这些数据点附近通过。设选取直线:y=a+bx,而ibxayii=0,1,…,n表示按直线y=a+bx求得的近似值。两者之差iyyeii称为残差。残差的大小是衡量拟合好坏的重要标志。对此,我们可以有各种不同的准则:(1)使残差的最大绝对值达到最小min;||maxiie(2)使残差的绝对值之和达到最小iiemin;||(3)使残差的平方和达到最小iie.min2对以上三种准则,前两种提法比较自然,但由于含有绝对值,运算不便。而用第(3)种来选取拟合曲线的方法称为曲线拟合的最小二乘法。直线拟合问题即:对于给定的数据点(xi,yi)i=0,1,…,n,求直线y=a+bx,使总误差20)]([iniibxayS达到最小。(7)求解:令,0,0bSaS得方程组.2iiiiiiiiiiiyxxbxayxban(8)2.线性多项式最小二乘拟合给定一组数据(xi,yi)i=0,1,…,n,选取多