4计算函数零点和极值点的迭代法

第4章 计算函数零点和极值点的迭代法

本章讨论非线性方程(组)的求解问题

4.1 不动点迭代法及其收敛性

1.不动点

设非线性方程组f (x ) = 0 (4.1-1) 等价: x = Φ(x ) (4.1-2)

则有迭代格式:x (k +1) = Φ(x (k ) ) ,k = 0,1,2,…

若Φ连续,且迭代序列{x (k ) }收敛到x *,则两边取极限得x * = Φ(x *) ,即x *满足(4.1-2),从而满足(4.1-1),即x *为f 零点。 称x *为Φ(x ) 的不动点。

注:(1) 求零点⇔求不动点

(2) Φ(.)称为迭代函数,{x (k ) }称为迭代序列

(3) 不同方法构造迭代函数,得不同的迭代序列

2.迭代法的基本问题

(1) 如何构造适当的迭代函数Φ(.)使迭代序列{x (k ) }收敛 (2) 收敛的速度和误差 (3) 如何加速

4.1.1 解一元方程的迭代法

1. 根的隔离

设一元方程f (x ) = 0,f 连续,其实根可能有很多,需将各根隔离,即f 在[a ,b ]内有且仅有一根。

方法:设f ∈C[a ,b ],f (a ) f (b )

2. 迭代序列的收敛性

因为可以有多种迭代函数,所产生的迭代序列{x (k ) }有可能: (1) 收敛快 (2) 收敛慢 (3) 不收敛

例1 f (x ) = x 3 – x – 1 = 0,求f 在x = 1.5附近的根,初值取x (0) = 1.5。(p328) 取ϕ(x ) =

3

1+x ——收敛

取ϕ(x ) = x 3 – 1——不收敛

定理4.1-1 (1) 设ϕ(x ) ∈ C[a ,b ],且对于任意x ∈ [a ,b ]有ϕ (x ) ∈ [a ,b ],则ϕ在[a ,b ]上必有不动点。 (2) 进一步,若ϕ(x ) ∈ C1[a ,b ],且存在L

x x

(k )

-x -x

*

≤≤

L 1-L L

k

x x

(k )

-x -x

(k -1)

(4.1-5)

(1)

(0)

(k ) *

1-L

证明:(1) 若ϕ(a ) = a 或ϕ(b ) = b ,则结论显然成立

现设a 0,ψ(b ) = ϕ(b ) – b

(2) 设ϕ(x ) ∈ C1[a ,b ],且满足(4.1-4),若有x 1*,x 2* ∈ [a ,b ],x 1* ≠ x 2*,ϕ(x i *) = x i * i = 1,2 由微分中值定理,|x 1* – x 2*| = |ϕ(x 1*) – ϕ (x 2*)| = |ϕ'(ξ)| |x 1* – x 2*| ≤ L|x 1* – x 2*|

由|x (k ) – x *| = |ϕ( x(k -1) ) – ϕ (x *)| ≤ L |x (k -1) – x *| ≤ … ≤ L k|x (0) – x *| 及0

k →∞

(k )

-x |=0

*

即x (k ) 收敛于x *。

并且由|x (k ) – x *| ≤ L |x (k -1) – x *|得 |x (k ) – x *| ≤ L |x (k -1) – x (k ) + x(k ) – x *| ≤ L |x (k -1) – x (k ) | + L|x(k ) – x *| 从而有x

(k )

-x

*

L 1-L

x

(k )

-x

(k -1)

又因

|x (k ) – x (k -1) | = |ϕ(x (k -1) ) – ϕ (x (k -2) )| ≤ L | x (k -1) – x (k -2) | ≤ …≤ L k-1| x (1) – x (0)|,代入上式的右边,即得 x

(k )

-x

*

L

k

1-L

x

(1)

-x

(0)

注:(1) 若L ≈ 1,则收敛很慢,须考虑加速问题 (2) (4.1-5)中第一式为后验公式—迭代停止准则 第二式为先验公式—预测迭代次数

(3) 定理是以[a ,b ]中任一点作初值,迭代都收敛,称为全局收敛。 (此要求较难满足,故考虑在) x *的某一邻域内—局部收敛性

定理4.1-2 设x *为ϕ的不动点,ϕ ' 在x *的某邻域内连续,且|ϕ '(x *)| 0,只要x (0) ∈ [x * –δ,x * + δ],迭代法x (k +1) = ϕ(x (k ) ) 收敛。

证明:∵|ϕ'(x *)| 0,使[x * –δ,x * + δ] ⊂ U (x *) ,且 ∀ x ∈ [x * –δ,x * + δ]有|ϕ '(x )| ≤ q

注:只要x (0)充分接近x *,且|ϕ '(x (0))| 明显小于1,则{x (k ) }收敛于x *。 例2 求方程x = e–x 在0.5附近的根。

由于|ϕ '(0.5)| = e–0.5 ≈ 0.61明显小于1,故收敛

3. 收敛阶

定义4.1-1 设x (k ) → x *,记e k = x(k ) - x * 若存在p ≥ 1,及c ≠0,使lim

|e k +1||e k |

p

k →∞

=c 则称{x (k ) }是p 阶收敛的,或称收敛阶为p (p

越高收敛越快) 注:

(1) p = 1,0 1,称超线性收敛 (3) p = 2,称平方收敛

因为| x (k +1) –x *| = |ϕ(x (k ) ) – ϕ(x *)| = |ϕ'(ξ)| |x (k ) – x *|,其中ξ在x (k ) 和x *之间。 则lim

|e k +1||e k |

p

k →∞

=|ϕ' (x ) |

*

所以若ϕ '(x *) ≠ 0,则为线性收敛

想得到更高阶的收敛性,须ϕ '(x *) = 0,通常可考虑麦克劳林展式。

定理4.1-3 设x *为ϕ的不动点,正整数p ≥ 2,若ϕ(p ) 在x *的某邻域内连续,且满足

⎧ϕ(k ) (x *) =0, ⎨(p ) *

⎩ϕ(x ) ≠0

k =1, 2,..., p -1

(4.1.6)

则{x (k ) }p 阶局部收敛。

证明:∵ϕ '(x *) = 0(

x +

(k +1)

=ϕ(x (x )

*

(k )

) =ϕ(x ) +ϕ' (x )(x

(k )

**(k )

-x ) +

(k )

*

ϕ" (x )

2!

*

p

*

(x

(k )

-x ) +...

*2

ϕ

(p -1)

(p -1)!

(x -x )

*p -1

+

ϕ

(p )

(ξ)

p !

(x -x )

由(4.1-6)知,

x

(k +1)

-x =ϕ(x

*(k )

) -ϕ(x ) =

*

ϕ

(p )

(ξ)

p !

(x

(k )

-x )

*p

所以

x (x

(k +1) (k )

-x

*

*p

-x )

=

ϕ

(p )

(ξ)

p !

ϕ

(p )

(x )

*

p !

≠0

即{x (k ) }p 阶局部收敛。

例3 设f ∈ C2[a ,b ],ϕ (x ) = x – r 1(x ) f (x ) – r 2(x ) f 2(x ) ,x *为f 的单重零点。试确定未知函数r 1(x ) 、r 2(x ) ,使迭代法x (k +1) = ϕ(x (k ) ) 至少是三阶局部收敛的。解:由定理4.1-3知,应有ϕ '(x *) = ϕ "(x *) = 0因为ϕ '(x ) = 1 – r 1'(x ) f (x ) – r 1(x ) f '(x ) – r 2'(x ) f 2(x ) – 2r 2(x ) f (x ) f '(x ) 而f (x *) = 0,f '(x *) ≠ 0(单重零点),令ϕ '(x *) = 0,有1 – r 1'(x *) f '(x *) = 0即取r 1(x ) =

1f ' (x )

,则有ϕ '(x *) = 0

此时有ϕ '(x ) = – r 1'(x ) f (x ) – r 2'(x ) f 2(x ) – 2r 2(x ) f (x ) f '(x )

⇒ ϕ "(x ) = – r 1"(x ) f (x ) – r 1'(x ) f '(x ) – r 2"(x ) f 2(x ) – 4r 2'(x ) f (x ) f '(x ) – 2r 2(x )[f '(x )]2– 2r 2'(x ) f (x ) f "(x ) 其中r 1' (x ) =

-f " (x ) [f ' (x )]

2

*

令ϕ"(x ) = 0,有

*

f " (x ) f ' (x )

*

-2r 2(x )[f ' (x )]=0,即取

**2

r 2(x ) =

f " (x ) 2[f ' (x )]

3

,则有ϕ"(x *) = 0从而只要同时取r 1' (x ) =

-f " (x ) [f ' (x )]

2

,r 2(x ) =

f " (x ) 2[f ' (x )]

3

迭代法至少具有三阶局部收敛性。

4. 加速

幂法中曾有Aitken 加速,这里使用相同的思想 若x → x ,由中值定理, x

(k )

*

(k +1)

– x = ϕ (x ) –ϕ (x ) = ϕ'(ξ1)(x – x ) ⇒

*(k ) *(k ) *

x

(k +1) (k )

-x -x

*

*

*

x

=ϕ(ξ1)

'

ξ1在x 和x 之间x

(k ) *(k +2)

– x = ϕ (x

*(k +1)

) –ϕ (x ) = ϕ'(ξ2)(x

*(k +1)

– x ) ⇒

