插值和拟合讲义精.ppt
《插值和拟合讲义精.ppt》由会员分享,可在线阅读,更多相关《插值和拟合讲义精.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、插值和拟合讲义第1页,本讲稿共77页11一维插值一维插值22二维插值二维插值第2页,本讲稿共77页第3页,本讲稿共77页第4页,本讲稿共77页第5页,本讲稿共77页注:Hermite插值(略)第6页,本讲稿共77页Runge现象第7页,本讲稿共77页第8页,本讲稿共77页第9页,本讲稿共77页用用MATLAB作插值计算作插值计算一维插值函数:一维插值函数:yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点插值节点插值节点xi处的插处的插值结果值结果nearest 最邻近插值;最邻近插值;linear 线性插值线性插值(缺省);缺省);spline 三次样条插值;
2、三次样条插值;cubic 立方插值;立方插值;缺省时缺省时 分段线性插值分段线性插值 注注意意:所所有有的的插插值值方方法法都都要要求求x是是单单调调,并并且且xi不能够超过不能够超过x的范围的范围第10页,本讲稿共77页例例1.用三次样条插值选取用三次样条插值选取11个基点计算插值个基点计算插值x0=linspace(-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)此例,可
3、以看出插值函数得到的函数图像与原函数很接近。此例,可以看出插值函数得到的函数图像与原函数很接近。第11页,本讲稿共77页 例例2 2:从:从1 1点点1212点点的的1111小时内,每隔小时内,每隔1 1小时测量一次小时测量一次温度,测得的温度的数值依次为:温度,测得的温度的数值依次为:5 5,8 8,9 9,1515,2525,2929,3131,3030,2222,2525,2727,2424试估计每隔试估计每隔1/101/10小时的小时的温度值温度值hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=interp1
4、(hours,temps,h,spline);%(直接输出数据将是很多的)plot(hours,temps,+,h,t,b,hours,temps,r:)%作图xlabel(Hour),ylabel(Degrees Celsius)第12页,本讲稿共77页xy机翼下轮廓线例例3.3.已知飞机下轮廓线上数据如下,求已知飞机下轮廓线上数据如下,求x每改变每改变0.1时的时的y值值第13页,本讲稿共77页x0=0 3 5 7 9 11 12 13 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=interp1(x0,y0,x)
5、;y2=interp1(x0,y0,x,spline);subplot(2,1,1)plot(x0,y0,k+,x,y1,r)gridtitle(piecewise linear)subplot(2,1,2)plot(x0,y0,k+,x,y2,r)gridtitle(spline)第14页,本讲稿共77页第15页,本讲稿共77页第16页,本讲稿共77页第17页,本讲稿共77页第18页,本讲稿共77页 要求要求x0,y0单调;单调;x,y可取为矩阵,或可取为矩阵,或x取行向量,取行向量,y取取为列向量,为列向量,x,y的值分别不能超出的值分别不能超出x0,y0 0的范围的范围z=interp2
6、(x0,y0,z0,x,y,method)被插值点插值方法用用MATLAB作网格节点数据的插值作网格节点数据的插值插值节点被插值点的函数值nearest 最邻近插值;最邻近插值;linear 双线性插值(缺省值);双线性插值(缺省值);cubic 双三次插值;双三次插值;缺省时缺省时 双线性插值双线性插值.第19页,本讲稿共77页例例4.4.测得平板表面测得平板表面3 35 5网格点处的温度分别为:网格点处的温度分别为:82 81 80 82 84 82 81 80 82 84 79 63 61 65 81 79 63 61 65 81 84 84 82 85 86 84 84 82 85 8
7、6 试作出平板表面的温度分布曲面试作出平板表面的温度分布曲面z=f(x,y)的图形的图形输入以下命令: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)1.先在三维坐标画出原始数据,画出粗糙的温度分布曲线图.2以平滑数据,在 x、y方向上每隔0.2个单位的地方进行插值.第20页,本讲稿共77页再输入以下命令:xi=1:0.2:5;yi=1:0.2:3;zi=interp2(x,y,temps,xi,yi,cubic);mesh(xi,yi,zi)画出插值后的温度分布曲面图.第21页,本讲稿
8、共77页 通过此例对最近邻点插值、双线性插值方法和双三次插值方法的插值效果进行比较第22页,本讲稿共77页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),ylabel(Y),zlabel(Z)figure
9、(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);第23页,本讲稿共77页 插值函数插值函数griddata格式为格式为:cz=griddata(x,y,z,cx,cy,method)用用MATLAB作散点数据的插值计算作散点数据的插值计算
10、 要求要求cx取行向量,取行向量,cy取为列向量取为列向量被插值点插值方法插值节点被插值点的函数值nearest最邻近插值最邻近插值linear 双线性插值双线性插值cubic 双三次插值双三次插值v4-MATLAB提供的插值方法提供的插值方法缺省时缺省时,双线性插值双线性插值第24页,本讲稿共77页 例例6.6.在某海域测得一些点在某海域测得一些点(x,y)处的水深处的水深z由下表给由下表给出,船的吃水深度为出,船的吃水深度为5 5英尺,在矩形区域(英尺,在矩形区域(7575,200200)(-50-50,150150)里的哪些地方船要避免进入)里的哪些地方船要避免进入第25页,本讲稿共77
11、页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=-50:0.5:150;cz=griddata(x,y,z,cx,cy,cubic);第26页,本讲稿共77页4.作出水深小于5的海域范围,即z=5的等高线.3 作海底曲面图meshz(cx,cy,cz),rotate3dxlabel(X),y
12、label(Y),zlabel(Z)figure(2),contour(cx,cy,cz,-5-5);gridhold onplot(x,y,+)xlabel(X),ylabel(Y)第27页,本讲稿共77页用用MATLAB解拟合问题解拟合问题1.1.线性最小二乘拟合线性最小二乘拟合2.2.非线性最小二乘拟合非线性最小二乘拟合第28页,本讲稿共77页第29页,本讲稿共77页第30页,本讲稿共77页第31页,本讲稿共77页第32页,本讲稿共77页第33页,本讲稿共77页第34页,本讲稿共77页用用MATLAB作线性最小二乘拟合作线性最小二乘拟合1.1.作多项式作多项式f(x)=a1xm+amx+
13、am+1拟合拟合,可利用已有程序可利用已有程序:a=polyfit(x,y,m)2.2.对超定方程组对超定方程组可得最小二乘意义下的解可得最小二乘意义下的解,用,用3.3.多项式在多项式在x处的值处的值y可用以下命令计算:可用以下命令计算:y=polyval(a,x)输出拟合多项式系数输出拟合多项式系数a=a1,am,am+1(数组数组))输入同长度输入同长度的数组的数组x,y拟合多项拟合多项式次数式次数第35页,本讲稿共77页即要求即要求 出二次多项式出二次多项式:中中 的的使得使得:例例7.对下面一组数据作二次多项式拟合对下面一组数据作二次多项式拟合第36页,本讲稿共77页1)输入以下命令
14、)输入以下命令:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;R=(x.2)x ones(11,1);A=Ry解法解法1 1用解超定方程的方法用解超定方程的方法2)计算结果)计算结果:=-9.8108 20.1293 -0.0317第37页,本讲稿共77页1)输入以下命令:)输入以下命令:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;A=polyfit(x,y,2)z=polyval(A,x);plot(x,
15、y,k+,x,z,r)%作出数据点和拟合曲线的图形作出数据点和拟合曲线的图形2)计算结果:)计算结果:=-9.8108 20.1293 -0.0317解法解法2用多项式拟合的命令用多项式拟合的命令第38页,本讲稿共77页1.1.lsqcurvefit已知数据点数据点:xdata=(xdata1,xdata2,xdatan),ydata=(ydata1,ydata2,ydatan)用用MATLAB作非线性最小二乘拟合作非线性最小二乘拟合 MATLAB提供了两个求非线性最小二乘拟合的函数:提供了两个求非线性最小二乘拟合的函数:lsqcurvefit和lsqnonlin两个命令都要先建立两个命令都要
16、先建立M M文件文件fun.m,在其中定义函数,在其中定义函数f(x),但两者定义,但两者定义f(x)的方式是不同的的方式是不同的,可参考例题可参考例题.用以求含参量用以求含参量x(向量)的向量值函数(向量)的向量值函数F(x,xdata)=(F(x,xdata1),F(x,xdatan)T中的参变量中的参变量x(x(向量向量),),使得使得 第39页,本讲稿共77页 输入格式为输入格式为:(1)x=lsqcurvefit(fun,x0,xdata,ydata);(2)x=lsqcurvefit(fun,x0,xdata,ydata,options);(3)x=lsqcurvefit(fun,
17、x0,xdata,ydata,options,grad);(4)x,options=lsqcurvefit(fun,x0,xdata,ydata,);(5)x,options,funval=lsqcurvefit(fun,x0,xdata,ydata,);(6)x,options,funval,Jacob=lsqcurvefit(fun,x0,xdata,ydata,);fun是一个事先建立的是一个事先建立的定义函数定义函数F(x,xdata)的的M文件文件,自变量为自变量为x和和xdata说明:x=lsqcurvefit(fun,x0,xdata,ydata,options);迭代初值迭代初
18、值已知数据点已知数据点选项见无选项见无约束优化约束优化第40页,本讲稿共77页 lsqnonlin用以求含参量用以求含参量x(向量)的向量值函数(向量)的向量值函数 f(x)=(=(f1 1(x),),f2 2(x),),fn(x)T T 中的参量中的参量x,使得,使得 最小最小 其中其中 fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai 2.lsqnonlin已知数据点:已知数据点:xdata=(xdata1,xdata2,xdatan)ydata=(ydata1,ydata2,ydatan)第41页,本讲稿共77页输入格式为:输入格式为:1)x=lsq
19、nonlin(fun,x0);2)x=lsqnonlin(fun,x0,options);3)x=lsqnonlin(fun,x0,optionsgrad);4)x,options=lsqnonlin(fun,x0,);5)x,options,funval=lsqnonlin(funx0,);说明:x=lsqnonlin(fun,x0,options);fun是一个事先建立的是一个事先建立的定义函数定义函数f(x)的的M文件,文件,自变量为自变量为x迭代初值迭代初值选项见无选项见无约束优化约束优化第42页,本讲稿共77页 例例8.用下面一组数据拟合用下面一组数据拟合 中的参数中的参数a,b,k
20、该问题即解最优化问题:该问题即解最优化问题:第43页,本讲稿共77页 1 1)编写)编写M M文件文件 curvefun1.m function f=curvefun1(x,tdata)f=x(1)+x(2)*exp(-0.02*x(3)*tdata)%其中其中 x(1)=a;x(2)=b;x(3)=k;2)输入命令)输入命令tdata=100:100:1000cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;x0=0.2,0.05,0.05;x=lsqcurvefit(curvefun1,x0,tdata,cdata)
21、f=curvefun1(x,tdata)F(x,tdata)=,x=(a,b,k)解法解法1 1.用命令用命令lsqcurvefit第44页,本讲稿共77页3 3)运算结果为)运算结果为:f=0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063 x=0.0063 -0.0034 0.25424)结论)结论:a=0.0063,b=-0.0034,k=0.2542第45页,本讲稿共77页 解法解法 2 用命令用命令lsqnonlin f(x)=F(x,tdata,ctada)=x=(a,b,k)1)编写编写M M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拟合 讲义
限制150内