资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,插值法,第1页,问题,一水库上游河段降暴雨,依据预报测算上游流入水库流量为Q(t)(10,2,立方米/秒),:,t(时)8 12 16 24 30 44 48 56 60,Q(t)36 54 78 92 101 35 25 16 13,经过这个预报值,预计14 和 20 时上游流入水库流量.,在一天24小时内,从零点开始每间隔2小时测得环境温度为(摄氏度),12,9,9,10,18,24,28,27,25,20,18,15,13,推测在每一分钟时温度.,第2页,x,0.4,0.5,0.6,0.7,0.8,lnx,-0.916291,-0.693147,-0.510826,-0.356675,-0.223144,给定数据表:,计算ln(0.54)值.,第3页,一、问题提出,在生产和试验中,关于函数,f(x),经常存在两种情况:,(1)其表示式不便于计算;,(2)无表示式,,而只有函数在给定点函数值,,怎样计算,其它点函数值,?,x,x,0,x,1,x,2,x,n,y,y,0,y,1,y,2,y,n,第4页,二、问题处理,两种方法:,(1)函数,插值,;,(2)曲线,拟合,第5页,三、插值法,定义:,当准确函数,y,=,f,(,x,),非常复杂,或,未知时,,在一系列节点,x,0,x,n,处,测得,函数值,y,0,=,f,(,x,0,),,,y,n,=,f,(,x,n,),,由此结构一个,简单易算,近似函数,p,(,x,),f,(,x,),满足条件,p,(,x,i,),=,f,(,x,i,)(,i,=0,n,),-插值条件,这里,p,(,x,),称为,f,(,x,),插值函数;,结构插值函数方法为,插值法,。,当,p(x),为多项式时,我们称,p(x),为,插值多项式,;结构插值多项式方法称为,多项式插值法.,第6页,多项式插值法包含:,拉格朗日插值,牛顿插值,三次埃尔米特插值法,分段线性插值,分段三次埃尔米特插值法,三次样条插值,第7页,1、拉格朗日插值公式,()定义,对给定n+1个节点x,0,x,1,x,2,x,n,及对应函数值y,0,y,1,y,2,y,n,,,结构一个n次插值多项式:,即为,拉格朗日插值公式,,其中,插值基函数,第8页,(2),拉格朗日插值matlab,实现,function y=lagrange(x0,y0,x),%x0插值节点,y0插值节点处函数值,x要计算函数值点;,n=length(x0);,%计算x0长度,m=length(x);%计算x长度,for i=1:m,s=0;,z=x(i),;,for k=1:n,p=1.0;,for j=1:n,if j=k,p=p*(z-x0(j)/(x0(k)-x0(j);,%计算插值基函数,end,end,s=p*y0(k)+s;,end,y(i)=s;%计算在x(i)处函数值(拉格朗日),end,第9页,(3)函数调用,给定数据表:,用lagrange插值公式计算,clear,x0=0.4:0.1:0.8;,y0=log(x0);,x=0.54;,lagrange(x0,y0,x),ln(0.54)函数值,ans=,-0.6161,x,0.4,0.5,0.6,0.7,0.8,lnx,-0.916291,-0.693147,-0.510826,-0.356675,-0.223144,第10页,(4)练习,x,1.1,2.3,3.9,5.1,y,3.887,4.276,4.651,2.117,用lagrange插值公式计算x=2.101,4.234处函数值。,第11页,2、牛顿插值法,牛顿插值公式:,N,n,(x)=f(x,0,)+fx,0,x,1,(x-x,0,)+fx,0,x,1,x,2,x,n,(x-x,0,)(x-x,1,)(x-x,n,),其中:,fx,0,x,1,一阶差商,fx,0,x,1,x,2,x,n,n阶差商,注:,牛顿插值法与拉格朗日插值法,同一个多项式,不一样表示方式,不过计算量不一样,牛顿插值法计算量小。,这两种方法在MATLAB 中没有现成命令和函数,因为它们存在,龙格现象,。,第12页,牛顿插值法matlab实现,function Y=newpoly(x,y,X)%牛顿插值,n=length(x);,D=zeros(n);,D(:,1)=y;,for j=2:n%计算差商矩阵,for k=j:n,D(k,j)=(D(k,j-1)-D(k-1,j-1)/(x(k)-x(k-j+1);,end,end,C=D(n,n);,for k=(n-1):-1:1%结构插值多项式,C=conv(C,poly(x(k);,m=length(C);,C(m)=C(m)+D(k,k);,end,Y=polyval(C,X);,第13页,龙格现象,Runge,在上个世纪初发觉:,在,-5,5,上用,n+1,个,等距,节点作n次插值多项式,P,n,(x),,,当在,n,时,插值多项式P,n,(x)在区间,中部,趋于,f(x)=1/(1+x,2,),但对于3.63x5x,P,n,(x)严重发散。,用图形分析问题。,第14页,for n=10:2:20%从10等份到20等份,x0=-5:10/n:5;%插值节点,y0=1./(1+x0.2);%插值节点处准确函数值,x=-5:0.1:5;%要进行计算函数值点,y=lagrange(x0,y0,x);%调用函数计算x点函数值,plot(x0,y0,*,x,1./(1+x.2),r,x,y)%绘制图形,pause%等候,按任意键,end,第15页,for n=4:2:10%从4等份到10等份,x0=-5:10/n:5;%插值节点,y0=1./(1+x0.2);%插值节点处准确函数值,x=-5:0.1:5;%要进行计算函数值点,y=lagrange(x0,y0,x);%调用函数计算x点函数值,plot(x0,y0,b-*,x,1./(1+x.2),r,x,y,k)%绘制图形,pause%等候,按任意键,end,第16页,3、分段低次插值法,(1)分段线性插值,定义:,已知n+1个不一样节点x,0,x,1,x,n,结构分段多项式I(x),使之满足,l,I(x)在a,b上连续;,l,I(x,k,)=y,k;,l,I(x)在x,i,x,i+1,上是一次多项式;,I(x)=,第17页,(2)分段三次埃尔米特插值法,定义:,已知n+1个不一样节点x,0,x,1,x,n,结构分段多项式I(x),使之满足:,l,I(x,k,)=y,k,,I(x,k,)=y,k,;,l,I(x)在x,i,x,i+1,上是三次次多项式。,第18页,4、三次样条插值法,对于给定n+1个不一样节点x,0,x,1,x,n,及函数值y,0,y,1,y,n,,,其中a=x,0,x,1,x,n,=b,结构三次样条插值函数S(x)。,S(x)称为三次样条函数时需满足:,l,S(x)在a,b上二阶导数连续;,l,S(x,k,)=y,k,(k=0,1,n);,l,每个子区间x,k,x,k+1,上S(x)是三次多项式(k=0,1,n)。,第19页,四、插值法matlab实现,命令:interp1(x0,y0,x,method),其中:x0:插值节点;,y0:插值节点处函数值;,x:要计算函数值点;,method:,l i n e a r,:分段线性插值;,c u b i c :分段三次埃尔米特插值;,s p l i n e:三次样条插值。,第20页,五、插值法应用,1、,一水库上游河段降暴雨,依据预报测算上游流入水库流量为Q(t)(10,2,立方米/秒),:,t(时)8 12 16 24 30 44 48 56 60,Q(t)36 54 78 92 101 35 25 16 13,经过这个预报值,分别用不一样数值方法插值法来预计14 和20时上游流入水库流量,,并利用不一样插值方法描绘水流量曲线。,第21页,程序设计:,clear,x0=8,12,16,24,30,44,48,56,60;,y0=36,54,78,92,101,35,25,16,13;,x=14,20;,xx=8:0.1:60;,yl=interp1(x0,y0,x,linear)%分段线性插值法,yc=interp1(x0,y0,x,cubic)%分段三次埃尔米特插值法,ys=interp1(x0,y0,x,spline)%三次样条插值法,xyl=interp1(x0,y0,xx,linear);,xyc=interp1(x0,y0,xx,cubic);,xys=interp1(x0,y0,xx,spline);,plot(x0,y0,*,xx,xyl,r,xx,xyc,k,xx,xys,g),第22页,2、,在一天24小时内,从零点开始每间隔2小时测得环境温度为(摄氏度)12,9,9,10,18,24,28,27,25,20,18,15,13推测在每一分钟时温度.并利用不一样插值方法描绘温度曲线。,第23页,3、下表给出x、y数据位于机翼端面轮廓线上,Y1和Y2分别对应轮廓上下线。假设需要得到x坐标每改变0.1时y坐标,试完成加工所需数据,画出曲线.,x,0,3,5,7,9,11,12,13,14,15,Y1,0,1.8,2.2,2.7,3.0,3.1,2.9,2.5,2.0,1.6,Y2,0,1.2,1.7,2.0,2.0,2.0,1.8,1.2,1.0,1.6,第24页,二维插值,前面命令interp1()是一维插值,现实中有很多问题需要二维插值.二维插值是基于与一维插值一样基本思想.,第25页,二维插值MATLAB实现,在MATLAB中,二维插值命令惯用有两个,,1、一个是网格节点插值:,z=interp2(x0,y0,z0,x,y,method),其中,,z:被插值点处函数值;,x0,y0,z0:插值节点,x0,y0为向量,z0是矩阵,其列数等于x0长度,行数等于y0长度;,x,y:被插值点;,interp1(x0,y0,x,method),第26页,山体地貌,要在某山区方圆大约27平方公里范围内修建一条公路,从山脚出发经过一个居民区,再抵达一个矿区。横向纵向分别每隔400米测量一次,得到一些地点高程:,试做出该山区地貌图,并对几个插值法进行比较.,第27页,程序设计:,clear,x0=1200:400:4000;,y0=1200:400:3600;,z0=1130 1250 1280 1230 1040 900 500 700;,1320 1450 1420 1400 1300 700 900 850;,1390 1500 1500 1400 900 1100 1060 950;,1500 1200 1100 1350 1450 1200 1150 1010;,1500 1200 1100 1550 1600 1550 1180 1070;,1500 1550 1600 1550 1600 1600 1600 1550;,1480 1500 1550 1510 1430 1300 1200 980;,xi=1200:1:4000;%加密数据点,yi=1200:1:3600;,zil=interp2(x0,y0,z0,xi,yi,linear);%线性插值,zic=interp2(x0,y0,z0,xi,yi,cubic);%三次插值,zis=interp2(x0,y0,z0,xi,yi,spline);%样条插值,subplot(2,2,1),mesh(x0,y0,z0),subplot(2,2,2),mesh(xi,yi,zil),subplot(2,2,3),mesh(xi,yi,zic),subplot(2,2,4),mesh(xi,yi,zis),第28页,第29页,2、另一个是离散数据节点插值命令:,z=griddata(x0,y0,z0,x,y,method),其中,,z:被插值点处函数值;,x0,y0,z0:插值节点,x0,y0,z0均为向量;,x,y:被插值点;,method:插值方法,包含:,linear线性插值;,cubic 三次插值;,第30页,船在该海域会搁浅吗?,在某海域测得一些点(x,y)处水深z由下表给出,船吃水深度为5英尺,在矩形区域(75,200)*(-50,150)里哪些地方船要防止进入.,第31页,处理问题步骤:,1.作出测量点分布图;,2.求出矩形区域(75,200)*(-50,150)细分网格节点之横、纵坐标向量;,3.利用MATLAB中散点插值函数求网格节点水深;,4.作出海底曲面图形和等高线图;,5.作出水深小于5海域范围.,第32页,程序,clear,x0=129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162 117.5;,y0=7.5 141.5 23 147 22.5 137.5 85.5-6.5-81 3 56.5-66.5 84-33.5;,z0=-4-8-6-8-6-8-8-9-9-8-8-9-4-9;,subplot(2,2,1),plot(x0,y0,+);%作出测量点分布图;,x=75:1:200;%加密,y=-50:1:150;,x,y=meshgrid(x,y);,z=griddata(x0,y0,z0,x,y,cubic);,subplot(2,2,2),mesh(x,y,z),%用插值方法求出网格节点处z坐标矩阵,绘制出三维图形,subplot(2,2,3),meshc(x,y,z),%绘制等高线,subplot(2,2,4),contour(x,y,z,-5-5);%水深5英尺处海底曲面等高线,grid on,第33页,第34页,
展开阅读全文