第1章插值法1.1插值法1.2Lagrange插值1.3Newton插值1.4Hermite插值1.5分段线性插值1.6三次样条插值1.7程序示例习题11.1插值法插值问题的背景在生产和实验中,函数f(x)或者其表达式不便于计算,或者无表达式而只有函数在给定点的函数值(或其导数值),此时我们希望建立一个简单的而便于计算的近似函数(x),来逼近函数f(x)。常用的函数逼近方法有:►插值法;►最小二乘法(或称均方逼近);►一致逼近等。插值法插值法是函数逼近的重要方法之一,有着广泛的应用。简单地说,插值法就是用给定的(未知)函数f(x)的若干点上的函数值(或其导数值)来构造f(x)的近似函数(x),要求(x)与f(x)在给定点的函数值相等。有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermite插值,分段插值和样条插值。函数可以未知,只需已知若干点上的值。设f(x)为[a,b]上的函数,在互异点x0,x1,...,xn处的函数值分别为f(x0),f(x1),…,f(xn),构造一个简单函数(x)作为函数f(x)的近似表达式y=f(x)(x),使(xi)=f(xi),i=0,1,2,…,n(1.0)则称(x)为关于节点x0,x1,...,xn的插值函数;称x0,x1,...,xn为插值节点;称(xi,f(xi)),i=1,2,…,n为插值点;f(x)称为被插值函数。(1.0)式称为插值条件。这类问题称为插值问题。构造出(x),对f(x)在[a,b]上函数值的计算,就转化为(x)在对应点上的算。插值法的定义1.2Lagrange插值选用代数多项式作为插值函数。Lagrange插值就是选用节点上的函数值作为插值条件。1.2.1线性插值给定两个点(x0,y0),(x1,y1),x0≠x1,确定一个一次多项式插值函数,简称线性插值。待定系数法设L1(x)=a0+a1x,代入插值点当x0≠x1时,方程组的解存在唯一。01000111aaxyaaxy即插值条件:L1(xi)=f(xi)=yi,i=0,1解之得,因此,(1.1)式称为一次Lagrange插值。由求解过程知,用待定系数法,需要求解线性方程组,当已知节点较多时,即方程的未知数多,计算量较大,不便向高阶插值推广。011001010101,.xyxyyyaaxxxx0110011010101010110()(1.1)xyxyyyLxxxxxxxxxxyyxxxx 插值基函数法分别构造两个节点上的一次函数,使其在本节点上的函数值为1,而在其他节点上的函数值为0。设l0(x),l1(x)分别为满足上述条件的一次函数,即或简单地记为对于过两个节点x0,x1的线性插值(1.1)式,令00100111()1,()0()0,()1lxlxlxlx 1,,()0,.ijijijlxij 01010110(),(),xxxxlxlxxxxx显然,l0(x),l1(x)满足:线性插值函数可以写成节点上函数值的线性组合,即L1(x)=l0(x)y0+l1(x)y1.称l0(x),l1(x)分别为x0,x1的插值基函数。线性插值误差定理1设L1(x)为一次Lagrange插值函数,若f(x)一阶连续可导,f(x)在(a,b)上存在,则对任意给定的x∈(a,b),至少存在一点ζ∈(a,b),使得证明因为L(xi)=f(xi),i=0,1,所以,R1(x0)=R1(x1)=0,即x0,x1为R1(x)的两个根。因此,可设R1(x)为(),,0,1.ijijlxij 易知满足插值条件:L1(xi)=yi,i=0,11101()()()()()()(1.3)2!fRxfxLxxxxx 可设R1(x)=k(x)(x-x0)(x-x1).固定任一x,作辅助函数,令则Ψ(xi)=0,i=1,2,Ψ(x)=0,即Ψ(t)有3个零点x0,x1,x。假定,x0xx1,分别在[x0,x]和[x,x1]上应用洛尔(Rolle)定理,可知,Ψ′(t)在每个区间上至少存在一个零点,ζ1,ζ2,使Ψ′(ζ1)=0,Ψ′(ζ2)=0(此即Ψ′(t)有2个零点)。再利用洛尔定理知,Ψ′(t)在[ζ1,ζ2]上至少有一个零点ζ,使Ψ″(ζ)=0。对Ψ(t)求2阶导数得,Ψ″(t)=f″(t)-2!k(x),因为Ψ″(ζ)=0,所以,有k(x)=f″(ζ)/2!。证毕。101()()()()()(),tftLtkxtxtx1.2.2二次插值给定3个互异插值点(xi,f(xi)),i=0,1,2,确定一个二次插值多项式函数,即抛物线插值(如图)。待定系数法设L2(x)=a0+a1x+a2x2,代入3个插值条件:L2(xi)=f(xi)),i=0,1,2,解线形方程组可得a0,a1,a2。插值基函数法构造3个节点上2次插值基函数l0(x),l1(x),l2(x),使满足li(xj)=δij,i,j=0,1,2。因为l0(x)为2次插值基函数,且l0(x1)=l0(x2)=0,所以可设l0(x)=A(x-x1)(x-x2)。由条件:l0(x0)=1,得同理可得,二次Lagrange插值多项式为01021,()()Axxxx1200102()()().()()xxxxlxxxxx02011210122021()()()()(),().()()()()xxxxxxxxlxlxxxxxxxxx 220011220()()()()()()()()()(1.4)iiiLxlxfxlxfxlxfxlxfx 容易验证满足插值条件二次插值的误差22012()()()()()()()(1.5)3!fRxfxLxxxxxxx 定理设L2(x)为二次Lagrange插值函数,若f(x)∈C3[a,b],则任给x∈(a,b),至少存在一点ζ=ζ(x)∈(a,b),使提示:因为R2(x0)=R2(x1)=R2(x2)=0,可设作辅助函数易知,x0,x1,x2,x为Ψ(t)的4个零点,在4个点两两组成的区间上,应用Rolle定理,然后再反复应用Rolle定理即得证。2012()()()()().Rxkxxxxxxx2012()()()()()()(),tftLtkxtxtxtx例1.1给定sin11°=0.190809,sin12°=0.207912,求线性插值,并计算sin11°30'和sin10°30'。解x0=11°,x1=12°,y0=0.190809,y1=0.207912,sin11°30'≈L1(11.5)=0.199361,sin10°30'≈L1(10.5)=0.182258.由定理1知,误差为10101(12)(11)()(12)(11).11121211xxLxyyxyxy准确值为:sin11°30’=0.199368sin10°30’=0.182236101()sin()()()()(11)(12).2!2fRxxxxxxx11()(11)(12)21(11.511)(11.512)0.125.2Rxxx 01111211.522xxx例1.2给定sin11°=0.190809,sin12°=0.207912,sin13°=0.224951,构造二次插值,并计算sin11°30′。解x0=11,x1=12,x2=13,y0=0.190809,y1=0.207912,y2=0.224951,sin11°30′≈L2(11.5)=0.199369,sin11°30′=0.199368.2(12)(13)(11)(13)()0.1908090.207912(1112)(1113)(1211)(1213)(11)(12)0.224951(1312)(1312)xxxxLxxx 例1.3要制作三角函数sinx的值表,已知表值有四位小数,要求用线性插值引起的截断误差不超过表值的舍入误差,试确定其最大允许的步长。解f(x)=sinx,设xi-1,xi为任意两个插值节点,最大允许步长记为h=hi=xi-xi-1,111111121124()sin()()()()()2!211()()()()22221()(),88110,0.02.82iiiiiiiiiiiiiiiifRxxxxxxxxxxxxxxxxxxxhxxxxhh 1.2.3n次Lagrange插值多项式已知n+1个互异插值节点(xi,f(xi)),i=0,1,2,…,n,研究n次插值多项式的存在性及其表示形式。★存在性设n次多项式为代入插值点,即插值条件:Pn(xi)=f(xi),i=0,1,2,…,n,得其范德蒙德(Vandermonde)行列式为:20121(),(1.6)nnnPxaaxaxax 20102000201121112012()()(1.6)()nnnnnnnnnnaaxaxaxfxaaxaxaxfxaaxaxaxfx 所以,(1.6)的解存在唯一。解出(1.6)的解a0,a1,…,an,代入(1.6)1即得n次插值多项式Pn(x)。★n次插值多项式的构造有上面的讨论知,用待定系数法要求解一个线性方程组,计算量大,实际中不可取。20002111012011(,,,)1()0,nnnnnnnijjinxxxxxxVxxxxxxxx 插值基函数法分别构造x0,x1,…,xn上的n次插值基函数l0(x),l1(x),…,ln(x),满足性质:即1,0,1,2,,()0ijijijnlxij ,节点基函数x0x1x2…xnl0(x)100…0l1(x)010…0l2(x)001…0………………ln(x)000…1先构造l0(x)。有上表知,x1,x2,…,xn为l0(x)的零点,设由l0(x0)=1,得同理可设由li(xi)=1,得0012()()()(),nlxaxxxxxx001020120010201,()()()()()()().()()()nnnaxxxxxxxxxxxxlxxxxxxx 011()()()()(),iiiinlxaxxxxxxxx1111,()()()()iiiiiinaxxxxxxxx 于是,所以我们得到n次Lagrange插值多项式:容易验证,Ln(xi)=f(xi),i=0,1,2,…,n.0110111()()()()()()()()(),1,2,,(1.7)iiniiiiiinnjijjjixxxxxxxxlxxxxxxxxxxxinxx 00110()()()()()()()()()(1.8)nnnniiiLxlxfxlxfxlxfxlxfx 例1.4已知插值点(-2.00,17.00),(0.00,1.00),(1.00,2.00),(2.00,17.00),求三次插值,并计算f(0.6)。解先计算4个节点上的基函数:1230010203()()()()()()()(0)(1.00)(2.00)(2.000)(2.001.00)(2.002.00)1(1)(2),24xxxxxxlxxxxxxxxxxxxx 0231101213()()()1()(2)(