资源预览内容
第1页 / 共56页
第2页 / 共56页
第3页 / 共56页
第4页 / 共56页
第5页 / 共56页
第6页 / 共56页
第7页 / 共56页
第8页 / 共56页
第9页 / 共56页
第10页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
三、插值、曲线拟合三、插值、曲线拟合插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方法。插值法是实用的数值方法,是函数逼近的重要方法。在生产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。Matlab常用数据插值函数及功能函数格式功能Interp1yi=interp1(x,y,xi)一维插值。对一组点(x,y)进行插值,计算插值点xi的函数值。yi=interp1(y,xi)此格式默认x=1:n,其中n是向量y的长度,y为矩阵时,n=size(y,1)yi=interp1(x,y,xi,method)Method为指定的插值算法。Nearest最近邻点插值,linear线性插值(默认方式),spline三次样条函数插值,cubic三次插值。四种插值方法比较四种插值方法比较函数格式功能Interp2zi=interp2(x,y,z,xi,yi)二维插值。Z为由已知点的值组成的矩阵,参量x与y是与z同维的已知点的矩阵,且必须是单调的。xi与yi为需要插值的点。若xi与yi中有在x与y范围之外的点,则相应地返回NaN。zi=interp2(z,xi,yi)此格式默认x=1:n、y=1:m,其中m,n=size(z)。再按zi=interp2(x,y,z,xi,yi)情形进行计算。zi=interp2(x,y,z,xi,yi,method)用指定的算法method计算二维插值。Linear双线性插值(默认方式),Nearest最邻近插值,spline三次样条插值,cubic双三次插值。函数格式功能Interpfty=interpft(x,n)一维Fourier插值。适用于周期函数生成数据的插值。X为抽样序列,n为需要计算的等距点数,y为n点的插值计算结果。y=interpft(x,n,dim)沿着指定的方向dim进行计算。splineyy=spline(x,y,xx)三次样条数据插值。用三次样条插值计算出由向量x与y确定的一元函数在点xx处的值yy。pp=spline(x,y)返回由向量x与y确定的分段样条多项式的系数矩阵pp。注意:注意:(1)只对已知数据点集内部的点进行的插值运算称为内插,)只对已知数据点集内部的点进行的插值运算称为内插,可比较准确的估测插值点上的函数值。可比较准确的估测插值点上的函数值。(2)当插值点落在已知数据集的外部时的插值称为外插,)当插值点落在已知数据集的外部时的插值称为外插,要估计外插函数值很难。要估计外插函数值很难。MATLAB对已知数据集外部点上函数值的预测都返回对已知数据集外部点上函数值的预测都返回NaN,但可通过为但可通过为interp1函数添加函数添加extrap参数指明也用于外插。参数指明也用于外插。MATLAB的外插结果偏差较大。的外插结果偏差较大。例例1 对对 在在-1, 1上上, 用用n=20的等距分的等距分点进行线性插值点进行线性插值, 绘制绘制 f(x)及插值函数的图形及插值函数的图形.解解 在命令窗口输入在命令窗口输入:x=-1:0.1:1;y=1./(1+9*x.2);xi=-1:0.1:1;yi=interp1(x,y,xi);plot(x,y,r-,xi,yi,*)例例2. 在普通在普通V带设计中,带轮的包角带设计中,带轮的包角与包角系数与包角系数ka之间的关系如之间的关系如表所示。求表所示。求=133.5时的包角系数时的包角系数ka。包角与包角系数包角()90100110120125130135140包角系数0.690.740.780.820.840.860.880.89包角()145150155160165170175180包角系数0.910.920.930.950.960.980.991a1=90,100,110,120,125,130,135,140,145,150,155,160,165,170,175,180;a2=0.69,0.74,0.78,0.82,0.84,0.86,0.88,0.89,0.91,0.92,0.93,0.95,0.96,0.98,0.99,1;ka=interp1(a1,a2,133.5)ka=0.8740例例3. 已知实验数据如表已知实验数据如表。x00.250.500.751.00y0.9162 0.8109 0.6931 0.5596 0.4055计算插值点计算插值点x0=0.6处的函数值处的函数值y0。 x=0 0.25 0.50 0.75 1.00; y=0.9162 0.8109 0.6931 0.5596 0.4055; x0=0.6; y01=interp1(x,y,x0); y02=interp1(x,y,x0,nearest); y03=interp1(x,y,x0,pchip); y04=interp1(x,y,x0,spline); y01,y02,y03,y04y01 = 0.639700000000000y02 = 0.693100000000000y03 = 0.641818996851421y04 = 0.641831200000000例例 4 对对 在在-5, 5上上, 用用n=11个等距分点作分段个等距分点作分段线性插值和三次样条插值线性插值和三次样条插值, 用用m=21个插值点作图个插值点作图,比较结比较结果果.解解 在命令窗口输入在命令窗口输入:n=11, m=21x=-5:10/(m-1):5y=1./(1+x.2)z=0*xx0=-5:10/(n-1):5y0=1./(1+x0.2)y1=interp1(x0,y0,x)y2=interp1(x0,y0,x,spline)x y y1 y2plot(x,z,r,x,y,k:,x,y1,b,x,y2,g)gtext(Piece.-linear.),gtext(Spline),gtext(y=1/(1+x2) 0 1.0000 1.0000 1.0000 0.5000 0.8000 0.7500 0.8205 1.0000 0.5000 0.5000 0.5000 1.5000 0.3077 0.3500 0.2973 2.0000 0.2000 0.2000 0.2000 2.5000 0.1379 0.1500 0.1401 3.0000 0.1000 0.1000 0.1000 3.5000 0.0755 0.0794 0.0745 4.0000 0.0588 0.0588 0.0588 4.5000 0.0471 0.0486 0.0484 5.0000 0.0385 0.0385 0.0385例例 4 对对 在在-5, 5上上, 用用n=11个等距分点作分段个等距分点作分段线性插值和三次样条插值线性插值和三次样条插值, 用用m=21个插值点作图个插值点作图,比较结比较结果果.xyy1y2解解 在命令窗口输入在命令窗口输入:例例 5 在一天在一天24h内内, 从零点开始每间隔从零点开始每间隔2h测得的环境温度为测得的环境温度为12, 9, 9, 10, 18, 24, 28, 27, 25, 20, 18, 15, 13 (单位单位: )推测在每推测在每1s时的温度时的温度. 并描绘温度曲线并描绘温度曲线.t=0:2:24T=12 9 9 10 18 24 28 27 25 20 18 15 13plot(t,T,*)ti=0:1/3600:24T1i=interp1(t,T,ti)plot(t,T,*,ti,T1i,r-)T2i=interp1(t,T,ti,spline)plot(t,T,*,ti,T1i,r-,ti,T2i,g-)例例 6 在飞机的机翼加工时在飞机的机翼加工时, 由于机翼尺寸很大由于机翼尺寸很大, 通常在图通常在图纸上只能标出部分关键点的数据纸上只能标出部分关键点的数据. 某型号飞机的机翼上缘某型号飞机的机翼上缘轮廓线的部分数据如下轮廓线的部分数据如下:x 0 4.74 9.05 19 38 57 76 95 114 133y 0 5.23 8.1 11.97 16.15 17.1 16.34 14.63 12.16 6.69x 152 171 190y 7.03 3.99 0例例 6 在飞机的机翼加工时在飞机的机翼加工时, 由于机翼尺寸很大由于机翼尺寸很大, 通常在图通常在图纸上只能标出部分关键点的数据纸上只能标出部分关键点的数据. 某型号飞机的机翼上缘某型号飞机的机翼上缘轮廓线的部分数据如下轮廓线的部分数据如下:x=0 4.74 9.05 19 38 57 76 95 114 133 152 171 190y=0 5.23 8.1 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0 xi=0:0.001:190yi=interp1(x,y,xi,spline)plot(xi,yi)例例7 天文学家在天文学家在1914年年8月份的月份的7次观测中次观测中, 测得地球与金测得地球与金星之间距离星之间距离(单位单位: m), 并取其常用对数值与日期的一组历并取其常用对数值与日期的一组历史数据如下所示史数据如下所示, 试推断何时金星与地球的距离试推断何时金星与地球的距离(单位单位: m)的对数值为的对数值为 9.9352.日期日期18 20 22 24 26 28 30距离距离对数对数9.9618 9.9544 9.9468 9.9391 9.9312 9.9232 9.9150解解 由于对数值由于对数值 9.9352 位于位于 24 和和 26 两天所对应的对数两天所对应的对数值之间值之间, 所以对上述数据用三次样条插值加细为步长为所以对上述数据用三次样条插值加细为步长为1的数据的数据:解解 由于对数值由于对数值 9.9352 位于位于 24 和和 26 两天所对应的对数值之两天所对应的对数值之间间, 所以对上述数据用三次样条插值加细为步长为所以对上述数据用三次样条插值加细为步长为1的数据的数据:x=18:2:30y=9.9618 9.9544 9.9468 9.9391 9.9312 9.9232 9.9150 xi=18:1:30yi=interp1(x,y,xi,spline)A=xi;yiA =18.0000 19.0000 20.0000 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.00009.9618 9.9581 9.9544 9.9506 9.9468 9.9430 9.9391 9.9352 9.9312 9.9272 9.9232 9.9191 9.9150 x=linspace(0,2*pi,11); y=sin(x).*exp(-x/5); xi=linspace(0,2*pi,21); yi=interpft(y,21); plot(x,y,o,xi,yi); legend(Original,Curve by interpft)Lagrange插值n方法介绍 对给定的n个插值点 及对应的函数值 ,利用n次Lagrange插值多项式,则对插值区间内任意x的函数值y可通过下式求的:nMATLAB实现nfunction yi=lagrange(x,y,xi)nyi=zeros(size(xi);nnp=length(y);nfor i=1:npn z=ones(size(xi);n for j=1:npn if i=jn z=z.*(xi-x(j)/(x(i)-x(j);n endn endn yi=yi+z*y(i);nend例:给出f(x)=ln(x)的数值表,用Lagrange计算ln(0.54)的近似值。 x=0.4:0.1:0.8; y=log(x); x0=0.5
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号