*

x x

(k +2) (k +1)

-x -x

*

=ϕ(ξ2) ξ2

'

在x (k +1)和x *之间因为x (k ) → x *,所以当k 充分大时,ϕ '(ξ1) ≈ ϕ '(ξ2) 即

x x

(k +2) (k +1)

-x -x

**

x

(k +1) (k )

-x -x

*

*

x

⇒x ≈x

*(k +2)

-

(x x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1)

+x

(4.1-7)

ˆ记x

(k +2)

=x

(k +2)

-

(x x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1)

+x

ˆ,则{x

(k )

}比{x (k ) }收敛得快。

e k +1e k

定理4.1-4 设{x (k ) }线性收敛于x *,且∀k ≥ 0,e k = x (k ) – x * ≠ 0 lim (线性收敛) 则lim

ˆ(k ) -x *x x

(k )

k →∞

=λ 0

k →∞

-x

*

=0

证明:因为lim

e k +1e k

k →∞

所以e k +1 = (λ +εk ) e k ,其中εk → 0

⇒ x (k +1) – x (k ) = x (k +1) – x * – (x (k ) – x *) = e k +1 – e k = [(λ – 1) + εk ]e k 又

x (k +2) – 2x (k +1) + x (k ) = (x (k +2) – x (k +1)) – (x (k +1) – x (k ) ) = [(λ – 1) + εk +1]e k +1 – [(λ – 1) + εk ]e k

= [(λ – 1) + εk +1](λ + εk ) e k – [(λ – 1) + εk ]e k = [(λ – 1)2 + μ k ]e k .

其中μ k = λεk +1 +(λ – 2 )εk +εk +1εk → 0

ˆx

(k +2)

=x =x

(k +2)

-

(x x (x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1) (k )

+x

2

=

x x

(k +2) (k +2)

⋅x

(k )

-(x

(k +1)

(k +1)

)

2

-2x +x

(k )

(k +1)

(k )

-

-x )

x

(k +2)

-2x

(k +1)

+x

(k )

所以

ˆx

(k +2)

-x =x

*(k )

-x -

*

(x x

(k +1)

-x

2

(k )

)

2(k )

(k +2)

-2

2

(k +1)

-x

=e k -

[(λ-1) +εk ]e k

2

[(λ-1) +μk ]e k

[(λ-1) +εk ]

2

2

=e k -e k

[(λ-1) +μk ]

⇒ lim

ˆ(k +2) -x *x x

(k +2)

k →∞

-x

*

=lim

e k e k +1

k →∞

(1-

[(λ-1) +εk ]

2

[(λ-1) +μk ]

) =0

注:(1) (4.1-7)成为Aitken 加速

⎧(k ) (k )

y =ϕ(x ) ⎪⎪⎪(k ) (k )

(2) ⎨z =ϕ(y ) k = 1,2,…

(k ) (k ) 2(z -y ) ⎪(k +1) (k )

x =z -(k )

(k ) (k ) ⎪z -2y +x ⎩

称为史蒂文生迭代法。

例4 用迭代法和Steffensen 迭代法求函数f (x ) = x – lnx – 2在区间(2,+∞) 内的零点,取x (0) = 3. 解:将f (x ) = 0化为等价的方程x = lnx + 2 = ϕ (x ) ,由于ϕ '(x ) = 1/x 在[2,+∞) 上满足|ϕ '(x )| ≤ 1/2

⎧(k ) (k )

y =ln x +2⎪⎪⎪(k ) (k )

=ln y +2 ⎨z

(k ) (k ) 2(z -y ) ⎪(k +1) (k )

x =z -(k )

(k ) (k ) ⎪z -2y +x ⎩

取初值x (0) = 3作迭代,结果见p336

迭代法x (k +1) = ln x(k ) + 2: x0=3 k=1

x1=log(x0)+2

while (abs(x1-x0)>0.0000001)

x0=x1;k=k+1 x1=log(x0)+2 end

Steffensen 迭代法 x0=3 k=1

y=log(x0)+2 z=log(y)+2

x1=z-(z-y)^2/(z-2*y+x0)

while (abs(x1-x0)>0.0000001) x0=x1;k=k+1 y=log(x0)+2 z=log(y)+2

x1=z-(z-y)^2/(z-2*y+x0) end

4.1.2 解非线性方程组的迭代法

设非线性方程组f (x ) = 0 (4.1-1)

⎧f 1(x 1, x 2,..., x n ) =0⎪

⎪f 2(x 1, x 2,..., x n ) =0

⎪⎩f n (x 1, x 2,..., x n ) =0

考虑等价形式

x = Φ(x ) (4.1-2)

迭代公式x (k +1) = Φ(x (k ) ) k = 0,1,2,… (4.1-3) 其收敛性有下述压缩映射(不动点)原理

Th4.1-5 设Φ在闭区域G =R n 上满足条件

(1) 存在q ,0

(1) 存在唯一不动点x *∈G ,且∀ x(0)∈G ,迭代向量列收敛于x *。 (2)

x

(k )

-x

*

q 1-q q

k

x

(k )

-x

(k -1)

x

(1)

x

(k )

-x

*

1-q

-x

(0)

证明与Th2.4-3相似 注:

(1) Φ(G ) ⊆G 保证序列{x (k ) }⊆G

(2) 若ϕi (x ) 在G 上可微,Φ(x ) = (ϕ1(x ) ,ϕ2(x ) ,…,ϕn (x )) T

⎡∂ϕ1⎢∂x ⎢1

记D Φ(x ) =⎢

∂ϕn ⎢⎢∂x 1⎣

∂ϕ1⎤∂x n ⎥

,则压缩条件可用下式替代 ⎥∂ϕn

⎥∂x n ⎥

∀x ∈G ⇒D Φ(x ) ≤q

例5

4.2 Newton 迭代法及其变形

4.2.1 一元非线性方程

f (x ) = 0

1. 牛顿迭代方法

线性化: 设f (x ) 在点x (k ) 处可微,则展开

f (x ) =f (x

(k )

(k ) (k )

) +f '(x )(x -x ) +

f ''(ξ) 2!

(x -x

(k )

)

2

用线性部分近似表示

f (x ) ≈ f (x (k ) ) + f '(x (k ) )( x – x (k ) )

即考虑方程f (x (k ) ) + f '(x (k ) )( x – x (k ) ) = 0 若f '(x ) ≠ 0,则有x =x

(k )

(k )

-

f (x

(k )

)

(k )

f '(x )

令:x

(k +1)

=x

(k )

-

f (x f '(x

(k ) (k )

) )

k = 0,1,2,… (4.2-4)

称为Newton 迭代公式,其迭代函数为

ϕ(x ) =x -

f (x ) f '(x )

(4.2-5)

2. 收敛性

(1) 若x *是f (x ) 的单重根: f (x *) = 0,f '(x *) ≠ 0 因为ϕ'(x ) =

*

**f (x ) f ''(x ) *2

