5.1 求非线性方程数值解的几种方法
1.二分法
考察有根区间[a,b],取中点xk=
(ak+bk),将该区间分为两半,假设中点x0不是f(x)的零点,然后进行根的搜索,即检查f(x0)与f(a)是否同号,如果两者是同号,则说明所求的根x*在x0的右侧,这时令a1=x0,b1=b;否则,根x*在x0的左侧,这时令a1=a,b1=x0。不管出现哪一种情况,新的有根区间[a1,b1]的长度仅为[a,b]的一半。
如此反复二分下去,即可得出一系列有根区间
。其中,每个区间都是前一个区间的一半,因此使用k次二分法后的有根区间[ak,bk]的长度为

当k→∞时有根区间趋于零,也就是说,如果二分过程无限地继续下去,这些有根区间收敛于一点x*,该点显然就是所求的根。
每次二分后,设有根区间[ak,bk]的中点xk=
作为根的近似值,则在二分过程中可以获得根的一个近似序列x1,x2,…,xk,…,该序列必以根x*为极限。
2.迭代法
将方程(5.1)改写成等价的形式
![]()
这种方程是隐式的,因而不能直接得出它的根。如果给出根的某个猜测值x0,将它代入(5.2)式的右端,即可求得x1=φ(x0)。可以如此反复迭代计算
![]()
确定的数列{xk}有极限x*=
,则称迭代过程(5.3)是收敛的,这时极限值x*就是方程(5.2)的根。
上述迭代法是一种逐次逼近法,其基本思想是将隐式方程(5.1)归结为一组显式的计算公式(5.3),就是说,迭代过程实质上是一个逐步显示化的过程。
如果φ(x)满足下列条件:
(1)当x[a,b]时,φ(x)∈[a,b] ;
(2)对任意x[a,b],存在0<L<1,使
≤L<1,则方程x=φ(x)在[a,b]上有唯一的根x*,且对任意初值x0[a,b],迭代序列xk+1=φ(xk),(k=0,1,2,…)收敛于x*。
3.埃特金(Aitken)迭代法
设已知x*的某个猜测值x0,我们将校正值再校正一次x1=φ(x0),又x2=φ(x1),假定φ'(x)改变不大,近似地取某个近似值L,则有
(https://www.daowen.com)
由式(5.4)推知

这样构造出的改进公式其实是对两次迭代得到的值进行加工。如果将得到一次改进值作为一步,则计算公式如下:

上述迭代过程(5.5)称为埃特金迭代法。
4.斯蒂芬森(Steffensen)迭代法
埃特金迭代法不管原序列{xk}是怎样产生的,直接对{xk}进行加速计算,得到序列。如果把埃特金加速技巧与不动点迭代法结合,则可得到如下的迭代法:

上述迭代过程(5.6)称为斯蒂芬森迭代法。
5.牛顿迭代法
牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。设已知方程f(x)=0有近似根x0,且在x0附近f(x)可用一阶泰勒多项式近似表示为
![]()
当f'(x0)≠0时,方程f(x)=0可用线性方程(切线)近似代替,即f(x0)+f'(x0)·
(x-x0)=0,解此线性方程得x=x0-
,从而得迭代公式

式(5.8)称为牛顿迭代公式。
如果f∈C2[a,b]且x*为f(x)在[a,b]上的根,f'(x*)≠0,则存在x*的邻域U,使得任取初值x0∈U时,用牛顿迭代法产生的序列{xk}收敛到x*。
f∈C2[a,b],即f(x)在[a,b]上的二阶可导连续函数。