数学分析之拉格朗日余项与误差

拉格朗日余项和泰勒公式密不可分。泰勒级数的全形如下: f(x)=f(a)+f(a)(xa)+f(a)2!(xa)2++f(n)(a)n!(xa)n+=n=0f(n)(a)n!(xa)n \begin{aligned} f(x)&=f(a)+f'(a)(x-a)+\frac{f''(a)}{2!}(x-a)^2+\dotsb+\frac{f^{(n)}(a)}{n!}(x-a)^n+\dotsb \\ &=\sum^{\infty}_{n=0}\frac{f^{(n)}(a)}{n!}(x-a)^n \end{aligned} 其中,前n项可以称为函数在点x=ax=a处的nn阶泰勒展开式。所谓的阶,是指xx的幂次;nn阶就是xx的最高次幂为nn,而不是展开到第nn项。

但是,泰勒展开能够无限地逼近原函数,是以n趋向于无穷为前提条件的。如果我们只是将函数展开到n阶,则后面的部分(我们称为余项, remainder)就被省略了,这必然会产生误差。记余项的表达式为Rn(x)R_n(x),用它表示n项之后的余项(注意下标是 n 而不是 n+1),我们可以将泰勒展开写成如下形式: f(x)=f(a)+f(a)(xa)+f(a)2!(xa)2++f(n)(a)n!(xa)n+Rn(x) f(x)=f(a)+f'(a)(x-a)+\frac{f''(a)}{2!}(x-a)^2+\dotsb+\frac{f^{(n)}(a)}{n!}(x-a)^n+R_n(x) 或者说 f(x)=Pn(x)+Rn(x)f(x)=P_n(x)+R_n(x) 这式子的意思是原函数可以分解为两个部分,一部分是 n 阶泰勒展开,另一部分就是拉格朗日余项。那么,做一个移项,就可以有:Rn(x)=f(x)Pn(x)R_n(x)=f(x)-P_n(x)

这就是说,用n阶幂级数来逼近原函数,其误差就是这一余项。而拉格朗日余项就是表达这些被省略部分的一个公式,我们可以用它来估计误差。为此,我们先写出函数的第 n+1 阶展开式: f(n+1)(a)(n+1)!(xa)n+1\frac{f^{(n+1)}(a)}{(n+1)!}(x-a)^{n+1}拉格朗日余项(在具体题目中,我们也称为拉格朗日误差界 Lagrange Error Bound) 在形式上就类似于函数的第 n+1 阶,其表达式如下: Rn(x)=f(n+1)(c)(n+1)!(xa)n+1,cxa之间。R_n(x)=\frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1},c在x与a之间。 需要注意的是,c只是在x与a之间,可能是xcax\le c\le a,也可能是acxa\le c\le x。同时,拉格朗日余项定理像微分中值定理(Mean Value Theorem)、介值定理(Intermediate Value Theorem)一样,都是存在性定理,即只能告知值的存在(我们知道有这样一个值),但不能告知其具体位置(但不知道它到底是多少)。如果我们使用麦克劳林式(Maclaurin Series,即a=0a = 0时的特殊形式),就可以将拉格朗日余项变成较简单的形式: Rn(x)=f(n+1)(c)(n+1)!xn+1,cx0之间。R_n(x)=\frac{f^{(n+1)}(c)}{(n+1)!}x^{n+1},c在x与0之间。

观察拉格朗日余项定理的形式,对于给定anxa、n和x的情况下,如果要确定这个余项的界限,唯一要确定的就是前面的这个第 n+1 阶导数的取值范围。若令有正数M=f(n+1)(c)M=|f^{(n+1)}(c)|,则只需要确定M的范围,那么,整个余项的范围也就唯一给定了。由于误差值可能为正,也可能为负,为便利讨论,我们一般都取其绝对值进行考查,即 Rn(x)=f(n+1)(c)(n+1)!(xa)n+1=M(n+1)!(xa)n+1\begin{aligned} |R_n(x)|&=|\frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1}| \\ &=\frac{M}{(n+1)!}|(x-a)^{n+1}| \end{aligned} 而对于麦克劳林式,我们就变成考查: Rn(x)=f(n+1)(c)(n+1)!xn+1=M(n+1)!xn+1\begin{aligned} |R_n(x)|&=|\frac{f^{(n+1)}(c)}{(n+1)!}x^{n+1}| \\ &=\frac{M}{(n+1)!}|x^{n+1}| \end{aligned} 这时我们就要介绍一个基本定理,即拉格朗日余项定理:

