罗尔中值定理与方程的求根

牛顿迭代法,我另外一篇文章写过, 如何通俗易懂地讲解牛顿迭代法求开方? ,在那篇文章中也提到牛顿迭代法本有不少问题,比如:

  • 初值的选择对问题的求解影响太大,可能导致求不出来、或者求解效率低
  • 无法得知有几个根。就算知道有几个根,也不一定可以尽数求出
  • 迭代过程中,你也不知道这次迭代的值和根的误差有多大

所以说来,牛顿迭代法算不上很实用的求根方法,不过求平方根还是比较好用的(因为随便选个初值,都会收敛,并且收敛速度还很快),这也是经常可以看到牛顿迭代法出没的地方。

下面介绍一个更实用的求根方法。

米歇尔·罗尔(1652-1719),法国数学家,最著名的数学遗产是罗尔中值定理(数学史看多了,对这些数学英雄心生敬意,特立照于此)。

其实罗尔的数学研究重心在于多项式方程的根的求解,发明了一种我翻译为级联求根法的方法(英文:The Method of Cascades),这种方法的一个副产品是罗尔中值定理。

尽管罗尔中值定理是微积分很基本、很重要的定理,但是罗尔本人并不认可微积分,认为微积分是一堆错误的集合。鬼知道他是怎么在没有微积分的帮助下发明罗尔中值定理,并且发明出他的求根方法的(后面你会看到,他的求根方法完全基于微积分,当然这是现代人翻译后的结果,他的原始手稿你一定是不想看的,最后会有,可以涨下姿势)。

我们先来看看它求根的思想是什么(下面都是用现代的数学语言翻译过的)。


1 数学思想

罗尔研究的对象是形如$f(x)=x^ n+a_1x^{n-1}+\cdots +a_ n=0,x\in \mathbb {R}$这样的多项式方程的根。

假如说这样一个多项式的方程的根存在,我们怎么求解呢?最粗暴的办法,把定义域范围内的每个实数拿来代入方程,看是否是多项式方程的根,这怕比大海捞针还希望渺茫。

罗尔给了一种方法,让我们可以确定每个根的范围。

1.1 驻点与根

假设$f(x)$的所有的根为$\{ x_ n\} =x_1,x_2,\cdots $,有$a,b\in \mathbb {R}$,满足$a < min(\{ x_ n\} ), b > max(\{ x_ n\} )$。

一次函数的情况:

二次函数的情况:

求出驻点:

当然也可能出现$(a,s_1)$或者$(s_1,b)$区间内没有根的情况。

比如这样:

或者这样(根有可能出现在驻点上):

这该怎么判断呢?我们来复习下零点定理(其实就是介值定理的特殊情况),从几何上看显而易见:

根据零点定理可以判断:

从上面的观察来看,我们可以猜想根的上界与相邻驻点、下界与相邻驻点之间至多只有一个根。

我们来看看有没有这种可能,会不会两个根都在$(a,s_1)$,或者在$(s_1,b)$之间呢:

此处罗尔使用了罗尔中值定理(这就是罗尔中值定理的出处)进行了反证,$f(x)$很显然符合使用罗尔中值定理的条件,$[a,b]$连续,$(a,b)$可导:

至此,我们可以得到一个结论:上界与相邻驻点、下界与相邻驻点之间至多只有一个根。

三次函数的情况:

求出驻点:

同样的,通过罗尔中值定理,我们可以得到结论,相邻驻点之间至多只有一个根。

四次函数的情况:

至此,我们总结一下:

  • 上界与\textbf{相邻}驻点、下界与\textbf{相邻}驻点之间至多只有一个根
  • \textbf{相邻}驻点之间至多只有一个根
  • 区间内是否有根可以通过零点定理来进行判断

根据上面结论,求函数$f(x)$在$(a,b)$($a,b$分别为根的下界和上界)内的根,只需要求出$f(x)$在$(a,b)$内的所有驻点$s_1,s_2\cdots ,s_ n$,则所有根必定落在$(a,s_1),(s_1,s_2)\cdots (s_ n,b)$内,每个区间至多有一个根,我们还可以通过零点定理来帮忙。然后我们就可以在这些区间内愉快的搜索了。

