资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
(1)(3)第六章插值与拟合在实际中,常常需要确定一个变量依存于另一个或更多的变量的关系,即函数。但实际上确定函数的形式(线性形式、乘法形式、幕指形式或其它形式)时往往没有先验的依据。 只能在实验或测量得到的离散数据的基础上进行试验,这时候我们常常会用到插值与拟合的方法。插值与拟合就是要通过已知的数据去确定某一类已知函数的参数或寻找某个近似函数, 使所得到的近似函数对已知数据有较高的拟合进度。如果要求这个近似函数经过所有已知的数据点,则称此类问题为插值问题。当所给的数据较多时, 用插值方法所得到的插值函数会很复杂,所以,通常插值方法用于数据较少的情况。其实,通常情况下数据都是由观测或试 验得到的,往往会带有一定的随机误差,因而,要求近似函数通过所有的数据点也是没有必要的。如果不要求近似函数通过所有的数据点,而是要求他能较好地反映数据的整体变化趋势,则解决这类问题的方法称为数据拟合。虽然插值与拟合都是要构造已有数据的近似函数,但因对近似要求的准则不同,因此二者在数学方法上有很大的差异。第一节一般插值方法1. 问题的提出插值问题的一般提法:已知n -1个节点(xj, yj) (j二0,1/ n),其中xj (j = 1,2 - , n)互不相同,要求构造一个函数y = f(x)使得yj = f (召)(j =0,1,n)。我们通常称这样一类问题为插值问题,并称构造的函数y = f (x)为插值函数,xj (j = 1 , 12, n为插值节点,X =f(Xj) (j = o ,IHn 为插值条件。2. 多项式插值从理论和计算的角度看,多项式是最简单的函数,设f (X)是n次多项式,记作Ln(x) =anXn an2 d x a对于节点(Xj,yj应有Ln (Xj ) = yj , j - 0,1,2,,n为了确定插值多项式Ln(x)中的系数a.,a.亠,c ,a,将(1 )代入(2), 有an Xo a“ 4X0 a1Xo a - yon9nXnnan4XnnXonX1n 4Xon 4X1=(an,an = ,ao)T,Y 二(yo, y1,yn)Tn 4Xn1 / 14anX; - an4X;a a。= %XA=Y注意:detX是Vandermonde行列式,利用行列式性质可得detX :| 丨区-Xj)o 勺:k m因xj互不相同,故detX = 0,于是方程(4 )中A有唯一解,即根据n 1个节点可以 确定唯一的n次插值多项式。3.拉格朗日(Lagrange)插值多项式实际上比较方便的做法不是解方程(4)求A,而是先构造一组基函数:li(x)二(X Xo)(X Xid)(XXi 1)(X Xn)(Xi Xo) (Xi Xy)(X X 1) (Xi -Xn),i =0,1,2, ,n(5)li(x)是n次多项式,满足h(Xj) J: = i,j =0,12,n(6)0, i和nLn(x) yli(X)(7)i =0显然Ln(x)是满足(2)的n次多项式,由方程(4)解的唯一性,(7)式表示的Ln(x)的解与(1)式相同。(5)、( 7)称拉格朗日插值多项式,用Ln(x)计算插值称拉格朗日多项式插值。4.牛顿(Newton)插值构造门次多项式 Nn(x) = f (X0) f(X,X1)(X -X0)f(X,X1,X2)(X-X0)(X-xj+f (X。/,Xn)(X x)(x Xj(X X称该多项式为牛顿插值多项式,其中上f (x0) f (xjf(X,X1)01(二个节点,一阶差商)X0 Xjf(X0,XJ - f(XX2)f(X,X1,X2)-(二个节点,二阶差商)X0 X2f (X0,Xt,,Xn4)- f (%,焉)f(X0,X1,.,Xn)0 1 口1 已 (n+1 个节点,n 阶差商)X0 Xn实际上,牛顿插值公式是拉格朗日插值公式的一种变形,二者是等价的。另外还有著名的埃艾米特(Hermite )插值等。5.分段线性插值简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插 值函数,记作ln(X),它满足ln(Xj)=yj,且ln(X)在每个小区间Xj ,Xj 1上是线性函数 (j 71, , n)。I n (x)可以表示为(12)ln(X)yjlj(X)j =0gXjxj _ Xj 二(j 0时舍去)x x -(13)I j (x) = , Xj 兰 x 兰 Xj 卅 (j = n时舍去)Xj _Xj 卅0,其它In(x)有良好的收敛性,即对于 Xa,b有,lim ln(x)=g(x)。n :用ln(x)计算X点的插值时,只用到 X左右的两个节点,计算量与节点个数n无关。但n越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。Matlab中分段线性插值有现成的程序:y=interp1(x0, y0,x)其中输入x0、y0、x分别表示节点数据(xj,yj) (j = 0,1/ n)和插值点以数组,输出y为插值点对应的插值。数组长度自定义(x0和y0同长度,x和y同长度)。第二节样条函数插值方法1. 样条函数的由来分段线性插值虽然简单, n足够大时精度也相当高。 但是折线在节点处显然不光滑, 即 In(x)在节点处导数不连续。这影响了它在诸如机械加工等领域(希望插值曲线光滑)中的应用。所谓样条(Spline),来源于船舶、飞机等设计中描绘光滑外形曲线用的绘图工具。一根 有弹性的细长木条用压铁固定在节点上,其它地方让它自然弯曲,如此画出的曲线称为样条曲线。因为这种曲线的曲率是处处连续的,所以要求样条函数的二阶导数连续。人们普遍使用的样条函数是分段三次多项式。2. 三次样条函数三次样条函数 记作S(x),a空x乞b。要求它满足以下条件:a) 在每个小区间Xi*。=1,,n)上是3次多项式;b) 在a乞x乞b上二阶导数连续;c) S(n)二 yj =0,1, ,n。(14)由条件a,不妨将S(x)记为S(x) =S (x),x Xi:,Xi,i =1,,nS(x) =ajX3 +bjX2 +CjX + di( 15)其中ai ,bi,Ci,di为待定系数,共4n个。由条件b,S(Xi) =Si41(Xi)*S:(Xi)=Si;1(Xi)i =1,2,n-1( 16)0(xi) = SE(Xi)容易看出,(14)、(16)式共含有4n-2个方程,为确定 S(x)的4n个待定参数,尚需再 给出2个条件。最常用的是所谓自然边界条件:3 / 14S”(X)=S“(Xn)=O( 17 )可以证明,4 n阶线性方程组(14)、(16)、(17)有唯一解,即S(x)被唯一确定。但是,这 种解法的工作量太大,方程组又常呈病态,所以实际上要设计简便的解法。Matlab中三次样条插值有现成的程序:y=interp1 ( xO, yO, x, spline) 或 y=spli ne(x0,y0,x)其中输入x0、y0、x分别表示节点数据(xj, yj) (j =0,1,n)和插值点以数组,输出 y为插值点对应的插值。数组长度自定义(x0和y0同长度,x和y同长度)。另外,像分段线性函数ln(X)样,三次样条函数S(x)也有良好的收敛性,即在相当一般的条件下,lim S(x)二g(x)。n_jpc3. 插值方法小结拉格朗日插值是高次多项式插值(n+1个节点上用不超过n次的多项式),插值曲线光滑,误差估计有表达式。但有振荡现象,收敛性不能保证。这种插值主要用于理论分析,实 际意义不大。分段线性和三次样条插值是低次多项式插值,简单实用,收敛性有保证,但不光滑,三次样条插值的整体光滑性已大有提高,应用广泛,唯误差估计较困难。第三节Matlab在插值问题中的应用1拉格朗日插值 拉格朗日插值没有有现成的程序,需要编译实现。1.1 Matlab 实现函数Lagrange.mfunction y=lagra nge(x0,y0,x) n=le ngth(x0);m=le ngth(x); for i=1:mz=x(i);s=0.0;for k=1: np=1.0;for j=1: n if j=k p=p*(z-x0(j)/(x0(k)-x0(j);endends=p*y0(k)+s;end y(i)=s; end1.2应用:x=1 2 3 4; y=0 -5 -6 3;lagra nge(x,y,2.5)ans =-6.37502. Runge现象及分段线性插值2.1 Runge 现象Runge在本世纪初发现:在-1,1上用n 1个等距结点作插值多项式Pn(x),使其在各结点的值与函数 y(x) =1/(1 25x2)在结点的值相等。但在n 时,插值多项式R(x)在区间中部趋于y(x)。但对于0.726 1 x I 1的x , Pn(x)严重发散。2通过下面的例子,以图形的方式体会Runge现象(令y(x) = 1/(1 X )x=-5:1:5; y=1./(1+x.A2); x0=-5:0.1:5;y0=lagra nge(x,y,x0); y1=1./(1+x0.A2);%绘制图形plot(x0,y0,-r)hold on22.2 Matlab实现分段插值维插值interp1yi=i nterp1(x,y,xi)对(x,y)进行插值,计算插值点xi的函数值yi=in terp1(y,xi)默认x=1:n , n是向量y的元素个数plot(x0,y1,-b)yi=interp1(x,y,xi, method 指定特定算法插值,method可以是如下字符串lin ear线性插值spli ne三次样条插值cubic三次插值要求:x是单调,但不要求连续等距。如果x连续等距,可以选用快速插值法。调用函数时只需在 method前加” ”,女口”spline2.3例题用一维线性插值解决Runge现象0.80.60.4TTy2=i nterp1(x,y,x0);plot(x0,y2,*m)正弦曲线的插值示例0.2-0.2-0.4-0.6x=0:0.1:10;-0.8010y=si n( x);xi=0:0.25:10;yi=i nterp1(x,y,xi);plot(x,y, ,xi,yi)3. 三次样条插值y3=i nterp1(x,y,x0,*spli ne);y3=spli ne(x,y,xO);plot(x0,y3,-g)第四节数据拟合1.方法介绍在实际生活中,往往需要
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号