加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

常用算法之迭代法

(2006-10-31 13:39:22)
分类: 数学工具

原文见数值分析课

一.不动点迭代法
    将方程y=f(x)=0改写成等价的形式:
           x=ψ(x)  (2.1)
x* 使得f(x*)=0等价于求x* 使得x* =ψ(x*)。称x* 为函数的一个不动点。求f(x)的零点就等价于求ψ(x)不动点,选择一个初始近似值x0 ,将它代入(2.1)右端即可求得:
          x1 = ψ(x0 )
可以如此反复迭代计算
       xk+1 = ψ(xk ) (k=0,1,2...) (2.2)
ψ(x)称为迭代函数。如果对任何x0∈[a,b], 由(2.2)得到的序列{xk}有极限:
        http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_201.gif
则称迭代方程(2.2)收敛,且x*=ψ(x*)ψ(x)的不动点,故称 (2.2)为不动点迭代法。

例3 求方程

    f(x)=x3-x-1=0 (2.3)

x0=1.5附近的根x*


解 设将方程(2.3)改写
成下列形式
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_202.gif
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_203.gif

据此建立迭代公式
       http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_204.gif 


x7 即为所求的根。

但是,迭代法的效果并
不是总能令人满意的。
譬如,设依方程(2.3)的
另一种等价形式

   x=x3 -1
计算结果
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_205.gif
建立迭代公式
       http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_206.gif

迭代初值仍取x0 =1.5 则有x1 =2.375,x2 =12.39继续迭代下去没有必要。

    二. 不动点的存在性与迭代法的收敛性
    首先考察ψ(x)[a,b]上的不动点的存在唯一性。
    定理1 设ψ(x)∈C[a,b]满足以下两个条件:
        1) 对任意x∈[a,b]a≤ψ(x)≤b
        2) 存在正常数L<1,使对任意x,y∈[a,b]都有
             |ψ(x)-ψ(y)|≤L|x-y|      (2.4)
      ψ(x)[a,b]上存在唯一的不动点x*
    证明:先证不动点的存在性。 若ψ(a)=aψ(b)=b,显然ψ(x)[a,b]上存在不动点。因a≤ψ(x)≤b,下设ψ(a)>aψ(b)<b,定义函数 f(x)=ψ(x)-x,显然f(x)∈C[a,b]且满足:
       f(a)=ψ(a)-a>0,f(b)=ψ(b)-b<0
由连续函数性质可知存在x*∈(a,b)使f(x*)=0x* =ψ(x*), x*即为的不动点

再证唯一性。设http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_208.gif ∈[a,b]都是ψ(x)的不动点,则由(2.4)得:

      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_209.gif

引出矛盾,故ψ(x)的不动点只能是唯一的。
ψ(x)的不动点存在唯一的情况下,可得到迭代法(2.2)收敛的一个充分条件。
    定理2 设ψ(x)∈C[a,b],且满足定理1中的两个条件,则对任意x0∈[a,b],由(2.2)得到的迭代序列{xk}收敛到ψ(x)的不动点x* ,并有误差估计:
      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_210.gif
证明:设x∈[a,b]ψ(x)[a,b]上的唯一不动点,由条件1 可知xk∈[a,b],再有(2.4)得

    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_211.gif

0<L<1,故当k→∞时序列{xk}收敛到x*

下面再证估计式(2.5),由(2.4)有
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_212.gif     (2.6)

据此反复递推得
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_213.gif

于是对任意正整数p有
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_214.gif

在上式令p→∞,注意到 http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_215.gif即得式(2.5),证毕.

   局部收敛性与收敛阶

定义1 设ψ(x)有不动点x* ,如果存在x* 的某个邻域R:|x -x* |≤δ对任意x0∈R,迭代(2.2)产生的序列{xk}∈R,且收敛到x*,则称迭代法(2.2)局部收敛.

定理3 设x*ψ(x)的不动点,ψ′(x)x* 的某个邻域连续,且|ψ′(x*)|<1,则迭代法(2.2)局部收敛.

证明: 由连续函数的性质,存在x* 的某个邻域R:|x-x* |≤δ, 使对于任意x∈R成立:
       |ψ′(x )|≤L<1
故对于任意x,y∈R有:
       |ψ(x)-ψ(y)|=|ψ′(ξ)(x-y)|≤L|x-y|
此外,对于任意x∈R,总有ψ(x)∈R成立,这是因为
  http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_216.gif
于是依照定理2可以判定迭代过程xk+1=ψ(x k), 对于任意初值x0 ∈R均收敛。证毕.
下面讨论迭代序列的收敛速度问题。先看例.

例4 用不同方法求方程x2 -3=0的根http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_217.gif

解:这里f(x)=x2 -3=0,可改写为各种不同的等价形式x=ψ(x)

其中不动点http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_217.gif。由此构
造不同的迭代法:
  http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_218.gif

从图中看出迭代发散。
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_219.gif

    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_220.gif
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_221.gif