求驻点相当于求$f'(x)=0$的根,对于多项式函数而言,$f'(x)$一般是比$f(x)$简单的。

拉格朗日把上面的结论表述为:

方程$F^{(i)}(x)=0$根的界限是由方程$F^{(i-1)}(x)=0$的根确定。

拉格朗日

这样求根就化成了求驻点。那么我们可以开始了吗?别慌,如何求根的上下界还没交代呢。

1.2 根的上界

罗尔说的,对于多项式$x^ n+a_1x^{n-1}+...+a_ n=0$,它的根都小于$k+1$,其中$k$为最大负数项的系数的绝对值(我找了半天也没有找到证明,不过看到有别的证明可以佐证,感兴趣可以参看书籍《first course in the theory of equations》21页)。

举个例子:

$x^5+4x^4-7x^2-40x+1$

这个式子也可以表述为:

$x^5+4x^4+0x^3-7x^2-40x+1$

最大负数系数项即$k=|-40|=40$,则它的根小于$1+k=1+40=41$,即我们可以说$b=41$($b$代表根的上界)。

1.3 根的下界

知道上界之后,通过一个替换我们就可以确定根的下界。

已知$f(x)$根的上界为$e$,那么如果$x$为$f(x)$的根的话,必定有$e-x=z > 0$。

那么我们做一个替换,令$z=e-x\implies x=e-z(z > 0)$,代入$f(x)=f(e-z)\implies g(z)$。

那么对于$g(z)=0$的根而言,$z > 0$,所以下界$a=0$,而上界$b$需要根据刚才的算法重新算出来。


2 示例

来看一个具体的例子,下面只计算到小数点后两位:

求$f(x)=x^4+x^3-4x^2-3x+2$的根.

2.1 方程变形

根据之前的根的上限的算法,$k=|-4|=4$,得到根$x < 4+1=5$。则令$x=5-z$。

代入$f(x)=f(5-z)=(5-z)^4+(5-z)^3-4(5-z)^2-3(5-z)+2$,整理得到:

$g(z)=z^4-21z^3+161z^2-532z+637$。

2.2 级联求根

对$g(z)$连续求导,直到只有一次项为止。

$$\begin{align} z^4-21z^3+161z^2-532z+637=0\quad (1) \\ 4z^3-63z^2+322z+532=0\quad (2) \\ 12z^2-126z+322=0\quad (3) \\ 24z-126=0\quad (4) \\ \end{align}$$

然后我们需要从$(4)\to (1)$逐级求根。

虽然(1)(2)(3)(4)方程都可以通过通式求出,但是为了演示方法,我还是从(4)式开始求:

$24z-126=0\implies z=5.25$,这其实就是(3)的驻点:

$b$点太远了,不方便画图,我们暂时把$b$放到图外去:

通过零点定理和二分法(二分法的效率还是很高的),很快就可以算到$x_1=4.39,x_2=6.10$(保留小数点后两位),实际上就求得了(2)式的驻点。

反复运用上述方法,求得$g(z)$的根为:$z_1=7.01,z_2=6.24,z_3=3.19,z_4=4.55$,因为保留小数点后两位,上述根并不精确,比如$z_1=7.01$,其实精确的根应该为$z_1=7$。

2.3 得到结果

最后将此代入:$x=5-z$

求得$f(x)$的根为$x_1=-2.01,x_2=-1.24,x_3=1.81,x_4=0.45$。


3 结论

罗尔的方法对连续可导的$f(x)$都是适用的,并非要局限在多项式,但是,至少要$f'(x)=0$比$f(x)=0$更容易解才有意义。

最后,让我们用罗尔研究这个问题的手稿来结束这篇文章,尽管三四百年的数学发展让我们已经很难看出他写的是什么了:

关注马同学
马同学高等数学
微信公众号:matongxue314