7.4 牛顿法

34
1 7.4 牛牛牛 7.4.1 牛牛牛牛牛牛牛牛 牛牛牛牛 牛牛牛牛牛牛牛 牛牛牛牛牛牛牛牛牛牛牛 一, 牛牛牛牛牛牛牛牛牛牛牛牛牛牛 . 0 ) ( x f 牛牛牛牛牛 牛牛牛牛 牛牛 ) 牛牛牛 牛牛 牛牛 0 ) ( x f k x 0 ) ( k x f ) ( x f k x ), )( ( ) ( ) ( k k k x x x f x f x f 牛牛牛牛 牛牛牛牛牛牛牛 0 ) ( x f . 0 ) )( ( ) ( k k k x x x f x f 牛 4.1 牛牛牛牛牛牛牛 牛牛牛牛 牛牛牛牛牛牛 1 k x 1 k x

Upload: kyle-dennis

Post on 30-Dec-2015

86 views

Category:

Documents


7 download

DESCRIPTION

牛顿法是一种线性化方法,其基本思想是将非线性方 程 逐步归结为某种线性方程来求解. 设已知方程 有近似根 (假定 ) , 将函数 在点 展开,有. 于是方程 可近似地表示为. 这是个线性方程,记其根为 ,则 的计算公式为. 7.4 牛顿法. 7.4.1 牛顿法及其收敛性. ( 4.1 ). 方程 的根 可解释为曲线 与 轴 的交点的横坐标(图 7-3). 设 是根 的某个近似值, - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 7.4     牛顿法

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

Page 2: 7.4     牛顿法

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

Page 3: 7.4     牛顿法

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

Page 4: 7.4     牛顿法

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

Page 5: 7.4     牛顿法

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

Page 6: 7.4     牛顿法

6

止迭代,以 作为所求的根;否则转步骤 4. 此处 是允许误差,而

1x 21,

时,当

时;当

Cxx

xx

Cxxx

11

01

101

其中 是取绝对误差或相对误差的控制常数,一般可取 .

C1C

步骤 4 修改 如果迭代次数达到预先指定的次数 ,或者 ,则方法失败;否则以 代替 转步骤 2继续迭代 .

N

01 f ),,( 111 ffx ),,( 000 ffx

Page 7: 7.4     牛顿法

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

Page 8: 7.4     牛顿法

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 )式,得

Page 9: 7.4     牛顿法

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

Page 10: 7.4     牛顿法

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

Page 11: 7.4     牛顿法

11

在( 4.7 )中取 ,则称为简化牛顿法,这

类方法计算量省,但只有线性收敛,其几何意义是用平行弦与 轴交点作为 的近似 . 如图 7-4 所示 .

)(

1

0xfC

x *x

图 7-4

Page 12: 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

Page 13: 7.4     牛顿法

13

但如果改用 作为迭代初值,则依牛顿法公式( 4.9 )迭代一次得

6.00 x

.9.171 x

这个结果反而比 更偏离了所求的根 . 6.00 x 32472.0*x

为了防止迭代发散,对迭代过程再附加一项要求,即具有单调性:

.)()( 1 kk xfxf ( 4.10)

满足这项要求的算法称下山法 . 将牛顿法与下山法结合起来使用,即在下山法保证函数值稳定下降的前提下,用牛顿法加快收敛速度 . 将牛顿法的计算结果

Page 14: 7.4     牛顿法

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

Page 15: 7.4     牛顿法

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

Page 16: 7.4     牛顿法

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

Page 17: 7.4     牛顿法

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

Page 18: 7.4     牛顿法

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

Page 19: 7.4     牛顿法

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 )方法()方法()方法(

三种方法数值结果表

Page 20: 7.4     牛顿法

20

计算三步,方法( 2)及( 3)均达到 10 位有效数字,而用牛顿法只有线性收敛,要达到同样精度需迭代 30次 .

Page 21: 7.4     牛顿法

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 )

Page 22: 7.4     牛顿法

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

Page 23: 7.4     牛顿法

23

程是

).()(

)(1

1k

kk

kkk xx

xx

xfxfxfy

因之,按( 5.2) 式求得的 实际上是弦线 与 轴交点的横坐标 . 这种算法因此而称为弦截法 .

1kx 1kkPP x

表 7-5

Page 24: 7.4     牛顿法

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

计算结果表

实际上,弦截法具有超线性的收敛性 .

Page 25: 7.4     牛顿法

25

定理 6 假设 在根 的邻域 内具有二阶连续导数,且对任意 有 ,又初值 ,那么当邻域Δ充分小时,弦截法( 5.2 )将按

阶 收敛到根 . 这里 是方程 的正根 .

)(xf *x *: xx

x 0)( xf

10 , xx

618.12

51

p *x p 012

Page 26: 7.4     牛顿法

26

7.5.2 抛物线法

设已知方程 的三个近似根 ,以这三点为节点构造二次插值多项式 ,并适当选取 的一个零点 作为新的近似根,这样确定的迭代过程称抛物线法,亦称密勒( Müller )法 .

21,, kkk xxx0)( xf)(2 xp )(2 xp

1kx

在几何上,这种方法的基本思想是用抛物线 与 轴的交点 作为所求根 的近似位置(图 7-6).

)(2 xpy

1kxx *x

图 7-6

Page 27: 7.4     牛顿法

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

Page 28: 7.4     牛顿法

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

Page 29: 7.4     牛顿法

29

以上计算表明,抛物线法比弦截法收敛得更快 . 在一定条件下可以证明,对于抛物线法,迭代误差有下列渐近关系式

.*)(6

*)(42.0

1840.1

xf

xf

e

e

k

k

可见抛物线法也是超线性收敛的,其收敛的阶 ,收敛速度比弦截法更接近于牛顿法 .

840.1p

从( 5.3 )看到,即使 均为实数, 也可以是复数,所以抛物线法适用于求多项式的实根和复根 .

21,, kkk xxx 1kx

Page 30: 7.4     牛顿法

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

Page 31: 7.4     牛顿法

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 )

Page 32: 7.4     牛顿法

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 )的牛顿迭代法 .

Page 33: 7.4     牛顿法

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

Page 34: 7.4     牛顿法

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