从图中看出迭代过程在根的两边摆动。
  http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_222.gif
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_223.gif

从图中看出迭代法收敛.
  http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_224.gif
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_225.gif

从图中看出迭代法收敛.
x0=2,对上述4种迭代法,计算三步所得的结果如下表。
                               计算结果
    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_226.gif

注意http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_227.gif= 1.7320508…,从计算结果看到迭代法(1)及(2)均不收敛,且它们均不满足定理3中的局部收敛条件,迭代法(3)和(4)均满足局部收敛条件,且迭代法(4)比(3)收敛快。

因为迭代法(4)中ψ′(x*)=0。为了衡量迭代法(2.2)收敛速度的快慢可给出以下定义。

定义2 设迭代过程xk+1 =ψ(xk)收敛于方程x=ψ(x)的根 x* ,如果迭代误差ek =xk -x*k→∞时成立下列渐进关系式

       http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_228.gif

则称该迭代过程是P阶收敛的。特别P=1时称线性收敛,P=2时称平方收敛,P>1时称超线性收敛。

定理4 对于迭代过程xk+1=ψ(xk),如果ψ(p)(x)在所求根x* 的邻域连续,并且
    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_229.gif

则该迭代过程在点x* 邻近是p阶收敛的。

    四、埃特金加速收敛方法
对于收敛的迭代过程,只要迭代足够多次,就可以使结果达到任意精度,但有时迭代收敛过程收敛缓慢,从而使计算量变的很大,因此迭代过程的加速是个重要课题。

x0是根x*的某个近似值,用迭代公式校正一次得x1=ψ(x0),而由微分中值定理,有
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_230.gif

其中ξ介于x*x0之间

假定ψ′(x)改变不大,近似的取某个近似值L,则有

      x1 -x* ≈L(x0 -x* )。 (2.9)

若将校正值x1=ψ(x0),再校正一次,又得 x2=ψ(x1),由于

      x2-x* ≈ L(x1- x* )

将它与(2.9)式联立,消去未知的L,有
       http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_231.gif

由此推知
       http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_232.gif
在计算了x1x2 之后,可用上式右端作为x*的新近似,记作http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_233.gif,一般情况是由xk计算xk+1 ,xk+2 ,记

    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_234.gif

(2.10)称为埃特金(AitKen)Δ2加速法。

可以证明
      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_235.gif

它表明序列 http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_2351.gif的收敛速度比{xk}的收敛快。

埃特金方法不管原序列{xk}是怎样产生的,对{xk}进行加速计算,

得到序列http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_2351.gif。如果把埃特金加速技巧与不动点迭代结合,则可得到如下的迭代方法:
    http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_236.gif

称为斯蒂芬森(steffensen)迭代法.

它可以这样理解,我们要求x=ψ(x)的根值x* ,令ε(x)=ψ(x)-x,ε(x* )=ψ(x* )-x* =0,已知x*的近似值xkyk , 其误差分别为

      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_237.gif

把误差ε(x)外推到零”,即过(xk ,ε(xk ))(yk ,ε(yk ))两点做线性插值函数,它与x轴交点就是(2.11)中xk+1 , 即方程:

      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_238.gif
的解
      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_239.gif
实际上(2.11)是将不动点迭代法(2.2)计算两步合并成一步得到的,可将他写成另一不动点迭代
      xk+1= ψ(xk) (k=0,1…),        (2.12)
其中
      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_240.gif     (2.13)

对不动点迭代(2.13)有以下局部收敛性定理。

定理5 若x* 为(2.13)定义的迭代函数φ(x)的不动点, 则x*ψ(x)的不动点。反之,若x*ψ(x)的不动点,设ψ″(x)存在,ψ′(x*)≠1,则x*φ(x)的不动点,且斯蒂芬森迭代法(2.11)是2阶收敛的。
例5 用斯蒂芬森迭代法求方程(2.3).

解:例3中已指出下列迭代
     http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_241.gif
是发散的,现用(2.11)计算,

ψ(x)=x3-1
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_242.gif
         计算结果如下表。
         http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_243.gif

计算表明它是收敛的,这说明即使迭代法(2.2)不收敛,用斯蒂芬森迭代法(2.11)仍可能收敛。

例6 求方程3x2-ex =0[3,4]中的解.

解:由方程得 ex=3x2 , 取对数得
        x=ln(3x2)=2lnx+ln3 =ψ(x)
若构造迭代法
       xk+1 = 2lnxk +ln3,

      http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_244.gif

且当x∈[3,4]时,ψ(x)∈[3,4],根据定理2此迭代法是收敛的。若取x0=3.5, 迭代16次得x16=3.73307,六位有效数字。
若用((2.11)进行加速,
计算结果如下:
  http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_245.gif
http://sxyd.sdut.edu.cn/shuzhifenxi/images/pic8.2/8_246.gif

这里计算2步(相当于(2.2)迭代4步)结果与x16相同, 说明用迭代法 (2.11)的收敛速度比迭代法(2.2)快得多。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有