[f '(x )]

=0, ϕ''(x ) =

*

*

f ''(x ) *

f '(x )

一般不为0

所以,牛顿法是局部二阶收敛的 ——由定理4.1-3

例1 用Newton 法求非线性方程f (x ) = x e x – 1 = 0在(0,1) 内的根,取x (0) = 0.5。 解:因为f (x ) = (1 + x )e x ,故其Newton 迭代公式为

x

(k +1)

=x

(k )

-

x

(k )

e

x

(k )

-1

x

(k )

(1+x

(k )

,k = 0,1,2,…

) e

从x (0) = 0.5出发,计算结果见p342表4.2-1。

(2) 若x *是f (x ) 的重根,即有f (x ) = (x – x *) m g (x ) ,其中g (x *) ≠ 0,m ≥ 2 因为f '(x ) = m (x – x *) m -1g (x ) + (x – x *) m g '(x ) 记x = x + h ,则ϕ(x +h ) =(x +h ) -

*

***

h g (x +h )

mh

m -1

*

g (x +h ) +h g '(x +h )

*

m

m *

=ϕ(x ) +h -

*

hg (x +h )

mg (x +h ) +h g '(x +h )

*

*

⇒ϕ'(x ) =lim

*

ϕ(x +h ) -ϕ(x )

h

**

h →0

=lim (1-

h →0

g (x +h )

mg (x +h ) +h g '(x +h )

*

*

*

) =1-

1m

当m ≥ 2时,ϕ '(x *) ≠ 0,由|ϕ '(x *)|

x

(k +1)

f (x ) f '(x )

,易知有ϕ '(x *) = 0所以,若事先知道x *的重数,则

=x

(k )

-m

f (x

(k )

)

(k )

f '(x )

(4.2-6)

此时,迭代序列{x (k ) }是二阶收敛的。 或令u (x ) =

f (x ) f '(x )

,则x *是u (x ) 的单重零点,应用Newdon 法于u (x ) ,有

x

(k +1)

=x

(k )

-

u (x

(k )

)

(k )

u '(x )

=x

(k )

-

f (x

(k )

(k )

) f '(x )

(k ) 2(k ) (k )

[f '(x )]-f (x ) f ''(x )

(4.2-7)

迭代序列也是二阶收敛的

例2 2是方程x – 4x + 4 = 0的二重根

42

(1) 采用Newdon 法 ϕ(x ) =x -

x -4x +44x -8x

34

2

=x -

(x -2)

2

22

4x (x -2)

=x -

x -24x

2

即x

(k +1)

=x

(k )

-

(x

(k )

) -2

(k )

2

4x

(2) 采用(4.2-6)

x

(k +1)

=x

(k )

-

(x

(k )

) -2

(k )

2

2x

(3) 采用(4.2-7)

u (x ) =

x -24x

2

2

1x +2

,u '(x ) =() 2

4x

2

2

u (x ) u '(x )

=

(x -2) x

2

x (x +2)

(k )

=

x (x -2) x +2

(k ) 2

22

2

即x

(k +1)

=x -

x

(k )

[(x

(k )

) -2]

[x ]+2

计算结果见343页表4.2-2

4.2.2 多元非线性方程组

f (x ) = 0 (4.1-1)

⎧f 1(x 1, x 2,..., x n ) =0

⎪f 2(x 1, x 2,..., x n ) =0

⎪⎩f n (x 1, x 2,..., x n ) =0

1. Newdon迭代公式

线性化 设f (x ) = [f 1(x ) ,f 2(x ) ,…,f n (x )]T 在点x (k ) 处可微,将f i (x ) 在点x (k ) 处展开

n

f i (x ) =f i (x

(k )

) +

j =1

∂f i (x

(k )

)

∂x j

(x j -x j ) +

(k )

用线性函数近似表示,即有

n

f i (x

(k )

) +

j =1

∂f i (x

(k )

)

∂x j

(x j -x j ) =0 (i = 1,2,…,n )

(k )

其矩阵形式:f (x (k ) ) + Df (x (k ) )( x – x (k ) ) = 0 (4.2-1)

⎡∂f 1⎢∂x ⎢1(k )

其中Df (x ) =⎢

∂f ⎢n ⎢∂x 1⎣

∂f 1⎤∂x n ⎥

⎥(k )

是f (x ) 在点x 处的Jacobi 矩阵 ⎥∂f n

∂x n ⎥(k )

⎦x =x

若Df (x (k ) ) 可逆,则由(4.2-1)解出x = x (k ) – [Df (x (k ) )]-1f (x (k ) ) 令x (k +1) = x (k ) – [Df (x (k ) )]-1f (x (k ) ) (4.2-2)

称(4.2-2)为解方程组(4.2-1)的Newdon 迭代公式,其迭代函数为 x – [Df (x )]-1f (x )

注:由于求逆较难,一般可解方程组: Df (x (k ) ) Δx (k ) = – f (x (k ) )

求得Δx (k ) = x (k +1) – x (k ) 即得迭代公式:

⎧Df (x (k ) ) ∆x (k ) =-f (x (k ) )

k = 0,1,2,… (4.2-3) ⎨(k +1)

(k ) (k ) =x +∆x ⎩x

2. 收敛性

定理4.2-1 设x *是f (x ) 的零点,f (x ) 在x *的某一领域N 内二次连续可微,且Df (x *) 可逆,则

存在闭球S = {x | ||x – x *|| ≤ δ} ⊆ N,由S 内任一点x (0)出发,按公式(4.2-2)产生的序列{x (k ) }被包含在S 内(x (0) ∈ S ⇒ {x (k ) } ⊆ S),且有||x (k +1) – x *|| ≤ C ||x (k ) – x *||2,其中C 与k 无关。

证明:因为Df (x ) 在x *处连续,且Df (x *) 可逆,故存在δ > 0,使在S = {x | ||x – x *|| ≤ δ} ⊆ N上Df (x ) 可逆,且f 二次连续可微于S 。又因为f (x *) = 0,所以若x (k ) ∈ S,就有 x (k +1) – x * = x (k ) – x * – [Df (x (k ) )]-1[f (x (k ) ) –f (x *)] (f (x *) = 0) = [Df (x (k ) )] -1[f (x (k ) ) –f (x *) + Df (x (k ) )(x (k ) – x *)]

⇒ ||x (k +1) – x *|| ≤ ||[Df (x (k ) )] -1|| || f(x (k ) ) –f (x *) + Df (x (k ) )(x (k ) – x *)|| ≤ ||[Df (x (k ) )] -1|| max{||D 2f (x * – t(x (k ) – x *))||:0 ≤ t ≤ 1} ||x (k ) – x *||2

因为f 在S 上二次连续可微,所以max{||D 2f (x * – t (x (k ) – x *))||:0 ≤ t ≤ 1} ≤ M [Df (x (k ) )] -1在S 上连续,所以||[Df (x (k ) )] -1|| ≤ D ,这里M 、D 与k 无关。 ⇒ ||x (k +1) – x *|| ≤ D M ||x (k ) – x *||2 = C ||x (k ) – x *||2 .

只要C δ

||x ||x

(k +1) (k )

-x ||

*

2

*

-x ||

→C ≠0知,Newton 法是局部二阶收敛的。

例3 用Newton 法求非线性方程组

⎧x 1+2x 2-3=0

⎨22

⎩2x 1+x 2-5=0

在点(1,5,1) 附近的根。

⎡x 1+2x 2-3⎤

解:f (x ) =⎢2

2⎥,

2x +x -52⎣1⎦

⎡1

Df (x ) =⎢

⎣4x 1

2⎤⎥ 2x 2⎦

由迭代公式

⎧Df (x (k ) ) ∆x (k ) =-f (x (k ) )

⎨(k +1)

(k ) (k ) =x +∆x ⎩x

(k )

⎧⎡12⎤(k ) ⎡x 1(k ) +2x 2⎤-3

∆x =-⎪⎢(k ) ⎢⎥(k ) ⎥(k ) 2(k ) 2

2x 2⎦2(x ) +(x ) -5⎨⎣4x 112⎣⎦

⎪(k +1) (k ) (k ) x =x +∆x ⎩

从x (0) = (1,5,1) T 出发,计算结果见p345表4.2-3。

注:虽然Newton 法收敛较快,但

(1) 要求x (0)充分靠近x *才能保证其收敛性

(2) 每一次迭代须解方程组Df (x (k ) ) Δx (k ) = – f (x (k ) ) 当Df (x (k ) ) 不可逆时无法继续

3. 改进——Newton 下山法

为改善对初始值的要求,在迭代公式中引入松弛因子ωk : x (k +1) = x (k ) – ωk [Df (x (k ) )]-1f (x (k ) ) 或Df (x (k ) ) Δx (k ) = –ωk f(x (k ) )

其中ωk 的选取满足:||f (x (k +1))||

122, 1

2

,... 进行“试探”,直到(4.2-10)满足,再进行下一次迭代,若选

不到ωk ,则Newton 下山法失败 方法(2) 求m in ||f (x

ω>0

(k )

-ω(Df (x

(k )

)

-1

f (x

(k )

)) ||的最小值点ω

*

令x (k +1) = x (k ) – ω*[Df (x (k ) )]-1f (x (k ) )

这样迫使序列{|| f(x (k ) )||}严格单调下降,从而从某个x (k ) 开始进入x *的附近。

4.3 无约束优化问题的下降迭代法

问题:求函数F(x)的最小值,即确定x * ∈ R n 使 F (x ) =m in n F (x )

x ∈R

*

注:(1) 该问题为最优化理论中无约束化问题 (2) 上述最小值点记为 x =arg m in n F (x )

x ∈R

*

4.3.0 预备知识

(1) 设F(.)具二阶连续偏导数,记

⎡∂F (x ) ⎤⎢∂x ⎥

1

⎢⎥

g (x ) =∇F (x ) = F 的梯度 ⎢⎥

∂F (x ) ⎢⎥⎢∂x n ⎥⎣⎦

g 为多元向量值函数,故有Jacobi 阵:

⎡∂2F ⎢2

∂x 1⎢2⎢∂F

H (x ) =Dg (x ) =⎢∂x ∂x

⎢21⎢ 2⎢∂F ⎢∂x n ∂x 1⎣

∂F ∂x 1∂x 2∂F ∂x 2 2∂F

222

∂x n ∂x 2

2

∂F ⎤

∂x 1∂x n

⎥2

∂F ⎥∂x 2∂x n ⎥

⎥ ⎥2

∂F ⎥

2

∂x n ⎥⎦

称为F 的Hesse 矩阵

(2) 泰勒展开:

F (x ) =F (y ) +[g (y )](x -y ) +

T T

12

(x -y ) H (x )(x -y ) +... 12

T

(x -y ) H (x )(x -y ) +...

T

=F (y ) +[∇F (y )](x -y ) +d dt

n

(3) F (x +tp ) =

i =1

∂F (x +tp )

∂x i

T

p i =[∇F (x +tp )]p

T

(4) 设F (x ) =

12

x Ax +b x +c ——二次函数,其中A 正定,b 为向量

T

则∇F (x ) = Ax + b 其中∇(

12

x Ax ) =Ax , ∇(b x ) =b

*

T

T

(5) 下降迭代法——求x =arg m in F (x )

x ∈R

n

目标:构造使F(x)逐步严格下降(递减)的迭代序列: F (x (k +1))

想法:设已有点x (k ) ,若从x (k ) 出发沿任何方向移动F(x)都不再严格减少,则x (k ) 为局部最小值点。若至少有一个方向,使F(x)严格减少,则从中任选一方向pk ,并在此方向上移动一步:

x (k +1) = x (k ) + t k p k (4.3-1) 其中t k > 0(称为步长因子)使

F (x (k +1)) = F (x (k ) + t k p k )

若此方法产生的序列{x (k ) }收敛于x *,则此方法有效,否则无效。 方法:不同规则对应不同的方法。

注:(1) 下降方向p k 的选取: 由泰勒展式知,当t 充分小时

F (x (k ) + tp k ) = F (x (k ) ) + t [∇F (x (k ) )]T p k +o(t ) = F (x (k ) ) + t g k T p k +o(t ) 其中o(t ) 为t 的高阶无穷小,g k = ∇F (x (k ) )

由(4.3-2)知,应有g k T p k

例如取p k = – g k (F(x)沿负梯度方向下降最快)称为最速下降 (2) 步长因子的选取:

t k 可沿射线x = x (k ) + tp k (t > 0) 进行一维搜索来确定

例如,取 t k = argminF(x (k ) + tp k ) (4.3-4) 称为最佳步长因子 实际计算不易求得,通常求不精确最佳步长因子 例如,使用“成功-失败”试探法

先取定一步长因子λ,若F(x (k ) + λp k )

4.3.1 最速下降法

1. 迭代公式

取p k = – g k ( = ∇F (x (k ) )) 即为最速下降法,其迭代公式(以选最佳步长因子为例)

(k )

⎧-tg k ) ⎪t k =arg min F (x

t >0 k = 0,1,2,... (4.3-5) ⎨(k +1) (k )

⎪x =x -t k g k ⎩

例1 设F (x ) =

12

x Ax +b x +c (4.3-6)

T T

——二次函数,其中A 正定,则

t k =

g k g k g k Ag

T

k T

——可以求出最佳步长因子t k

事实上:因为g (x ) = ∇F (x ) = Ax + b 所以g k = Ax (k ) + b

⇒ g k +1 = Ax (k +1) + b = A (x (k ) – t k g k ) + b = Ax (k ) + b – t k Ag k =g k – t k Ag k 另一方面: t k =arg m in F (x

t >0

(k )

-tg k )

所以而

d dt

d dt

F (x

(k )

-t k g k ) =0

T

F (x -tg ) =-[∇F (x -tg )]g

所以 – [∇F (x (k ) – t k g k )]T g k = – [∇F (x (k +1))]T g k = – g k +1T g k = 0 (4.3-7) 从而0 = [g k – t k Ag k ]T g k = g k T g k – t k g k T Ag k ⇒ t k =

g k g k g k Ag

T

k T

(4.3-8)

所以二次函数(4.3-6)最速下降法的迭代公式为

x

(k +1)

=x

(k )

-

g k g k g k Ag k

T

T

g k k = 0,1,2,... (4.3-9)

2. 算法流程图

求F(x)的最小值

注:因为最优因子t k 满足:g k +1T g k = 0 (4.3-7)

所以方向p k +1与p k 总是互相垂直的,称为锯齿状下降(图4.3-1)此方向在接近极小值点时收敛速度变慢。

例1 用最速下降法求解极值问题m in F (x 1, x 2) ,其中F (x 1,x 2) = 2x 12 + 2x 1x 2 + 5x 22,

x 1, x 2

取x (0) = [1,-1]T 出发。

解:F(x)是二次函数,且g (x ) =∇F (x ) =⎢⎥, A =⎢

⎣2⎣2x 1+10x 2⎦见p350

⎡4x 1+2x 2⎤

⎡4

2⎤⎥ 10⎦

4.3.2 变尺度法

1. 思想

为了改善收敛速度,考虑在x*处的泰勒展开:

F (x ) ≈F (x ) +[g (x )](x -x ) +

*

*

T

*

12

(x -x ) H (x )(x -x )

*T **

因为g (x *) = 0 所以 F (x ) ≈F (x ) +

*

12

(x -x ) H (x )(x -x )

12

x Ax ) =Ax >

T

*T **

⇒ ∇F (x ) = g (x ) ≈ H(x *)(x – x *)

设H 正定(从而可逆),设H(x *)(x – x *) = g (x )

⇒ x * = x – [H(x *)]-1g (x ) = x – Bg (x ) (4.3-10)

上式表明:用B = [H(x *)]-1作用于– g (x ) ,将使最速下降方向– g (x ) 变为直指x * 启示:用–Bg (x ) 作搜索方向。

2. 迭代公式

为了保证–Bg (x ) 是下降方向,由(4.3-3)知,只须g (x ) T (–Bg (x )) 0。 所以当B 正定时(g (x ) T Bg (x ) > 0),必有–Bg (x ) 为下降方向,从而迭代公式为 x (k +1) = x (k ) – t k B k g k k = 0,1,2,... (4.3-11) 其中t k 为步长因子,可通过一维搜索来确定

注:(1) 当 B k = I 时,(4.3-11)即为最速下降法的迭代公式 (2) 当B k = [H(x (k ) )]-1时,迭代公式为

x (k +1) = x (k ) – t k [H(x (k ) )] -1g k k = 0,1,2,... (4.3-12) = x (k ) – t k [Dg (x (k ) )] -1g k (Dg (x (k ) ) 为g 的Jacobi 矩阵) 即为Newdon 下山法

(3) 由于F(x)的Hesse 矩阵H(x ) = Dg (x ) 之逆可能在某些点不存在,即使存在,计算量也很大,所以考虑从[H(x (k ) )] -1的近似方阵出发,每次迭代进行修正(下述方法)。

3. DFP方法

考虑对B k = [H(x (k ) )] -1附加条件 (1) B k 应正定

(2) 从B k 到B k +1应简单:B k +1= B k + ΔB k

(3) B k 满足拟Newdon 条件:B k +1y k = s k ,其中y k = g k +1 – g k ,s k = x (k +1) – x (k ) 从而(ΔB k ) yk = s k –B k y k ,

设ΔB k = s k v k T –B k y k w k T ,(v k ,w k 待定) 解之得∆B k =

s k s k

T

T

s k y k

-

B k y k y k B k y k B k y k

T

T

(4.3-20)

(4.3-20)称为DFP 方法 注:(1) 通常取B 0 = I

(2) DFP方法很有效,但由于舍入误差的影响,可能破坏B k 的正定性,使计算失效。可采用重置措施:即当函数值不下降时取B k = I ,继续迭代,并且当迭代n + 1次后,令x(0) = x(n+1),B n = I ,重新迭代

例2 用DFP 方法求解min F (x 1,x 2) :F (x 1, x 2) =

⎛-2⎫= 4⎪⎪, ⎝⎭

⎛3

F (x 1, x 2) =(x 1, x 2) 2

1 - ⎝2

⎛3x 1-x 2-2⎫

⎪, ⎪

⎝x 2-x 1⎭

32

x 1+

2

12

x 2-x 1x 2-2x 1

2

-

取x

(0)

1⎫⎪x 1⎫2⎪-(2, 0) ⎛ x ⎪⎪ 1⎪

⎝2⎭⎪

2⎭

-1⎫⎪ ⎪1⎭

解:g (x ) =∇F (x ) =

⎛3

H (x ) = -1

4. BFGS方法

B k +1=B k +

1s k y k

T

[(1+

y k B k y k s k y k

T

T

) s k s k

T

-B k y k s k

T

-s k y k B k ] (4.3-21)

T

第4章 计算函数零点和极值点的迭代法

本章讨论非线性方程(组)的求解问题

4.1 不动点迭代法及其收敛性

1.不动点

设非线性方程组f (x ) = 0 (4.1-1) 等价: x = Φ(x ) (4.1-2)

则有迭代格式:x (k +1) = Φ(x (k ) ) ,k = 0,1,2,…

若Φ连续,且迭代序列{x (k ) }收敛到x *,则两边取极限得x * = Φ(x *) ,即x *满足(4.1-2),从而满足(4.1-1),即x *为f 零点。 称x *为Φ(x ) 的不动点。

注:(1) 求零点⇔求不动点

(2) Φ(.)称为迭代函数,{x (k ) }称为迭代序列

(3) 不同方法构造迭代函数,得不同的迭代序列

2.迭代法的基本问题

(1) 如何构造适当的迭代函数Φ(.)使迭代序列{x (k ) }收敛 (2) 收敛的速度和误差 (3) 如何加速

4.1.1 解一元方程的迭代法

1. 根的隔离

设一元方程f (x ) = 0,f 连续,其实根可能有很多,需将各根隔离,即f 在[a ,b ]内有且仅有一根。

方法:设f ∈C[a ,b ],f (a ) f (b )

2. 迭代序列的收敛性

因为可以有多种迭代函数,所产生的迭代序列{x (k ) }有可能: (1) 收敛快 (2) 收敛慢 (3) 不收敛

例1 f (x ) = x 3 – x – 1 = 0,求f 在x = 1.5附近的根,初值取x (0) = 1.5。(p328) 取ϕ(x ) =

3

1+x ——收敛

取ϕ(x ) = x 3 – 1——不收敛

定理4.1-1 (1) 设ϕ(x ) ∈ C[a ,b ],且对于任意x ∈ [a ,b ]有ϕ (x ) ∈ [a ,b ],则ϕ在[a ,b ]上必有不动点。 (2) 进一步,若ϕ(x ) ∈ C1[a ,b ],且存在L

x x

(k )

-x -x

*

≤≤

L 1-L L

k

x x

(k )

-x -x

(k -1)

(4.1-5)

(1)

(0)

(k ) *

1-L

证明:(1) 若ϕ(a ) = a 或ϕ(b ) = b ,则结论显然成立

现设a 0,ψ(b ) = ϕ(b ) – b

(2) 设ϕ(x ) ∈ C1[a ,b ],且满足(4.1-4),若有x 1*,x 2* ∈ [a ,b ],x 1* ≠ x 2*,ϕ(x i *) = x i * i = 1,2 由微分中值定理,|x 1* – x 2*| = |ϕ(x 1*) – ϕ (x 2*)| = |ϕ'(ξ)| |x 1* – x 2*| ≤ L|x 1* – x 2*|

由|x (k ) – x *| = |ϕ( x(k -1) ) – ϕ (x *)| ≤ L |x (k -1) – x *| ≤ … ≤ L k|x (0) – x *| 及0

k →∞

(k )

-x |=0

*

即x (k ) 收敛于x *。

并且由|x (k ) – x *| ≤ L |x (k -1) – x *|得 |x (k ) – x *| ≤ L |x (k -1) – x (k ) + x(k ) – x *| ≤ L |x (k -1) – x (k ) | + L|x(k ) – x *| 从而有x

(k )

-x

*

L 1-L

x

(k )

-x

(k -1)

又因

|x (k ) – x (k -1) | = |ϕ(x (k -1) ) – ϕ (x (k -2) )| ≤ L | x (k -1) – x (k -2) | ≤ …≤ L k-1| x (1) – x (0)|,代入上式的右边,即得 x

(k )

-x

*

L

k

1-L

x

(1)

-x

(0)

注:(1) 若L ≈ 1,则收敛很慢,须考虑加速问题 (2) (4.1-5)中第一式为后验公式—迭代停止准则 第二式为先验公式—预测迭代次数

(3) 定理是以[a ,b ]中任一点作初值,迭代都收敛,称为全局收敛。 (此要求较难满足,故考虑在) x *的某一邻域内—局部收敛性

定理4.1-2 设x *为ϕ的不动点,ϕ ' 在x *的某邻域内连续,且|ϕ '(x *)| 0,只要x (0) ∈ [x * –δ,x * + δ],迭代法x (k +1) = ϕ(x (k ) ) 收敛。

证明:∵|ϕ'(x *)| 0,使[x * –δ,x * + δ] ⊂ U (x *) ,且 ∀ x ∈ [x * –δ,x * + δ]有|ϕ '(x )| ≤ q

注:只要x (0)充分接近x *,且|ϕ '(x (0))| 明显小于1,则{x (k ) }收敛于x *。 例2 求方程x = e–x 在0.5附近的根。

由于|ϕ '(0.5)| = e–0.5 ≈ 0.61明显小于1,故收敛

3. 收敛阶

定义4.1-1 设x (k ) → x *,记e k = x(k ) - x * 若存在p ≥ 1,及c ≠0,使lim

|e k +1||e k |

p

k →∞

=c 则称{x (k ) }是p 阶收敛的,或称收敛阶为p (p

越高收敛越快) 注:

(1) p = 1,0 1,称超线性收敛 (3) p = 2,称平方收敛

因为| x (k +1) –x *| = |ϕ(x (k ) ) – ϕ(x *)| = |ϕ'(ξ)| |x (k ) – x *|,其中ξ在x (k ) 和x *之间。 则lim

|e k +1||e k |

p

k →∞

=|ϕ' (x ) |

*

所以若ϕ '(x *) ≠ 0,则为线性收敛

想得到更高阶的收敛性,须ϕ '(x *) = 0,通常可考虑麦克劳林展式。

定理4.1-3 设x *为ϕ的不动点,正整数p ≥ 2,若ϕ(p ) 在x *的某邻域内连续,且满足

⎧ϕ(k ) (x *) =0, ⎨(p ) *

⎩ϕ(x ) ≠0

k =1, 2,..., p -1

(4.1.6)

则{x (k ) }p 阶局部收敛。

证明:∵ϕ '(x *) = 0(

x +

(k +1)

=ϕ(x (x )

*

(k )

) =ϕ(x ) +ϕ' (x )(x

(k )

**(k )

-x ) +

(k )

*

ϕ" (x )

2!

*

p

*

(x

(k )

-x ) +...

*2

ϕ

(p -1)

(p -1)!

(x -x )

*p -1

+

ϕ

(p )

(ξ)

p !

(x -x )

由(4.1-6)知,

x

(k +1)

-x =ϕ(x

*(k )

) -ϕ(x ) =

*

ϕ

(p )

(ξ)

p !

(x

(k )

-x )

*p

所以

x (x

(k +1) (k )

-x

*

*p

-x )

=

ϕ

(p )

(ξ)

p !

ϕ

(p )

(x )

*

p !

≠0

即{x (k ) }p 阶局部收敛。

例3 设f ∈ C2[a ,b ],ϕ (x ) = x – r 1(x ) f (x ) – r 2(x ) f 2(x ) ,x *为f 的单重零点。试确定未知函数r 1(x ) 、r 2(x ) ,使迭代法x (k +1) = ϕ(x (k ) ) 至少是三阶局部收敛的。解:由定理4.1-3知,应有ϕ '(x *) = ϕ "(x *) = 0因为ϕ '(x ) = 1 – r 1'(x ) f (x ) – r 1(x ) f '(x ) – r 2'(x ) f 2(x ) – 2r 2(x ) f (x ) f '(x ) 而f (x *) = 0,f '(x *) ≠ 0(单重零点),令ϕ '(x *) = 0,有1 – r 1'(x *) f '(x *) = 0即取r 1(x ) =

1f ' (x )

,则有ϕ '(x *) = 0

此时有ϕ '(x ) = – r 1'(x ) f (x ) – r 2'(x ) f 2(x ) – 2r 2(x ) f (x ) f '(x )

⇒ ϕ "(x ) = – r 1"(x ) f (x ) – r 1'(x ) f '(x ) – r 2"(x ) f 2(x ) – 4r 2'(x ) f (x ) f '(x ) – 2r 2(x )[f '(x )]2– 2r 2'(x ) f (x ) f "(x ) 其中r 1' (x ) =

-f " (x ) [f ' (x )]

2

*

令ϕ"(x ) = 0,有

*

f " (x ) f ' (x )

*

-2r 2(x )[f ' (x )]=0,即取

**2

r 2(x ) =

f " (x ) 2[f ' (x )]

3

,则有ϕ"(x *) = 0从而只要同时取r 1' (x ) =

-f " (x ) [f ' (x )]

2

,r 2(x ) =

f " (x ) 2[f ' (x )]

3

迭代法至少具有三阶局部收敛性。

4. 加速

幂法中曾有Aitken 加速,这里使用相同的思想 若x → x ,由中值定理, x

(k )

*

(k +1)

– x = ϕ (x ) –ϕ (x ) = ϕ'(ξ1)(x – x ) ⇒

*(k ) *(k ) *

x

(k +1) (k )

-x -x

*

*

*

x

=ϕ(ξ1)

'

ξ1在x 和x 之间x

(k ) *(k +2)

– x = ϕ (x

*(k +1)

) –ϕ (x ) = ϕ'(ξ2)(x

*(k +1)

– x ) ⇒

*

x x

(k +2) (k +1)

-x -x

*

=ϕ(ξ2) ξ2

'

在x (k +1)和x *之间因为x (k ) → x *,所以当k 充分大时,ϕ '(ξ1) ≈ ϕ '(ξ2) 即

x x

(k +2) (k +1)

-x -x

**

x

(k +1) (k )

-x -x

*

*

x

⇒x ≈x

*(k +2)

-

(x x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1)

+x

(4.1-7)

ˆ记x

(k +2)

=x

(k +2)

-

(x x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1)

+x

ˆ,则{x

(k )

}比{x (k ) }收敛得快。

e k +1e k

定理4.1-4 设{x (k ) }线性收敛于x *,且∀k ≥ 0,e k = x (k ) – x * ≠ 0 lim (线性收敛) 则lim

ˆ(k ) -x *x x

(k )

k →∞

=λ 0

k →∞

-x

*

=0

证明:因为lim

e k +1e k

k →∞

所以e k +1 = (λ +εk ) e k ,其中εk → 0

⇒ x (k +1) – x (k ) = x (k +1) – x * – (x (k ) – x *) = e k +1 – e k = [(λ – 1) + εk ]e k 又

x (k +2) – 2x (k +1) + x (k ) = (x (k +2) – x (k +1)) – (x (k +1) – x (k ) ) = [(λ – 1) + εk +1]e k +1 – [(λ – 1) + εk ]e k

= [(λ – 1) + εk +1](λ + εk ) e k – [(λ – 1) + εk ]e k = [(λ – 1)2 + μ k ]e k .

其中μ k = λεk +1 +(λ – 2 )εk +εk +1εk → 0

ˆx

(k +2)

=x =x

(k +2)

-

(x x (x

(k +2)

-x

(k +1)

)

2(k )

(k +2)

-2x

(k +1) (k )

+x

2

=

x x

(k +2) (k +2)

⋅x

(k )

-(x

(k +1)

(k +1)

)

2

-2x +x

(k )

(k +1)

(k )

-

-x )

x

(k +2)

-2x

(k +1)

+x

(k )

所以

ˆx

(k +2)

-x =x

*(k )

-x -

*

(x x

(k +1)

-x

2

(k )

)

2(k )

(k +2)

-2

2

(k +1)

-x

=e k -

[(λ-1) +εk ]e k

2

[(λ-1) +μk ]e k

[(λ-1) +εk ]

2

2

=e k -e k

[(λ-1) +μk ]

⇒ lim

ˆ(k +2) -x *x x

(k +2)

k →∞

-x

*

=lim

e k e k +1

k →∞

(1-

[(λ-1) +εk ]

2

[(λ-1) +μk ]

) =0

注:(1) (4.1-7)成为Aitken 加速

⎧(k ) (k )

y =ϕ(x ) ⎪⎪⎪(k ) (k )

(2) ⎨z =ϕ(y ) k = 1,2,…

(k ) (k ) 2(z -y ) ⎪(k +1) (k )

x =z -(k )

(k ) (k ) ⎪z -2y +x ⎩

称为史蒂文生迭代法。

例4 用迭代法和Steffensen 迭代法求函数f (x ) = x – lnx – 2在区间(2,+∞) 内的零点,取x (0) = 3. 解:将f (x ) = 0化为等价的方程x = lnx + 2 = ϕ (x ) ,由于ϕ '(x ) = 1/x 在[2,+∞) 上满足|ϕ '(x )| ≤ 1/2

⎧(k ) (k )

y =ln x +2⎪⎪⎪(k ) (k )

=ln y +2 ⎨z

(k ) (k ) 2(z -y ) ⎪(k +1) (k )

x =z -(k )

(k ) (k ) ⎪z -2y +x ⎩

取初值x (0) = 3作迭代,结果见p336

迭代法x (k +1) = ln x(k ) + 2: x0=3 k=1

x1=log(x0)+2

while (abs(x1-x0)>0.0000001)

x0=x1;k=k+1 x1=log(x0)+2 end

Steffensen 迭代法 x0=3 k=1

y=log(x0)+2 z=log(y)+2

x1=z-(z-y)^2/(z-2*y+x0)

while (abs(x1-x0)>0.0000001) x0=x1;k=k+1 y=log(x0)+2 z=log(y)+2

x1=z-(z-y)^2/(z-2*y+x0) end

4.1.2 解非线性方程组的迭代法

设非线性方程组f (x ) = 0 (4.1-1)

⎧f 1(x 1, x 2,..., x n ) =0⎪

⎪f 2(x 1, x 2,..., x n ) =0

⎪⎩f n (x 1, x 2,..., x n ) =0

考虑等价形式

x = Φ(x ) (4.1-2)

迭代公式x (k +1) = Φ(x (k ) ) k = 0,1,2,… (4.1-3) 其收敛性有下述压缩映射(不动点)原理

Th4.1-5 设Φ在闭区域G =R n 上满足条件

(1) 存在q ,0

(1) 存在唯一不动点x *∈G ,且∀ x(0)∈G ,迭代向量列收敛于x *。 (2)

x

(k )

-x

*

q 1-q q

k

x

(k )

-x

(k -1)

x

(1)

x

(k )

-x

*

1-q

-x

(0)

证明与Th2.4-3相似 注:

(1) Φ(G ) ⊆G 保证序列{x (k ) }⊆G

(2) 若ϕi (x ) 在G 上可微,Φ(x ) = (ϕ1(x ) ,ϕ2(x ) ,…,ϕn (x )) T

⎡∂ϕ1⎢∂x ⎢1

记D Φ(x ) =⎢

∂ϕn ⎢⎢∂x 1⎣

∂ϕ1⎤∂x n ⎥

,则压缩条件可用下式替代 ⎥∂ϕn

⎥∂x n ⎥

∀x ∈G ⇒D Φ(x ) ≤q

例5

4.2 Newton 迭代法及其变形

4.2.1 一元非线性方程

f (x ) = 0

1. 牛顿迭代方法

线性化: 设f (x ) 在点x (k ) 处可微,则展开

f (x ) =f (x

(k )

(k ) (k )

) +f '(x )(x -x ) +

f ''(ξ) 2!

(x -x

(k )

)

2

用线性部分近似表示

f (x ) ≈ f (x (k ) ) + f '(x (k ) )( x – x (k ) )

即考虑方程f (x (k ) ) + f '(x (k ) )( x – x (k ) ) = 0 若f '(x ) ≠ 0,则有x =x

(k )

(k )

-

f (x

(k )

)

(k )

f '(x )

令:x

(k +1)

=x

(k )

-

f (x f '(x

(k ) (k )

) )