若存在正数Max,使得对任意ξ\xi,如果aξxa \le \xi \le xxξax \le \xi \le a,均有f(n+1)(ξ)M|f^{(n+1)}(\xi)|\le M,则: Rn(x)=f(n+1)(c)(n+1)!(xa)n+1M(n+1)!(xa)n+1|R_n(x)|=|\frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1}| \le \frac{M}{(n+1)!}|(x-a)^{n+1}| 也就是说MM的取值范围其实就由f(n+1)(ξ),(aξx|f^{(n+1)}(\xi)|,(a \le \xi \le xxξa)x \le \xi \le a)唯一给定。这一不等式也叫泰勒不等式。这是我们进行余项范围估计的主要理论基础。

例1y=sin(x)y=sin(x)展开成麦克劳林式,并估计其误差:

根据基本公式:sin(x)=x13!x3+15!x517!x7++(1)nx2n+1(2n+1)!+sin(x)=x-\frac{1}{3!}x^3+\frac{1}{5!}x^5-\frac{1}{7!}x^7+\dotsb+(-1)^n\frac{x^{2n+1}}{(2n+1)!}+\dotsb,很容易得出5阶麦克劳林式:sin(x)x13!x3+15!x5sin(x)\approx x-\frac{1}{3!}x^3+\frac{1}{5!}x^5

其余项按照拉格朗日余项定理,可以写成(注意:5阶的余项是6次方): R5(x)=f6(c)6!x6,c0x之间R_5(x)=\frac{f^6(c)}{6!}x^6,c在0和x之间f6(x)=sin(x)1|f^6(x)|=|-sin(x)| \le 1,所以R5(x)x66!R_5(x) \le \frac{x^6}{6!}

例2y=sin(x)y=sin(x)展开成麦克劳林式,据此估计sin 0.2的值,并计算其误差。

使用例1结论:sin(0.2)0.213!(0.2)3+15!(0.2)50.1986693333sin(0.2)\approx 0.2-\frac{1}{3!}(0.2)^3+\frac{1}{5!}(0.2)^5 \approx 0.1986693333

同时,R5(0.2)0.266!=8.888889108R_5(0.2) \le \frac{0.2^6}{6!}=8.888889*10^{-8}

在一些情况下,使用交错级数计算误差相对简单,其基本定理如下:

若交错级数n=0un=n=0(1)n+1(vn)\sum^{\infty}\limits_{n=0}u_n=\sum^{\infty}\limits_{n=0}(-1)^{n+1}(v_{n})满足以下条件:

  1. 正项递减,即0vn+1vn;0\le v_{n+1} \le v_n;
  2. 正项趋零,即limx+vn=0\lim\limits_{x \to +\infty}v_n=0

则必有其余项的范围Rn(x)=SSn<un+1=vn+1|R_n(x)|=|S-S_n|<|u_{n+1}|=v_{n+1}

其中,S表示全部和,SnS_n表示部分和,也就是我们高中数学里习惯说的前n项和。简单的讲,交错级数前n项和的余项,不会超过接下来这一项的绝对值,这就是交错级数的余项公式。

在插值过程中,有一个拓展概念叫拉格朗日插值余项。取插值结点:ax0<x1<<xnba≤x0<x1<······<xn≤b 满足Ln(xk)=f(xk)L_n(x_k)=f(x_k)的 n 次多项式插值余项: Rn(x)=f(x)Ln(x)=f(n+1)(ξn)(n+1)!ωn+1(x)R_n(x)=f(x)-L_n(x) \\ =\frac{f^{(n+1)}(\xi_n)}{(n+1)!}\omega_{n+1}(x) 其中,ωn+1(x)=(xx0)(xx1)(xxn)\omega_{n+1}(x)=(x-x_0)(x-x_1)\dotsb (x-x_n)。选取:x0,x1,,xnx_0,x_1,\dotsb,x_n,使maxaxbωn+1(x)=min\underset{a\le x \le b}{max}|\omega_{n+1}(x)|=min

结论:选取切比雪夫多项式Tn+1(x)T_{n+1}(x)的全部零点。

使用切比雪夫节点插值和等距插值对函数f(x)=11+x2f(x)=\frac{1}{1+x^2}模拟:

切比雪夫结点插值

Figure 1: 切比雪夫结点插值

插值函数L10(x)取切比雪夫结点插值
等距结点插值

Figure 2: 等距结点插值

插值函数L10(x)取等距结点插值