第四讲曲线曲面的插值与拟合方法1第四讲插值与拟合之插值(上)内容:插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值目的:学习插值的基本思想和方法,掌握Matlab的一维/二维等距和非等距插值函数要求:掌握Matlab插值函数,处理插值应用问题了解拉格朗日和分段线性插值的基本思想了解三次样条插值的提法和思路掌握插值函数interpinterp1interp2griddata掌握水塔用水量的计算(水位-体积-流速-积分)第四讲曲线曲面的插值与拟合方法2关于插值与拟合的区别…面对工程实践和科学计算中的采集得到数据(xi,yi),我们总是试图去揭示x与y之间的关系,即用近似的y=f(x)来表示,那么我们通常可以采用两种方法:插值与拟合插值与拟合的区别在于——插值试图去通过已知点了解未知点处的函数值;而拟合则在于在整体上用某种已知函数去拟合数据点列所在未知函数的性态。关键区别在于插值要求必须经过已知点列,拟合只求尽量靠近不必经过!拟合将在本讲下介绍~第四讲曲线曲面的插值与拟合方法3引例1函数查表问题:已知标准正态分布函数表,求表中没有的值(2.34)=0.99036(2.35)=0.99061求~(2.3457)≈(2.35-2.3457)/(2.35-2.34)*(2.34)+(2.3457-2.34)/(2.35-2.34)*(2.35)引例2地图绘制问题:假如我们在地图边界获取了一些边界点的坐标,连接这些边界点形成闭合曲线,可以用来近似表示真实边界线,如何更准确地逼近真实边界线?函数查表与地图边界线绘制(2.3457)=?第四讲曲线曲面的插值与拟合方法4如何更准确地逼近真实边界线?第四讲曲线曲面的插值与拟合方法5插值在数码图像放大中的应用引例3图像插值放大:数码相机运用插值的方法可以创造出比传感器实际像素更多的图像,这种处理称为“数码变焦”。106*40原始图像:左边:最近邻插值放大450%右边:双三次插值放大450%第四讲曲线曲面的插值与拟合方法6插值在图像三维重建中的应用Surfacerecostructionfromscatteredpointscloud第四讲曲线曲面的插值与拟合方法7分段线性插值和拉格朗日插值分段线性插值:用直线(线性)连接数据点列上相邻的两点。比如~在两点[xi-1,xi]上线性插值函数为~11111()[,],0,1,2,...,iiiiiiiiiixxxxqxyyxxxxxxxin拉格朗日插值:用n次拉格朗日插值多项式0()()nnkkkLxylx连接数据点列上相邻的n+1个点。Pszjs71第四讲曲线曲面的插值与拟合方法8拉格朗日插值基函数的构造比如在三个点[x0,x1,x2]上lagrange插值函数为(线性插值是拉格朗日插值最简单的情形)2200011221220010202110120122021()()()()()()()()()()()()()()()()()()kkkLxylxylxylxylxxxxxLxyxxxxxxxxyxxxxxxxxyxxxx第四讲曲线曲面的插值与拟合方法9分段三次埃尔米特插值条件数分段三次埃尔米特插值:线性插值在每一小段上(两点之间),用到2个条件q(xi)=yi,所以确定了一个线性插值函数;三次埃尔米特插值在每一小段上,用到4个条件q(xi)=yi,q'(xi)=y'i,所以确定一个3次多项式插值函数。分段插值主要是为了避免高次插值可能出现的大幅度振荡现象,在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差,为了克服这一缺点,三次样条插值成为比较理想的工具。第四讲曲线曲面的插值与拟合方法10三次样条(spline)插值的概念样条的概念出自工程设计和机械加工(飞机、船舶外形曲线设计)中的绘图工具(曲线尺),简单说就是具有连续二阶导数的三次插值多项式函数。第四讲曲线曲面的插值与拟合方法11三次样条(spline)插值的条件数首先从段数n=2分析:我们知道在每一小段的三次多项式有4个系数,所以如下图,总共需要有4*2=8个方程来确定;由q(xi)=yi可以确定2*2=4个方程,又由内部节点q1'(xi)=q2'(xi)和q1''(xi)=q2''(xi)可以确定2*(2-1)=2个方程,看来剩下的8-(4+2)=2个方程只有靠外部给定(边界条件)了q1q2x0x1x2第四讲曲线曲面的插值与拟合方法12一维曲线等距插值函数interpinterp'ssyntaxOne-dimensionalrtimeslongerdatainterpolationy=interp(y,r)题例在原始数据点中增倍插值x=0:0.001:1;y=sin(2*pi*30*x)+sin(2*pi*60*x);yi=interp(y,4);subplot(1,2,1);stem(y(1:30));title('OriginalPoints');subplot(1,2,2);stem(yi(1:120));title('InterpolatedPoints');第四讲曲线曲面的插值与拟合方法13一维曲线等距插值函数interp1interp1'ssyntaxOne-dimensionaldatainterpolationyi=interp1(x,y,xi,method)'nearest'Nearestneighborinterpolation'linear'Linearinterpolation(default)'spline'Cubicsplineinterpolation'cubic'PiecewisecubicHermiteinterpolation题例在一天24小时内,从零点开始每间隔2小时测得的环境温度,推测在15点6分的的温度x=0:2:24;y=[12,9,9,10,18,24,28,27,25,20,18,15,13];plot(x,y,'-ro');holdon;xi=15.1;yi=interp1(x,y,xi,'spline'),xi=0:1/3600:24;yi=interp1(x,y,xi,'spline');plot(xi,yi,'b-');第四讲曲线曲面的插值与拟合方法14二维曲面等距插值函数interp2interp2'ssyntaxTwo-dimensionaldatainterpolationZI=interp2(X,Y,Z,XI,YI,method)'nearest'Nearestneighborinterpolation'linear'Bilinearinterpolation(default)'spline'Cubicsplineinterpolation'cubic'Bicubucinterpolation第四讲曲线曲面的插值与拟合方法15二维曲面等距插值函数interp2动画展示:三维空间中的曲面等距格点第四讲曲线曲面的插值与拟合方法16二维曲面等距插值函数interp2题例粗糙山顶曲面的平滑处理(等距情形)loadmountain.mat%载入山顶地形数据mesh(x,y,z)%绘制原始山顶地形图xi=linspace(0,5,50);yi=linspace(0,6,80);[xii,yii]=meshgrid(xi,yi);zii=interp2(x,y,z,xii,yii,'spline');%三次样条插值figure;surf(xii,yii,zii)%绘制平滑处理后的山顶曲面holdon;[xx,yy]=meshgrid(x,y);plot3(xx,yy,z+0.1,'ob');第四讲曲线曲面的插值与拟合方法17二维曲面等距插值函数interp2题例粗糙山顶曲面的平滑处理(等距情形)第四讲曲线曲面的插值与拟合方法18二维曲面散乱插值函数griddatagriddata'ssyntaxDatainterpolationforscatteredpointsZI=griddata(x,y,z,XI,YI)[XI,YI,ZI]=griddata(x,y,z,xi,yi)[...]=griddata(...,method)'linear'Triangle-basedlinearinterpolation'cubic'Triangle-basedcubic(default)'nearest'Nearestneighbor'v4'MATLAB4griddatamethodMATLAB二维插值函数griddata,可以将平面或曲面上的散乱点插值为规则网格第四讲曲线曲面的插值与拟合方法19二维曲面散乱插值函数griddata题例粗糙山顶曲面的平滑处理(散乱情形)rand('seed',0)x=rand(100,1)*4-2;y=rand(100,1)*4-2;z=x.*exp(-x.^2-y.^2);plot3(x,y,z,'o');holdonti=-2:.25:2;[XI,YI]=meshgrid(ti,ti);ZI=griddata(x,y,z,XI,YI);mesh(XI,YI,ZI);第四讲曲线曲面的插值与拟合方法20二维曲面散乱插值函数griddata题例墨西哥草帽的平滑处理(散乱情形)x=rand(100,1)*16-8;y=rand(100,1)*16-8;r=sqrt(x.^2+y.^2)+eps;z=sin(r)./r;plot3(x,y,z,'.','MarkerSize',15)holdonxlin=linspace(min(x),max(x),33);ylin=linspace(min(y),max(y),33);[X,Y]=meshgrid(xlin,ylin);Z=griddata(x,y,z,X,Y,'cubic');mesh(X,Y,Z);axistight;第四讲曲线曲面的插值与拟合方法21南半球气旋变化的可视图形第四讲曲线曲面的插值与拟合方法22山区地貌的可视化图形第四讲曲线曲面的插值与拟合方法23水塔用水量估计通用程序通用程序tbp69.m可近似计算时间段内的用水量格式为:tbp69(ts,tf)其中ts为起点时间,tf为终点时间第四讲曲线曲面的插值与拟合方法24实验一:水塔用水量估计That’sall~3Q!第四讲曲线曲面的插值与拟合方法25第四讲插值与拟合之拟合(下)内容:拟合是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,拟合出近似替代函数,进而估算出函数在其他点处的近似值。目的:学习拟合的基本思想和方法,掌握Matlab的多项式/一般拟合函数/曲线拟合工具箱要求:掌握Matlab拟合函数,处理拟合应用问题了解基于最小二乘法则拟合的基本思想掌握拟合函数polyfitlsqcurvefitcurvefit掌握cftool曲线拟合工具箱(多目标函数多法则)第四讲曲线曲面的插值与拟合方法26关于数据拟合的两个要素...在工程实践和科学计算中,用某种经验函数解析式y=f(x)来近似刻画采集数据(x,y)之间的关系的方法就叫拟合,所谓“拟合”有“最贴近”之意。与插值不同,拟合的主要目标是要离散点尽量靠近拟合函数。一般过程是,我们首先根据采样点的散点分布图,大致推测x与y之间的经验函数形式(比如多项式、指数函数等),然后依据某种法则(比如最常用的最小二乘法则),确定出的经验函数解析式中的待定参数。其中经验函数和拟合法则是拟合的两个关键要素!第四讲曲线曲面的插值与拟合方法27引例1化合物浓度随时间变化的规律:与插值面临的问题相似,我们被要求去求解或预测表格中没有的因变量对应值,与插值的解决思路不同,我们试图获得比较完备的解决方案:设计并求出离散数据点的近似替代函数,有了近似函数解析式,就可以进一步代值计算或作图分析。为了揭示浓度y与时间t之间呈现的函数规律,我们首