Newton迭代法的改进 | Newton下山法 + 简化Newton法 + 弦截法

Newton迭代法的改进

1. Newton下山法

Newton法的收敛性与初值x0x_0的选取由很大关系,如果x0x_0偏离方程的根xx^*太远,则Newton法可能发散或迭代次数增加,因此,有必要对迭代法加以改进。

例1:用Newton法求x3x1=0x^3-x-1=0x0=1.5x_0=1.5附近的一个根。

:原方程的Newton迭代格式为xk+1=xkxk2x12xk21x_{k+1}=x_k-\frac{x_k^2-x-1}{2x_k^2-1},迭代结果为x3=1.32472x_3=1.32472。如果迭代初值取为x0=0.6x_0=0.6,则迭代一次所得结果x1=17.9x_1=17.9就大大远离了xx^*。因此,迭代过程可能是发散的或迭代次数增加。

为了避免迭代过程出现发散或迭代次数增加,可对迭代过程再附加如下一个条件:
f(xk+1)<f(xk)(1) |f(x_{k+1})|<|f(x_k)| \tag{1}
即保证函数值单调下降,则上例中的现象可以避免。

将条件(1)与Newton迭代法合并起来,即在保证函数值稳定下降的条件下,用Newton法来加快迭代,这就是Newton下山法。

Newton下山法具体操作:

将用Newton法求得的结果xk+1\overline{x_{k+1}}与前一步迭代的近似值xkx_k适当加权平均,作为新的改进值xk+1x_{k+1}即:
xk+1=λxk+1+(1λ)x x_{k+1}=\lambda\overline{x_{k+1}}+(1-\lambda)x

xk+1=xkλf(xk)f(xk) x_{k+1}=x_k-\lambda \frac{f(x_k)}{f'(x_k)}
其中,λ(0λ<1)\lambda(0\leq \lambda <1)称为下山因子。然后,适当选择λ\lambda的值,使之满足条件(1)。

下山因子λ\lambda的选择是一个逐步试探的过程,可以从λ=1\lambda=1开始,将λ\lambda逐步减半进行试算,一旦条件(1)满足,则称下山成功,否则下山失败,需另选初值x0x_0再试。

现在用Newton下山来考察例1:仍取x0=0.6x_0=0.6,将用Newton法求得的x1=17.9\overline x_1=17.9与初值x0=0.6x_0=0.6加权平均,并取λ=132\lambda=\frac{1}{32},则
x1=132x1+3132x0=1.140625 x_1=\frac{1}{32}\overline x_1+\frac{31}{32}x_0=1.140625
这个结果比17.917.9要小许多。可见,上述严重偏离xx^*的现象已经不复存在。

2. 简化Newton法

应用Newton法求方程的根,要计算函数的导数。如果函数的导数太复杂,计算量大且繁琐,这时可以用常数值c来代替函数的导数值,则迭代公式就变成:
xk+1=xkf(xk)c(2) x_{k+1}=x_k-\frac{f(x_k)}{c} \tag{2}
这就是简化Newton法。在(2)式中,常数值c的选取可以根据迭代函数及收敛条件来确定。记
φ(x)=xf(x)c \varphi(x)=x-\frac{f(x)}{c}

φ(x)=1f(x)c \varphi'(x)=1-\frac{f'(x)}{c}

φ(x)=1f(x)c<1 |\varphi'(x)|=|1-\frac{f'(x)}{c}|<1

0<f(x)c<2 0<\frac{f'(x)}{c}<2
这样,常数值c就容易确定了。

简化Newton法的几何意义是:过点(xk,f(xk))(x_k,f(x_k)),以c为斜率,作一直线与x轴的交点近似代替曲线与x轴的交点。如下图所示。

Newton迭代法的改进 | Newton下山法 + 简化Newton法 + 弦截法

2.6.3 弦截法

弦截法是Newton法的简化与改进,它保留了Newton法收敛速度快的优点,克服了需要计算函数的导数f(x)f'(x)的缺点。

如果用差商
f(xk)f(xk1)xkxk1 \frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}
代替Newton迭代法中的f(xk)f'(x_k),则可得到下面的离散化形式:
xk+1=xkf(xk)f(xk)f(xk1)(xkxk1)(3) x_{k+1}=x_k-\frac{f(x_k)}{f(x_k)-f(x_{k-1})}(x_k-x_{k-1}) \tag{3}
(3)式中的等号右边,即为下图所示曲线y=f(x)y=f(x)pk1p_{k-1}(xk1,f(xk1))(x_{k-1},f(x_{k-1}))pkp_k(xk,f(xk))(x_k,f(x_k))相连的直线或弦线的方程式。按(3)式求得的xk+1x_{k+1},就是该弦线与x轴的交点的横坐标,故该方法被称为弦截法。另一方面,对照Newton法,(3)式实际上也可以看成是用经过曲线y=f(x)y=f(x)pk1p_{k-1}(xk1,f(xk1))(x_{k-1},f(x_{k-1}))pkp_k(xk,f(xk))(x_k,f(x_k))的割线的斜率来代替函数在pkp_k(xk,f(xk))(x_k,f(x_k))的导数,故该方法又被称为割线法。

Newton迭代法的改进 | Newton下山法 + 简化Newton法 + 弦截法

弦截法是一种两步迭代法,即在计算xk+1x_{k+1}时,必须先给出xk1x_{k-1}xkx_k。因此,在使用公式(3)时,必须首先给出两个迭代初值x0x_0x1x_1,否则无法启动迭代运算。

在(3)式中,xk1x_{k-1}点可以一直用一个固定点x0x_0点来代替,此时弦截法演变成为了单点弦截法,其几何解释如下图所示。相应地之前的为双点弦截法。

Newton迭代法的改进 | Newton下山法 + 简化Newton法 + 弦截法

弦截法的收敛性有下面两个定理:

定理3:设函数f(x)f(x)在区间[a,b][a,b]上存在二阶导数,且满足条件:

(1)f(x)f''(x)在区间[a,b][a,b]上不改变符号;

(2)f(x)f'(x)在区间[a,b][a,b]上不等于零;

(3)f(a)f(b)<0f(a)f(b)<0

(4)x0[a,b]x_0\in[a,b]且满足条件f(x0)f(x0)>0,x1[a,b]f(x_0)f''(x_0)>0,x_1\in [a,b]

这时,由递推计算公式
xn+1=xnxnx0f(xn)f(x0)f(xn),(n=1,2,) x_{n+1}=x_n-\frac{x_n-x_0}{f(x_n)-f(x_0)}f(x_n),\quad (n=1,2,\cdots)
而得的序列{xn}\{x_n\}单调收敛于f(x)f(x)[a,b][a,b]上的惟一解xx^*

该定理即为单点弦截法的收敛性定理。

定理4:设xx^*f(x)f(x)的实根,f(x)f'(x)f(x)f''(x)在包含xx^*的某一区间是连续的,并且f(x)0f'(x^*)\neq 0,则当x0x_0x1x_1足够接近xx^*时,由递推计算公式
xn+1=xnxnxn1f(xn)f(xn1)f(xn),(n=1,2,) x_{n+1}=x_n-\frac{x_n-x_{n-1}}{f(x_n)-f(x_{n-1})}f(x_n),\quad (n=1,2,\cdots)
而得的序列xn{x_n}收敛于xx^*

该定理即为双点弦截法的收敛性定理。