7.4 牛顿法
DESCRIPTION
牛顿法是一种线性化方法,其基本思想是将非线性方 程 逐步归结为某种线性方程来求解. 设已知方程 有近似根 (假定 ) , 将函数 在点 展开,有. 于是方程 可近似地表示为. 这是个线性方程,记其根为 ,则 的计算公式为. 7.4 牛顿法. 7.4.1 牛顿法及其收敛性. ( 4.1 ). 方程 的根 可解释为曲线 与 轴 的交点的横坐标(图 7-3). 设 是根 的某个近似值, - PowerPoint PPT PresentationTRANSCRIPT
1
7.4 牛顿法 7.4.1 牛顿法及其收敛性
牛顿法是一种线性化方法,其基本思想是将非线性方程 逐步归结为某种线性方程来求解 .0)( xf
设已知方程 有近似根 (假定 ) ,将函数 在点 展开,有
0)( xf kx 0)( kxf
)(xf kx
),)(()()( kkk xxxfxfxf
于是方程 可近似地表示为 0)( xf
.0))(()( kkk xxxfxf ( 4.1 )
这是个线性方程,记其根为 ,则 的计算公式为 1kx 1kx
2
),,1,0()(
)(1
k
xf
xfxx
k
kkk ( 4.2 )
这就是牛顿 (Newton) 法 . 牛顿法的几何解释 . 方程 的根 可解释为曲线 与 轴的交点的横坐标(图 7-3).
0)( xf *x )(xfy x
设 是根 的某个近似值,过曲线 上横坐标为 的点 引切线,并将该切线与 轴的交点的横坐标 作为 的新的近似值 .
kx *x
)(xfy kx
kP x
1kx *x
图 7-3
3
注意到切线方程为 ).)(()( kkk xxxfxfy
这样求得的值 必满足 (4.1 ),从而就是牛顿公式( 4.2 )的计算结果 . 由于这种几何背景,牛顿法亦称切线法 .
1kx
牛顿法( 4.2 )的收敛性,可直接由定理 4得到,对( 4.2 )其迭代函数为
,)(
)()(
xf
xfxx
由于 .)]([
)()()(
2xf
xfxfx
假定 是 的一个单根,即 ,则由上式知 ,于是依据定理 4可以断定,牛顿法在根 的邻近是平方收敛的 .
)(xf*x 0*)(,0*)( xfxf
0*)( x*x
4
又因 ,
*)(
*)(*)(
xf
xfx
故由( 2.9 )可得
.*)(2
*)(
*)(
*lim
21
xf
xf
xx
xx
k
k
k
( 4.3 )
例 7 用牛顿法解方程 .01xxe ( 4.4 )
解 这里牛顿公式为
,11
k
xk
kk x
exxx
k
取迭代初值 ,迭代结果列于表 7-5 中 . 5.00 x
5
56714.03
56716.02
57102.01
5.00
57
kxk
计算结果表 所给方程( 4.4 )实际上是方程 的等价形式 . 若用不动点迭代到同一精度要迭代17次,可见牛顿法的收敛速度是很快的 .
xex
牛顿法的计算步骤: 步骤 1 准备 选定初始近似值 ,计算 0x ),( 00 xff
).( 00 xff
步骤 2 迭代 按公式 0001 / ffxx
迭代一次,得新的近似值 ,计算 1x ).(),( 1111 xffxff
步骤 3 控制 如果 满足 或 ,则终1x 1 21 f
6
止迭代,以 作为所求的根;否则转步骤 4. 此处 是允许误差,而
1x 21,
时,当
时;当
Cxx
xx
Cxxx
11
01
101
其中 是取绝对误差或相对误差的控制常数,一般可取 .
C1C
步骤 4 修改 如果迭代次数达到预先指定的次数 ,或者 ,则方法失败;否则以 代替 转步骤 2继续迭代 .
N
01 f ),,( 111 ffx ),,( 000 ffx
7
7.4.2 牛顿法应用举例 对于给定的正数 ,应用牛顿法解二次方程 C
,02 Cx
可导出求开方值 的计算程序 C
).(2
11
kkk x
Cxx ( 4.5 )
这种迭代公式对于任意初值 都是收敛的 . 00 x
事实上,对( 4.5 )式施行配方手续,易知
.)(2
1
;)(2
1
21
21
Cxx
Cx
Cxx
Cx
kk
k
kk
k
8
以上两式相除得
.
2
1
1
Cx
Cx
Cx
Cx
k
k
k
k
据此反复递推有
.
2
0
0
1
1
k
Cx
Cx
Cx
Cx
k
k
( 4.6 )
记
,0
0
Cx
Cxq
整理( 4.6 )式,得
9
.1
22
2
k
k
q
qCCxk
对任意 ,总有 ,故由上式推知,当 时 ,即迭代过程恒收敛 .
00 x 1q kCxk
723805.104
723805.103
723837.102
750000.101
100
67
kxk
计算结果表
解 取初值 ,对 按( 4.5 )式迭代 3次便得到精度为 的结果(见表 7-6).
100 x115C
610
由于公式( 4.5 )对任意初值 均收敛,并且收敛的速度很快,因此可取确定的初值如 编成通用程序 .
00 x
10 x
例 8 求 . 115
10
7.4.3 简化牛顿法与牛顿下山法
牛顿法的优点是收敛快,缺点一是每步迭代要计算 及 ,计算量较大且有时 计算较困难,二是初始近似 只在根 附近才能保证收敛,如 给的不合适可能不收敛 .
)( kxf )( kxf )( kxf
0x *x 0x
为克服这两个缺点,通常可用下述方法 . ( 1) 简化牛顿法,也称平行弦法 . 其迭代公式为
.,1,0)(1 CxCfxx kkk ( 4.7 )迭代函数 ).()( xCfxx
若在根 附近成立 ,即取 ,则迭代法( 4.7 )局部收敛 .
*x 1)(1)( xfCx2)(0 xfC
11
在( 4.7 )中取 ,则称为简化牛顿法,这
类方法计算量省,但只有线性收敛,其几何意义是用平行弦与 轴交点作为 的近似 . 如图 7-4 所示 .
)(
1
0xfC
x *x
图 7-4
12
( 2) 牛顿下山法 . 牛顿法收敛性依赖初值 的选取 . 如果 偏离所求根 较远,则牛顿法可能发散 .
0x 0x
*x
例如,用牛顿法求方程 .013 xx ( 4.8)
在 附近的一个根 . 5.1x *x
设取迭代初值 ,用牛顿法公式 5.10 x
13
12
3
1
k
kkkk x
xxxx ( 4.9 )
计算得 .32472.1,32520.1,34783.1 321 xxx
迭代 3次得到的结果 有 6位有效数字 . 3x
13
但如果改用 作为迭代初值,则依牛顿法公式( 4.9 )迭代一次得
6.00 x
.9.171 x
这个结果反而比 更偏离了所求的根 . 6.00 x 32472.0*x
为了防止迭代发散,对迭代过程再附加一项要求,即具有单调性:
.)()( 1 kk xfxf ( 4.10)
满足这项要求的算法称下山法 . 将牛顿法与下山法结合起来使用,即在下山法保证函数值稳定下降的前提下,用牛顿法加快收敛速度 . 将牛顿法的计算结果
14
)(
)(1
k
kkk xf
xfxx
与前一步的近似值 适当加权平均作为新的改进值 kx
,)1(11 kkk xxx ( 4.11 )
其中 称为下山因子,( 4.11 )即为 )0(
),,1,0()(
)(1
k
xf
xfxx
k
kkk ( 4.12 )
(4.12) 称为牛顿下山法 .
选择下山因子时从 开始,逐次将 减半进行试算,直到能使下降条件( 4.10)成立为止 .
1
若用此法解方程( 4.8),当 时由( 4.9 )求得6.00 x
15
,它不满足条件( 4.10) .9.171 x
通过 逐次取半进行试算,当 时可求得 . 此时有 ,而显然 .
32/1140625.11 x 656643.0)( 1 xf 384.1)( 0 xf
)()( 01 xfxf
由 计算 时 , 均能使条件( 4.10)成立 . 计算结果如下 :
1x ,, 32 xx 1
.0000086.0)(,32472.1
;00667.0)(,32628.1
;1866.0)(,36181.1
44
33
22
xfx
xfx
xfx
即为 的近似 . 一般情况只要能使条件( 4.10)成立,则可得到 ,从而使 收敛 .
4x *x
0)(lim k
kxf }{ kx
16
7.4.4 重根情形
设 ,整数 ,则 为方程 的 重根,此时有
)(*)()( xgxxxf m 0*)(,2 xgm*x 0)( xf m
.0*)(,0*)(*)(*)( )1( xfxfxfxf mm
只要 仍可用牛顿法( 4.2 )计算,此时迭代函数 0)( kxf
)(
)()(
xf
xfxx
的导数为
01
1*)( m
x
且 ,所以牛顿法求重根只是线性收敛 . 若取 1*)( x
17
,)(
)()(
xf
xfmxx
则 . 用迭代法 0*)( x
),1,0()(
)(1
k
xf
xfmxx
k
kkk ( 4.13 )
求 重根,则具有 2阶收敛,但要知道 的重数 . m m*x
构造求重根的迭代法,还可令 ,若 是 的 重根,则
)(/)()( xfxfx *x 0)( xf m
,)(*)()(
)(*)()(
xgxxxmg
xgxxx
故 是 的单根 . 对它用牛顿法,其迭代函数为 *x 0)( x
18
.)()()]([
)()(
)(
)()(
2 xfxfxf
xfxfx
x
xxx
从而可构造迭代法
),,1,0()()()]([
)()(21
kxfxfxf
xfxfxx
kkk
kkkk
( 4.14 )它是二阶收敛的 . 例 9 方程 的根 是二重根,用上述三种方法求根 .
044 24 xx 2*x
解 先求出三种方法的迭代公式:
( 1) 牛顿法 .4
22
1k
kkk x
xxx
19
( 2) 用( 4.13 )式 .2
22
1k
kkk x
xxx
( 3) 用( 4.14 )式 .2
)2(2
2
1
k
kkkk x
xxxx
取初值 ,计算结果如表 7-7. 5.10 x
414213562.1414213562.1425497619.13
414211438.1414215686.1436607143.12
411764706.1416666667.1458333333.11
321
77
3
2
1
x
x
x
xk k )方法()方法()方法(
三种方法数值结果表
20
计算三步,方法( 2)及( 3)均达到 10 位有效数字,而用牛顿法只有线性收敛,要达到同样精度需迭代 30次 .
21
7.5 弦截法与抛物线法
用牛顿法求方程( 1.1 )的根,每步除计算 外还要算 ,当函数 比较复杂时,计算 往往较困难,为此可以利用已求函数值 来回避导数值 的计算 .
)( kxf
)( kxf )(xf )(xf ),(),( 1kk xfxf
)( kxf
7.5.1 弦截法 设 是 的近似根,利用 构造一次插值多项式 ,并用 的根作为新的近似根 . 由于
1, kk xx 0)( xf )(),( 1kk xfxf
)(1 xp 0)(1 xp
1kx
).(
)()()(
1
11 k
kk
kkk xx
xx
xfxfxfxp
( 5.1 )
22
因此有
).()()(
)(1
11
kk
kk
kkk xx
xfxf
xfxx ( 5.2 )
( 5.2 )可以看做牛顿公式
)(
)(1
k
kkk xf
xfxx
中的导数 用差商 取代的结果 .)( kxf 1
1)(
kk
kk
xx
xfxf
几何意义 . 曲线 上横坐标为 的点分别记为 ,
则弦线 的斜率等于差商值 , 其方
)(xfy 1, kk xx 1, kk PP
1kkPP 1
1)(
kk
kk
xx
xfxf
23
程是
).()(
)(1
1k
kk
kkk xx
xx
xfxfxfy
因之,按( 5.2) 式求得的 实际上是弦线 与 轴交点的横坐标 . 这种算法因此而称为弦截法 .
1kx 1kkPP x
表 7-5
24
弦截法与切线法(牛顿法)都是线性化方法,但两者有本质的区别 . 切线法在计算 时只用到前一步的值 ,而弦截法( 5.2 ),在求 时要用到前面两步的结果 ,因此使用这种方法必须先给出两个开始值 .
1kxkx1kx
1, kk xx
01, xx
例 10 用弦截法解方程 .01)( xxexf
解 设取 作为开始值,用弦截法求得的结果见表 7-8,比较例 7 牛顿法的计算结果可以看出,弦截法的收敛速度也是相当快的 .
6.0,5.0 10 xx
56714.04
56709.03
56532.02
6.01
5.00
87
kxk
计算结果表
实际上,弦截法具有超线性的收敛性 .
25
定理 6 假设 在根 的邻域 内具有二阶连续导数,且对任意 有 ,又初值 ,那么当邻域Δ充分小时,弦截法( 5.2 )将按
阶 收敛到根 . 这里 是方程 的正根 .
)(xf *x *: xx
x 0)( xf
10 , xx
618.12
51
p *x p 012
26
7.5.2 抛物线法
设已知方程 的三个近似根 ,以这三点为节点构造二次插值多项式 ,并适当选取 的一个零点 作为新的近似根,这样确定的迭代过程称抛物线法,亦称密勒( Müller )法 .
21,, kkk xxx0)( xf)(2 xp )(2 xp
1kx
在几何上,这种方法的基本思想是用抛物线 与 轴的交点 作为所求根 的近似位置(图 7-6).
)(2 xpy
1kxx *x
图 7-6
27
插值多项式
).)(](,,[
)](,[)()(
121
12
kkkkk
kkkk
xxxxxxxf
xxxxfxfxp
有两个零点: ,],,[)(4
)(2
2121
kkkk
kkk
xxxfxf
xfxx
( 5.3 )
式中 ).](,,[],[ 1211 kkkkkkk xxxxxfxxf
问题是该如何确定 ,假定在 三个近似根中, 更接近所求的根 ,为了保证精度,选 ( 5.3 )中较接近 的一个值作为新的近似根 . 为此,只要取根式前的符号与 的符号相同 .
1kx 21,, kkk xxx
kx *x
kx 1kx
28
例 11 用抛物线法求解方程 .01)( xxexf
解 设用表 7-8的前三个值 56532.0,6.0,5.0 210 xxx
作为开始值,计算得
.21418.2],,[
,83373.2],[,68910.2],[
,005031.0)(
,093271.0)(,175639.0)(
012
1201
2
10
xxxf
xxfxxf
xf
xfxf
故 .75694.2)](,,[],[ 1201212 xxxxxfxxf
代入( 5.3 )式求得
.56714.0],,[)(4
)(2
01222
223
xxxfxf
xfxx
29
以上计算表明,抛物线法比弦截法收敛得更快 . 在一定条件下可以证明,对于抛物线法,迭代误差有下列渐近关系式
.*)(6
*)(42.0
1840.1
xf
xf
e
e
k
k
可见抛物线法也是超线性收敛的,其收敛的阶 ,收敛速度比弦截法更接近于牛顿法 .
840.1p
从( 5.3 )看到,即使 均为实数, 也可以是复数,所以抛物线法适用于求多项式的实根和复根 .
21,, kkk xxx 1kx
30
7.6 解非线性方程组的牛顿迭代法
考虑方程组
,0),,(
,0),,(
1
11
nn
n
xxf
xxf
( 6.1 )
其中 均为 的多元函数 . nff ,,1 ),,( 1 nxx
用向量记号记 , (6.1 )就可写成
Tn
nTn ffFxxx ),,(,R),,( 11
.0)( xF ( 6.2 ) 当 ,且 中至少有一个是自变量2n ),,1( nifi
31
的非线性函数时,称方程组( 6.1 )为非线性方程组 .
),,1( nixi
非线性方程组求根问题是前面介绍的方程(即 )求根的直接推广,只要把前面介绍的单变量函数 看成向量函数 则可将单变量方程求根方法推广到方程组( 6.2 ) .
1n
)(xf
)(xF
若已给出方程( 6.2 )的一个近似根 ,将函数 的分量 在 用多元函数泰勒展开,并取其线性部分,则可表示为
Tkn
kk xxx ),,( )()(1
)(
)(xF ),,1)(( nixfi )(kx
).)(()()( )()()( kkk xxxFxFxF
令上式右端为零,得到线性方程组 ),())(( )()()( kkk xFxxxF ( 6.3 )
32
其中
n
nnn
n
n
x
xf
x
xf
x
xf
x
xf
x
xf
x
xfx
xf
x
xf
x
xf
xF
)()()(
)()()(
)()()(
)(
21
2
2
2
1
2
1
2
1
1
1
( 6.4 )
称为 的雅可比 (Jacobi) 矩阵 . )(xF
求解线性方程组( 6.3 ),并记解为 ,则得 )1( kx
).,1,0()()( )(1)()()1( kxFxFxx kkkk ( 6.5 )这就是解非线性方程组( 6.2 )的牛顿迭代法 .
33
例 12 求解方程组
.052),(
,032),(
22
21212
21211
xxxxf
xxxxf
给定初值 , 用牛顿法求解 . Tx )0.1,5.1()0(
解 先求雅可比矩阵
.14
22
82
1)(,
24
21)(
1
2
12
1
21
x
x
xxxF
xxxF
由牛顿法( 6.5 )得
,5)()(2
32
14
22
82
1
2)(2
2)(1
)(2
)(1
)(1
)(2
)(1
)(2
)()1(
kk
kk
k
k
kkkk
xx
xx
x
x
xxxx
34
即
).,1,0(
,)4(2
5128)(2)(
,4
53)(2)(
)(1
)(2
)(2
)(2
)(1
2)(1
2)(2)(
2)1(
2
)(1
)(2
)(2
)(2
)(1
2)(1
2)(2)(
1)1(
1
k
xx
xxxxxxx
xx
xxxxxxx
kk
kkkkkkk
kk
kkkkkkk
由 逐次迭代得到 Tx )0.1,5.1()0(
,)755983.0,488034.1(
,)755952.0,488095.1(
,)75.0,5.1(
)3(
)2(
)1(
T
T
T
x
x
x
的每一位都是有效数字 . )3(x