k = 0,1,2,… (4.2-4)

称为Newton 迭代公式,其迭代函数为

ϕ(x ) =x -

f (x ) f '(x )

(4.2-5)

2. 收敛性

(1) 若x *是f (x ) 的单重根: f (x *) = 0,f '(x *) ≠ 0 因为ϕ'(x ) =

*

**f (x ) f ''(x ) *2

[f '(x )]

=0, ϕ''(x ) =

*

*

f ''(x ) *

f '(x )

一般不为0

所以,牛顿法是局部二阶收敛的 ——由定理4.1-3

例1 用Newton 法求非线性方程f (x ) = x e x – 1 = 0在(0,1) 内的根,取x (0) = 0.5。 解:因为f (x ) = (1 + x )e x ,故其Newton 迭代公式为

x

(k +1)

=x

(k )

-

x

(k )

e

x

(k )

-1

x

(k )

(1+x

(k )

,k = 0,1,2,…

) e

从x (0) = 0.5出发,计算结果见p342表4.2-1。

(2) 若x *是f (x ) 的重根,即有f (x ) = (x – x *) m g (x ) ,其中g (x *) ≠ 0,m ≥ 2 因为f '(x ) = m (x – x *) m -1g (x ) + (x – x *) m g '(x ) 记x = x + h ,则ϕ(x +h ) =(x +h ) -

*

***

h g (x +h )

mh

m -1

*

g (x +h ) +h g '(x +h )

*

m

m *

=ϕ(x ) +h -

*

hg (x +h )

mg (x +h ) +h g '(x +h )

*

*

⇒ϕ'(x ) =lim

*

ϕ(x +h ) -ϕ(x )

h

**

h →0

=lim (1-

h →0

g (x +h )

mg (x +h ) +h g '(x +h )

*

*

*

) =1-

1m

当m ≥ 2时,ϕ '(x *) ≠ 0,由|ϕ '(x *)|

x

(k +1)

f (x ) f '(x )

,易知有ϕ '(x *) = 0所以,若事先知道x *的重数,则

=x

(k )

-m

f (x

(k )

)

(k )

f '(x )

(4.2-6)

此时,迭代序列{x (k ) }是二阶收敛的。 或令u (x ) =

f (x ) f '(x )

,则x *是u (x ) 的单重零点,应用Newdon 法于u (x ) ,有

x

(k +1)

=x

(k )

-

u (x

(k )

)

(k )

u '(x )

=x

(k )

-

f (x

(k )

(k )

) f '(x )

(k ) 2(k ) (k )

[f '(x )]-f (x ) f ''(x )

(4.2-7)

迭代序列也是二阶收敛的

例2 2是方程x – 4x + 4 = 0的二重根

42

(1) 采用Newdon 法 ϕ(x ) =x -

x -4x +44x -8x

34

2

=x -

(x -2)

2

22

4x (x -2)

=x -

x -24x

2

即x

(k +1)

=x

(k )

-

(x

(k )

) -2

(k )

2

4x

(2) 采用(4.2-6)

x

(k +1)

=x

(k )

-

(x

(k )

) -2

(k )

2

2x

(3) 采用(4.2-7)

u (x ) =

x -24x

2

2

1x +2

,u '(x ) =() 2

4x

2

2

u (x ) u '(x )

=

(x -2) x

2

x (x +2)

(k )

=

x (x -2) x +2

(k ) 2

22

2

即x

(k +1)

=x -

x

(k )

[(x

(k )

) -2]

[x ]+2

计算结果见343页表4.2-2

4.2.2 多元非线性方程组

f (x ) = 0 (4.1-1)

⎧f 1(x 1, x 2,..., x n ) =0

⎪f 2(x 1, x 2,..., x n ) =0

⎪⎩f n (x 1, x 2,..., x n ) =0

1. Newdon迭代公式

线性化 设f (x ) = [f 1(x ) ,f 2(x ) ,…,f n (x )]T 在点x (k ) 处可微,将f i (x ) 在点x (k ) 处展开

n

f i (x ) =f i (x

(k )

) +

j =1

∂f i (x

(k )

)

∂x j

(x j -x j ) +

(k )

用线性函数近似表示,即有

n

f i (x

(k )

) +

j =1

∂f i (x

(k )

)

∂x j

(x j -x j ) =0 (i = 1,2,…,n )

(k )

其矩阵形式:f (x (k ) ) + Df (x (k ) )( x – x (k ) ) = 0 (4.2-1)

⎡∂f 1⎢∂x ⎢1(k )

其中Df (x ) =⎢

∂f ⎢n ⎢∂x 1⎣

∂f 1⎤∂x n ⎥

⎥(k )

是f (x ) 在点x 处的Jacobi 矩阵 ⎥∂f n

∂x n ⎥(k )

⎦x =x

若Df (x (k ) ) 可逆,则由(4.2-1)解出x = x (k ) – [Df (x (k ) )]-1f (x (k ) ) 令x (k +1) = x (k ) – [Df (x (k ) )]-1f (x (k ) ) (4.2-2)

称(4.2-2)为解方程组(4.2-1)的Newdon 迭代公式,其迭代函数为 x – [Df (x )]-1f (x )

注:由于求逆较难,一般可解方程组: Df (x (k ) ) Δx (k ) = – f (x (k ) )

求得Δx (k ) = x (k +1) – x (k ) 即得迭代公式:

⎧Df (x (k ) ) ∆x (k ) =-f (x (k ) )

k = 0,1,2,… (4.2-3) ⎨(k +1)

(k ) (k ) =x +∆x ⎩x

2. 收敛性

定理4.2-1 设x *是f (x ) 的零点,f (x ) 在x *的某一领域N 内二次连续可微,且Df (x *) 可逆,则

存在闭球S = {x | ||x – x *|| ≤ δ} ⊆ N,由S 内任一点x (0)出发,按公式(4.2-2)产生的序列{x (k ) }被包含在S 内(x (0) ∈ S ⇒ {x (k ) } ⊆ S),且有||x (k +1) – x *|| ≤ C ||x (k ) – x *||2,其中C 与k 无关。

证明:因为Df (x ) 在x *处连续,且Df (x *) 可逆,故存在δ > 0,使在S = {x | ||x – x *|| ≤ δ} ⊆ N上Df (x ) 可逆,且f 二次连续可微于S 。又因为f (x *) = 0,所以若x (k ) ∈ S,就有 x (k +1) – x * = x (k ) – x * – [Df (x (k ) )]-1[f (x (k ) ) –f (x *)] (f (x *) = 0) = [Df (x (k ) )] -1[f (x (k ) ) –f (x *) + Df (x (k ) )(x (k ) – x *)]

⇒ ||x (k +1) – x *|| ≤ ||[Df (x (k ) )] -1|| || f(x (k ) ) –f (x *) + Df (x (k ) )(x (k ) – x *)|| ≤ ||[Df (x (k ) )] -1|| max{||D 2f (x * – t(x (k ) – x *))||:0 ≤ t ≤ 1} ||x (k ) – x *||2

因为f 在S 上二次连续可微,所以max{||D 2f (x * – t (x (k ) – x *))||:0 ≤ t ≤ 1} ≤ M [Df (x (k ) )] -1在S 上连续,所以||[Df (x (k ) )] -1|| ≤ D ,这里M 、D 与k 无关。 ⇒ ||x (k +1) – x *|| ≤ D M ||x (k ) – x *||2 = C ||x (k ) – x *||2 .

只要C δ

||x ||x

(k +1) (k )

-x ||

*

2

*

-x ||

→C ≠0知,Newton 法是局部二阶收敛的。

例3 用Newton 法求非线性方程组

⎧x 1+2x 2-3=0

⎨22

⎩2x 1+x 2-5=0

在点(1,5,1) 附近的根。

⎡x 1+2x 2-3⎤

解:f (x ) =⎢2

2⎥,

2x +x -52⎣1⎦

⎡1

Df (x ) =⎢

⎣4x 1

2⎤⎥ 2x 2⎦

由迭代公式

⎧Df (x (k ) ) ∆x (k ) =-f (x (k ) )

⎨(k +1)

(k ) (k ) =x +∆x ⎩x

(k )

⎧⎡12⎤(k ) ⎡x 1(k ) +2x 2⎤-3

∆x =-⎪⎢(k ) ⎢⎥(k ) ⎥(k ) 2(k ) 2

2x 2⎦2(x ) +(x ) -5⎨⎣4x 112⎣⎦

⎪(k +1) (k ) (k ) x =x +∆x ⎩

从x (0) = (1,5,1) T 出发,计算结果见p345表4.2-3。

注:虽然Newton 法收敛较快,但

(1) 要求x (0)充分靠近x *才能保证其收敛性

(2) 每一次迭代须解方程组Df (x (k ) ) Δx (k ) = – f (x (k ) ) 当Df (x (k ) ) 不可逆时无法继续

3. 改进——Newton 下山法

为改善对初始值的要求,在迭代公式中引入松弛因子ωk : x (k +1) = x (k ) – ωk [Df (x (k ) )]-1f (x (k ) ) 或Df (x (k ) ) Δx (k ) = –ωk f(x (k ) )

其中ωk 的选取满足:||f (x (k +1))||

122, 1

2

,... 进行“试探”,直到(4.2-10)满足,再进行下一次迭代,若选

不到ωk ,则Newton 下山法失败 方法(2) 求m in ||f (x

ω>0

(k )

-ω(Df (x

(k )

)

-1

f (x

(k )

)) ||的最小值点ω

*

令x (k +1) = x (k ) – ω*[Df (x (k ) )]-1f (x (k ) )

这样迫使序列{|| f(x (k ) )||}严格单调下降,从而从某个x (k ) 开始进入x *的附近。

4.3 无约束优化问题的下降迭代法

问题:求函数F(x)的最小值,即确定x * ∈ R n 使 F (x ) =m in n F (x )

x ∈R

*

注:(1) 该问题为最优化理论中无约束化问题 (2) 上述最小值点记为 x =arg m in n F (x )

x ∈R

*

4.3.0 预备知识

(1) 设F(.)具二阶连续偏导数,记

⎡∂F (x ) ⎤⎢∂x ⎥

1

⎢⎥

g (x ) =∇F (x ) = F 的梯度 ⎢⎥

∂F (x ) ⎢⎥⎢∂x n ⎥⎣⎦

g 为多元向量值函数,故有Jacobi 阵:

⎡∂2F ⎢2

∂x 1⎢2⎢∂F

H (x ) =Dg (x ) =⎢∂x ∂x

⎢21⎢ 2⎢∂F ⎢∂x n ∂x 1⎣

∂F ∂x 1∂x 2∂F ∂x 2 2∂F

222

∂x n ∂x 2

2

∂F ⎤

∂x 1∂x n

⎥2

∂F ⎥∂x 2∂x n ⎥

⎥ ⎥2

∂F ⎥

2

∂x n ⎥⎦

称为F 的Hesse 矩阵

(2) 泰勒展开:

F (x ) =F (y ) +[g (y )](x -y ) +

T T

12

(x -y ) H (x )(x -y ) +... 12

T

(x -y ) H (x )(x -y ) +...

T

=F (y ) +[∇F (y )](x -y ) +d dt

n

(3) F (x +tp ) =

i =1

∂F (x +tp )

∂x i

T

p i =[∇F (x +tp )]p

T

(4) 设F (x ) =

12

x Ax +b x +c ——二次函数,其中A 正定,b 为向量

T

则∇F (x ) = Ax + b 其中∇(

12

x Ax ) =Ax , ∇(b x ) =b

*

T

T

(5) 下降迭代法——求x =arg m in F (x )

x ∈R

n

目标:构造使F(x)逐步严格下降(递减)的迭代序列: F (x (k +1))

想法:设已有点x (k ) ,若从x (k ) 出发沿任何方向移动F(x)都不再严格减少,则x (k ) 为局部最小值点。若至少有一个方向,使F(x)严格减少,则从中任选一方向pk ,并在此方向上移动一步:

x (k +1) = x (k ) + t k p k (4.3-1) 其中t k > 0(称为步长因子)使

F (x (k +1)) = F (x (k ) + t k p k )

若此方法产生的序列{x (k ) }收敛于x *,则此方法有效,否则无效。 方法:不同规则对应不同的方法。

注:(1) 下降方向p k 的选取: 由泰勒展式知,当t 充分小时

F (x (k ) + tp k ) = F (x (k ) ) + t [∇F (x (k ) )]T p k +o(t ) = F (x (k ) ) + t g k T p k +o(t ) 其中o(t ) 为t 的高阶无穷小,g k = ∇F (x (k ) )

由(4.3-2)知,应有g k T p k

例如取p k = – g k (F(x)沿负梯度方向下降最快)称为最速下降 (2) 步长因子的选取:

t k 可沿射线x = x (k ) + tp k (t > 0) 进行一维搜索来确定

例如,取 t k = argminF(x (k ) + tp k ) (4.3-4) 称为最佳步长因子 实际计算不易求得,通常求不精确最佳步长因子 例如,使用“成功-失败”试探法

先取定一步长因子λ,若F(x (k ) + λp k )

4.3.1 最速下降法

1. 迭代公式

取p k = – g k ( = ∇F (x (k ) )) 即为最速下降法,其迭代公式(以选最佳步长因子为例)

(k )

⎧-tg k ) ⎪t k =arg min F (x

t >0 k = 0,1,2,... (4.3-5) ⎨(k +1) (k )

⎪x =x -t k g k ⎩

例1 设F (x ) =

12

x Ax +b x +c (4.3-6)

T T

——二次函数,其中A 正定,则

t k =

g k g k g k Ag

T

k T

——可以求出最佳步长因子t k

事实上:因为g (x ) = ∇F (x ) = Ax + b 所以g k = Ax (k ) + b

⇒ g k +1 = Ax (k +1) + b = A (x (k ) – t k g k ) + b = Ax (k ) + b – t k Ag k =g k – t k Ag k 另一方面: t k =arg m in F (x

t >0

(k )

-tg k )

所以而

d dt

d dt

F (x

(k )

-t k g k ) =0

T

F (x -tg ) =-[∇F (x -tg )]g

所以 – [∇F (x (k ) – t k g k )]T g k = – [∇F (x (k +1))]T g k = – g k +1T g k = 0 (4.3-7) 从而0 = [g k – t k Ag k ]T g k = g k T g k – t k g k T Ag k ⇒ t k =

g k g k g k Ag

T

k T

(4.3-8)

所以二次函数(4.3-6)最速下降法的迭代公式为

x

(k +1)

=x

(k )

-

g k g k g k Ag k

T

T

g k k = 0,1,2,... (4.3-9)

2. 算法流程图

求F(x)的最小值

注:因为最优因子t k 满足:g k +1T g k = 0 (4.3-7)

所以方向p k +1与p k 总是互相垂直的,称为锯齿状下降(图4.3-1)此方向在接近极小值点时收敛速度变慢。

例1 用最速下降法求解极值问题m in F (x 1, x 2) ,其中F (x 1,x 2) = 2x 12 + 2x 1x 2 + 5x 22,

x 1, x 2

取x (0) = [1,-1]T 出发。

解:F(x)是二次函数,且g (x ) =∇F (x ) =⎢⎥, A =⎢

⎣2⎣2x 1+10x 2⎦见p350

⎡4x 1+2x 2⎤

⎡4

2⎤⎥ 10⎦

4.3.2 变尺度法

1. 思想

为了改善收敛速度,考虑在x*处的泰勒展开:

F (x ) ≈F (x ) +[g (x )](x -x ) +

*

*

T

*

12

(x -x ) H (x )(x -x )

*T **

因为g (x *) = 0 所以 F (x ) ≈F (x ) +

*

12

(x -x ) H (x )(x -x )

12

x Ax ) =Ax >

T

*T **

⇒ ∇F (x ) = g (x ) ≈ H(x *)(x – x *)

设H 正定(从而可逆),设H(x *)(x – x *) = g (x )

⇒ x * = x – [H(x *)]-1g (x ) = x – Bg (x ) (4.3-10)

上式表明:用B = [H(x *)]-1作用于– g (x ) ,将使最速下降方向– g (x ) 变为直指x * 启示:用–Bg (x ) 作搜索方向。

2. 迭代公式

为了保证–Bg (x ) 是下降方向,由(4.3-3)知,只须g (x ) T (–Bg (x )) 0。 所以当B 正定时(g (x ) T Bg (x ) > 0),必有–Bg (x ) 为下降方向,从而迭代公式为 x (k +1) = x (k ) – t k B k g k k = 0,1,2,... (4.3-11) 其中t k 为步长因子,可通过一维搜索来确定

注:(1) 当 B k = I 时,(4.3-11)即为最速下降法的迭代公式 (2) 当B k = [H(x (k ) )]-1时,迭代公式为

x (k +1) = x (k ) – t k [H(x (k ) )] -1g k k = 0,1,2,... (4.3-12) = x (k ) – t k [Dg (x (k ) )] -1g k (Dg (x (k ) ) 为g 的Jacobi 矩阵) 即为Newdon 下山法

(3) 由于F(x)的Hesse 矩阵H(x ) = Dg (x ) 之逆可能在某些点不存在,即使存在,计算量也很大,所以考虑从[H(x (k ) )] -1的近似方阵出发,每次迭代进行修正(下述方法)。

3. DFP方法

考虑对B k = [H(x (k ) )] -1附加条件 (1) B k 应正定

(2) 从B k 到B k +1应简单:B k +1= B k + ΔB k

(3) B k 满足拟Newdon 条件:B k +1y k = s k ,其中y k = g k +1 – g k ,s k = x (k +1) – x (k ) 从而(ΔB k ) yk = s k –B k y k ,

设ΔB k = s k v k T –B k y k w k T ,(v k ,w k 待定) 解之得∆B k =

s k s k

T

T

s k y k

-

B k y k y k B k y k B k y k

T

T

(4.3-20)

(4.3-20)称为DFP 方法 注:(1) 通常取B 0 = I

(2) DFP方法很有效,但由于舍入误差的影响,可能破坏B k 的正定性,使计算失效。可采用重置措施:即当函数值不下降时取B k = I ,继续迭代,并且当迭代n + 1次后,令x(0) = x(n+1),B n = I ,重新迭代

例2 用DFP 方法求解min F (x 1,x 2) :F (x 1, x 2) =

⎛-2⎫= 4⎪⎪, ⎝⎭

⎛3

F (x 1, x 2) =(x 1, x 2) 2

1 - ⎝2

⎛3x 1-x 2-2⎫

⎪, ⎪

⎝x 2-x 1⎭

32

x 1+

2

12

x 2-x 1x 2-2x 1

2

-

取x

(0)

1⎫⎪x 1⎫2⎪-(2, 0) ⎛ x ⎪⎪ 1⎪

⎝2⎭⎪

2⎭

-1⎫⎪ ⎪1⎭

解:g (x ) =∇F (x ) =

⎛3

H (x ) = -1

4. BFGS方法

B k +1=B k +

1s k y k

T

[(1+

y k B k y k s k y k

T

T

) s k s k

T

-B k y k s k

T

-s k y k B k ] (4.3-21)

T


相关内容

  • 3.0微分中值定理
  • 2013/9/23 本章学习要求: 第三章 微分中值定理与导数的应用 费马定理  熟悉罗尔中值定理.拉格朗日中值定理.柯西中值定理和泰 微分中值定理 勒中值定理,并能较好运用上述定理解决有关问题(函数方 程求解.不等式的证明等).  掌握罗必塔法则并能熟练运用它计算有关的不定式极限. 熟练掌握 ...

  • 广义Chebyshev滤波器传输零点的确定
  • 第2期2008年2月 ACTA眦CrRONICASINICA 电 子学报 Vd.36 No.2 Feb.2008 广义Chebyshev滤波器传输零点的确定 涂治红,褚庆昕 (华南理工大学电子与信息学院,广东广州510641) 摘要: 传输零点的确定是交叉耦合滤波器综合的最基本要素.本文利用广义Ch ...

  • matlab求解非线性方程组及极值
  • matlab求解非线性方程组及极值 默认分类 2010-05-18 15:46:13 阅读1012 评论2 字号:大中小 订阅 一.概述: 求函数零点和极值点: Matlab中三种表示函数的方法: 1. 定义一个m函数文件, 2.使用函数句柄; 3.定义inline函数, 其中第一个要掌握简单函数编 ...

  • 学生微积分运算命令与例题
  • 求极限运算 命令形式1:Limit(f) 功能:计算lim f (x ) , 其中f 是符号函数. x →0 命令形式2: Limit(f,x,a) 功能:计算lim f (x ),其中f 是符号函数. x →a 命令形式3: Limit(f,x,inf) 功能:计算lim f (x ),其中f 是 ...

  • FIR滤波器 毕业设计论文 非常标准的格式
  • 摘 要 21世纪是数字化的时代,纵观当代通信的发展趋势,已成为引领通信变革的主潮流.通信是在数字化浪潮的背景下,在计算机技术的应用和信息技术的发展的结果.数字信号滤波器在各种数字信号处理中发挥着重要的作用,数字信号设计一直是数字信号处理领域的重要研究课题.近年来,数字信号技术在我国也得到迅速发展,不 ...

  • 现代设计方法(第二章 优化设计)
  • 1. 直接搜索法.它只利用目标函数值构成的搜索方法,如POWELL ,单纯形法: 2. 梯度法.它需要有目标函数及其导数的解析式. 对于非线性的显函数,且变量数较少或中等的问题,用复合形法或罚函数法(其中尤其是内点罚函数法)的求解效果一般都比较理想,前者求得全域最优解的可能性较大.建议当找不到一个可 ...

  • 粒子群优化算法概述
  • 计算机辅助工艺课程作业 学 生:赵 华 琳 学 号: s308070072 时 间:09年6月 粒子群优化算法概述 0.前 言 优化是科学研究.工程技术和经济管理等领域的重要研究工具.它所研究的问题是讨论在众多的方案中寻找最优方案.例如,工程设计中怎样选择设计参数,使设计方案既满足设计要求又能降低成 ...

  • 自适应柯西变异人工鱼群算法及其应用
  • 27卷 第10期2010年10月 微电子学与计算机 MICROELECTRONICS&COMPUTER Vol.27 No.10October2010 自适应柯西变异人工鱼群算法及其应用 曲良东,何登旭 (广西民族大学数学与计算机科学学院,广西南宁530006) 摘 要:利用鱼群搜到的信息和 ...

  • 原始粒子群算法的基本原理
  • 摘要:随着决策环境的复杂化,群体决策变得越来越重要,在此基础上研究粒子群优化算法,详细介绍其基本原理并进行分析显得十分重要. 关键词:粒子群优化算法 种群大小 最大速度 1.1优化算法的分类 随着现代科学技术的飞速发展,目前解决优化问题的方法主要分为两大类:一是模拟自然进化过程而发展起来的进化算法, ...