1、第二章 插值 /* Interpolation */当精确函数 y = f(x) 非常复杂或未知时,在一系列节点 x0 xn 处测得函数值 y0 = f(x0), yn = f(xn),由此构造一个简单易算的近似函数 g(x) f(x),满足条件 g(xi) = f(xi) (i = 0, n)。这里的 g(x) 称为 f(x) 的 插值函数 。最常用的插值函数是 ?多项式x0 x1 x2 x3 x4xg(x) f(x)f(x)g(x)已知函数 y=f(x)在区间 a, b内一系列点 xi上的函数值f(xi)=yi, i=0,1, n,求一简单函数 P(x),使满足条件P(xi)=yi, i=
2、0,1, n, 称点 xi为 插值节点 /* interpolating points */ , a, b为 插值区间 /* interpolating region */ , P(x)为 插值函数 /* interpolatingfunction */ ,求 P(x)的过程为 函数插值 /* function interpolating */ ,求 P(x)的方法为 插值法 /* interpolation */ 。定义由于代数多项式的结构简单,数值近似和理论分析都方便,实用中常取代数多项式作为插值函数,称其为 n次插值多项式 /* n-degree Interpolating polyno
3、mial */ ,求 Pn(x)的过程也叫做 拉格朗日插值 /* Lagrange Interpolation */ 。点斜式2.1 拉格朗日插值 /* Lagrange Interpolation */niyxL iin ,.,0,)( =求 n 次多项式 使得条件: 无重合节点,即n = 1线性插值已知 x0 , x1 ; y0 , y1 ,求 使得111001 )(,)( yxLyxL =可见 L1(x) 是过 ( x0 , y0 ) 和 ( x1, y1 ) 两点的直线。)()( 0010101 xxxxyyyxL +=101xxxx010xxxx= y0 + y1l0(x) l1(x
4、)= 10)(i iiyxl称为 拉氏基函数 /* Lagrange Basis */,满足条件 li(xj)=ij /* Kronecker Delta */n = 2抛物线插值已知 x0 , x1 , x2 ; y0 , y1 , y2 ,求 L2(x)=a0+a1x + a2x2, 使得 L2(xi)= yi , i=0,1,2.用基函数表示其中 l0(x)、 l1(x)、 l2(x)为 二次式 ,且满足以下条件li(xj)=ijn 1 希望找到 li(x), i = 0, , n 使得 li(xj)=ij ;然后令=niiin yxlxL0)()( ,则显然有 Ln(xi) = yi
5、。li(x) 每个 li 有 n 个零点 x0 xi xn=njj i jiniii xxCxxxxxxCxl00 )().().()( = j i jiiii xxCxl )( 11)(Lagrange Polynomial与 有关,而与 无关节点 fQuiz: 给定 xi = i +1, i = 0, 1, 2, 3, 4, 5. 下面哪个是 l2(x)的图像?y 0 - - - 1 0.5 -0.5 1 2 3 4 5 6 x y 0 - - - 1 0.5 -0.5 1 2 3 4 5 6 x y 0 - - - 1 0.5 -0.5 1 2 3 4 5 6 x A B C定理 (唯一
6、性 ) 满足 的 n 阶插值多项式是唯一存在的。证明: 由插值条件可知,插值多项式 Ln(x)的系数 ai满足线性方程组 其系数行列式是 n+1阶 范德蒙 (Vandermonde)行列式 因为 xixj,于是 V0,方程组的解存在且唯一 插值余项 /* Remainder */定理 设节点 ,而 f(x)在 a, b内有直到n+1阶导数,且已知 f(xi)=yi, i=0, 1, , n, 则当 x a,b成立Rolles Theorem: 若 充分光滑, ,则存在 使得 。推广: 若使得 使得存在 使得Rn(x) 至少有 个根n+1 =niin xxxKxR0)()()(任意固定 x xi
7、 (i = 0, , n), 考察 =niixtxKtRnt0)()()()(t)有 n+2 个不同的根 x0 xn x!)1()()()1( + nxKR xnn 注意这里是对 t 求导=+ + !)1)()()( )1()1( nxKLf xnnxn !)1()()( )1(+=+nfxK xn 注: 通常不能确定 , 而是估计 , x(a,b)将 作为误差估计上限。例: 已知分别利用 sin x 的 1次、 2次 Lagrange 插值计算 sin 50 并估计误差。 解: n = 1 分别利用 x0, x1 以及 x1, x2 计算利用而sin 50 = 0.7660444)185(50sin 10 pL 0.77614外推 /* extrapolation */的实际误差 0.01001利用 sin 50 0.76008, 内插 /* interpolation */ 的实际误差 0.00596内插通常优于外推。选择要计算的 x 所在的区间的端点,插值效果较好。