收藏 分享(赏)

李伟平-插值.ppt

上传人:11xg27ws 文档编号:10094135 上传时间:2019-10-09 格式:PPT 页数:41 大小:2.49MB
下载 相关 举报
李伟平-插值.ppt_第1页
第1页 / 共41页
李伟平-插值.ppt_第2页
第2页 / 共41页
李伟平-插值.ppt_第3页
第3页 / 共41页
李伟平-插值.ppt_第4页
第4页 / 共41页
李伟平-插值.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、插 值李伟平,目的,内容,1了解插值的基本内容,1一维插值,2二维插值,拉格朗日插值,分段线性插值,三次样条插值,一维插值,一、插值的定义,二、插值的方法,三、用MATLAB解插值问题,二维插值,一、二维插值定义,二、网格节点插值法,三、用MATLAB解插值问题,最邻近插值,分片线性插值,双线性插值,网格节点数据的插值,散点数据的插值,一维插值的定义,称为拉格朗日插值基函数,已知函数f(x)在n+1个点x0,x1,xn处的函数值为 y0,y1,yn 求一n次多项式函数Pn(x),使其满足:Pn(xi)=yi,i=0,1,n.,解决此问题的拉格朗日插值多项式公式如下,其中Li(x) 为n次多项式

2、:,拉格朗日(Lagrange)插值,拉格朗日(Lagrange)插值,特别地:,两点一次(线性)插值多项式:,三点二次(抛物)插值多项式:,采用拉格朗日多项式插值:选取不同插值节点n+1个,其中n为插值多项式的次数,当n分别取2,4,6, 8,10时,绘出插值结果图形.,例,function y=lagr1(x0,y0,x) n=length(x0); m=length(x); for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j=kp=p*(z-x0(j)/(x0(k)-x0(j);endends=p*y0(k)+s;endy(i)=s; e

3、nd,m=101; x=-5:10/(m-1):5; y=1./(1+x.2);z=0*x; plot(x,z,r,x,y,LineWidth,1.5), gtext(y=1/(1+x2),pausen=3; x0=-5:10/(n-1):5; y0=1./(1+x0.2); y1=lagr1(x0,y0,x); hold on,plot(x,y1,b),gtext(n=2),pause, hold offn=5; x0=-5:10/(n-1):5; y0=1./(1+x0.2); y2=lagr1(x0,y0,x); hold on,plot(x,y2,b:),gtext(n=4),paus

4、e, hold offn=7; x0=-5:10/(n-1):5; y0=1./(1+x0.2); y3=lagr1(x0,y0,x);hold on, plot(x,y3,r),gtext(n=6),pause, hold offn=9; x0=-5:10/(n-1):5; y0=1./(1+x0.2); y4=lagr1(x0,y0,x);hold on, plot(x,y4,r:),gtext(n=8),pause, hold offn=11; x0=-5:10/(n-1):5; y0=1./(1+x0.2); y5=lagr1(x0,y0,x);hold on, plot(x,y5,m

5、),gtext(n=10),拉格朗日多项式插值的这种振荡现象叫 Runge现象,分段线性插值,计算量与n无关; n越大,误差越小.,例,用分段线性插值法求插值,并观察插值误差.,1.在-6,6中平均选取5个点作插值,x=linspace(-6,6,100); y=1./(x.2+1); x1=linspace(-6,6,5); y1=1./(x1.2+1); plot(x,y,x1,y1,x1,y1,o,LineWidth,1.5), gtext(n=4),例,用分段线性插值法求插值,并观察插值误差.,2.在-6,6中平均选取11个点作插值,x=linspace(-6,6,100); y=1.

6、/(x.2+1); x1=linspace(-6,6,11); y1=1./(x1.2+1); plot(x,y,x1,y1,x1,y1,o,LineWidth,1.5), gtext(n=10),例,用分段线性插值法求插值,并观察插值误差.,3.在-6,6中平均选取21个点作插值,x=linspace(-6,6,100); y=1./(x.2+1); x1=linspace(-6,6,21); y1=1./(x1.2+1); plot(x,y,x1,y1,x1,y1,o,LineWidth,1.5), gtext(n=20),例,用分段线性插值法求插值,并观察插值误差.,4.在-6,6中平均

7、选取41个点作插值,x=linspace(-6,6,100); y=1./(x.2+1); x1=linspace(-6,6,41); y1=1./(x1.2+1); plot(x,y,x1,y1,x1,y1,o,LineWidth,1.5), gtext(n=40),比分段线性插值更光滑,在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性光滑性的阶次越高,则越光滑是否存在较低次的分段多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子,三次样条插值,三次样条插值,g(x)为被插值函数,例,用三次样条插值选取11个基点计算插值.,x0=linsp

8、ace(-5,5,11); y0=1./(1+x0.2); x=linspace(-5,5,100); y=interp1(x0,y0,x,spline); x1=linspace(-5,5,100); y1=1./(1+x1.2); plot(x1,y1,k,x0,y0,+,x,y,r);,用MATLAB作插值计算,一维插值函数:,yi=interp1(x,y,xi,method),nearest 最邻近插值;linear 线性插值; spline 三次样条插值; cubic 立方插值;缺省时 分段线性插值,注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围,例:从1点12点的

9、11小时内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24试估计每隔1/10小时的温度值,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),例 已知飞机下轮廓线上数据如下,求x每改变0.1时的y值,x0=0 3 5 7 9 11 12 1

10、3 14 15 ; y0=0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ; x=0:0.1:15; y1=lagr1(x0,y0,x); y2=interp1(x0,y0,x); y3=interp1(x0,y0,x,spline); subplot(3,1,1) plot(x0,y0,k+,x,y1,r) grid title(lagrange) subplot(3,1,2) plot(x0,y0,k+,x,y2,r) grid title(piecewise linear) subplot(3,1,3) plot(x0,y0,k+,x,y3,r) grid t

11、itle(spline),二维插值的定义,第一种(网格节点):,已知 mn个节点,第二种(散乱节点):,注意:最邻近插值一般不连续具有连续性的最简单的插值是分片线性插值,最邻近插值,二维或高维情形的最邻近插值,与被插值点最邻近的节点的函数值即为所求,将四个插值点(矩形的四个顶点)处的函数值依次简记为:,分片线性插值,f (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4,插值函数为:,第二片(上三角形区域):(x, y)满足,插值函数为:,注意:(x, y)当然应该是在插值节点所形成的矩形区域内显然,分片线性插值函数是连续

12、的;,分两片的函数表达式如下:,第一片(下三角形区域): (x, y)满足,双线性插值是一片一片的空间二次曲面构成 双线性插值函数的形式如下:,其中有四个待定系数,利用该函数在矩形的四个顶点(插值节点)的函数值,得到四个代数方程,正好确定四个系数,双线性插值,要求x0,y0单调;x,y可取为矩阵,或x取行向量, y取为列向量,x,y的值分别不能超出x0,y0的范围,z=interp2(x0,y0,z0,x,y,method),用MATLAB作网格节点数据的插值,nearest 最邻近插值; linear 双线性插值; cubic 双三次插值; 缺省时 双线性插值.,例:测得平板表面35网格点处

13、的温度分别为:82 81 80 82 84 79 63 61 65 81 84 84 82 85 86,试作出平板表面的温度分布曲面z=f(x,y)的图形 1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图.,输入以下命令: x=1:5; y=1:3; temps=82 81 80 82 84;79 63 61 65 81;84 84 82 85 86; mesh(x,y,temps),再输入以下命令: xi=1:0.2:5; yi=1:0.2:3; zi=interp2(x,y,temps,xi,yi,cubic); mesh(xi,yi,zi) 画出插值后的温度分布曲面图.,2以平滑数

14、据,在 x、y方向上每隔0.2个单位的地方进行插值.,通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较,figure(1); meshz(x,y,z) xlabel(X),ylabel(Y),zlabel(Z)xi=0:50:5600; yi=0:50:4800;figure(2) z1i=interp2(x,y,z,xi,yi,nearest); surfc(xi,yi,z1i) xlabel(X),ylabel(Y),zlabel(Z)figure(3) z2i=interp2(x,y,z,xi,yi); surfc(xi,yi,z2i) xlabel(X),yla

15、bel(Y),zlabel(Z)figure(4) z3i=interp2(x,y,z,xi,yi,cubic); surfc(xi,yi,z3i) xlabel(X),ylabel(Y),zlabel(Z)figure(5) subplot(1,3,1),contour(xi,yi,z1i,10,r); subplot(1,3,2),contour(xi,yi,z2i,10,r); subplot(1,3,3),contour(xi,yi,z3i,10,r);,x=0:400:5600; y=0:400:4800; z=370 470 550 600 670 690 670 620 580

16、450 400 300 100 150 250;.510 620 730 800 850 870 850 780 720 650 500 200 300 350 320;.650 760 880 970 1020 1050 1020 830 900 700 300 500 550 480 350;.740 880 1080 1130 1250 1280 1230 1040 900 500 700 780 750 650 550;.830 980 1180 1320 1450 1420 1400 1300 700 900 850 840 380 780 750;.880 1060 1230 13

17、90 1500 1500 1400 900 1100 1060 950 870 900 930 950;.910 1090 1270 1500 1200 1100 1350 1450 1200 1150 1010 880 1000 1050 1100;.950 1190 1370 1500 1200 1100 1550 1600 1550 1380 1070 900 1050 1150 1200;.1430 1430 1460 1500 1550 1600 1550 1600 1600 1600 1550 1500 1500 1550 1550;.1420 1430 1450 1480 150

18、0 1550 1510 1430 1300 1200 980 850 750 550 500;.1380 1410 1430 1450 1470 1320 1280 1200 1080 940 780 620 460 370 350;.1370 1390 1410 1430 1440 1140 1110 1050 950 820 690 540 380 300 210;.1350 1370 1390 1400 1410 960 940 880 800 690 570 430 290 210 150;,插值函数griddata格式为:,cz =griddata(x,y,z,cx,cy,metho

19、d),用MATLAB作散点数据的插值计算,要求cx取行向量,cy取为列向量,nearest最邻近插值 linear 双线性插值 cubic 双三次插值 v4- MATLAB提供的插值方法 缺省时, 双线性插值,例 在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深度为5英尺,在矩形区域(75,200)(-50,150)里的哪些地方船要避免进入,4.作出水深小于5的海域范围,即z=5的等高线.,clear x=129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5; y=7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5; z=-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 -9 -4 -9;cx=75:0.5:200; cy=-70:0.5:150; cz=griddata(x,y,z,cx,cy,cubic);meshz(cx,cy,cz),rotate3d xlabel(X),ylabel(Y),zlabel(Z) %pausefigure(2),contour(cx,cy,cz,-5 -5);grid hold on plot(x,y,+) xlabel(X),ylabel(Y),谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报