试位法的一种改进及其收敛性分析
An Improvement of the Regular Falsi Method and Its Convergence Analysis
DOI: 10.12677/AAM.2019.88167, PDF, HTML, XML, 下载: 1,045  浏览: 5,645 
作者: 于 博, 贾钧清:武汉大学数学与统计学院,湖北 武汉
关键词: 试位法Illinois Method线性解法非线性方程Regular Falsi Method Illinois Method Numerical Solution Nonlinear Equations
摘要: 试位法是用数值方法求单变量非线性方程根的算法,方法简单易行。试位法作为二分法的改进,在大多数情况下优于二分法。本文结合二分法与试位法,给出了试位法的一种改进算法,并对其收敛情况进行了讨论,证明该算法的收敛性,给出了收敛指数的估计。
Abstract: The Regular Falsi method is an algorithm for finding the root of a univariate nonlinear equation by numerical method. The method is simple and easy. The Regular Falsi method is an improvement of the Bisection method and is superior to the Bisection method in most cases. In this paper, an improved algorithm of the test method is given by combining the dichotomy and the test position method. The convergence of the algorithm is proved and the convergence index is estimated.
文章引用:于博, 贾钧清. 试位法的一种改进及其收敛性分析[J]. 应用数学进展, 2019, 8(8): 1432-1438. https://doi.org/10.12677/AAM.2019.88167

1. 引言

通过数学分析的知识我们知道,对于单变量函数,给定一个区间,如果在这个区间上函数连续,且在两端点的值异号,则在这个区间内函数至少有一个零点,即方程 f ( x ) = 0 在这个区间内有实根。

假设函数 f ( x ) 在区间 [ a , b ] 上连续,在 [ a , b ] 内有单根且在端点处的函数值异号,即 f ( a ) f ( b ) < 0

给出如下迭代格式:

c = b f ( b ) ( b a ) f ( b ) f (a)

如果 f ( c ) f ( b ) < 0 ,则:令 a = c b = b ,继续进行上式的迭代过程;如果 f ( c ) f ( b ) > 0 ,则按照如下改进后的迭代格式进行:

c = b f ( b ) ( b a ) f ( b ) γ f (a)

其中参数 γ ( 0 , 1 ] 。改进后的格式被称为Illinois-type算法 [1] 。

2. 对参数的理解

2.1. 二分法

二分法是一种非常简单的数值方法,其基本原理是连续函数的介值定理。同上文假设的条件,计算区间 [ a , b ] 中点处的函数值 f ( a + b 2 ) 。若则重置区间 [ a , b ] [ a , a + b 2 ] (反之取另一半区间 [ a + b 2 , b ] 进行),重复以上操作直至达到精度要求,根据区间套定理知如此构造的迭代序列收敛,且收敛速度与公比为 1 2 的等比数列收敛速度相同 [2] 。

2.2. 试位法

f ( x ) 在闭区间 [ a , b ] 上连续且在端点处异号。以连接 B ( b , f ( b ) ) 的直线段L近似代替函数 f ( x ) 的图像,而以L与x轴的交点坐标c作为 f ( x ) 零点的近似。

根据三角形相似,可以建立求解c的方程:

0 f ( b ) c b = f ( b ) f ( a ) b a

整理后即得:

c = b f ( b ) ( b a ) f ( b ) f (a)

f ( c ) 0 ,则方程的实际根落在 [ a , c ] [ c , b ] 中,选择这个区间重置原区间。重复如上过程直至 | f ( c ) | 前后两次迭代结果的差小于事先设定的误差。

3. 收敛性分析

3.1. 收敛性

f ( x ) C [ a , b ] ,对于迭代产生的序列 [ a n , b n ] ,根据试位法的迭代原则知序列 { a n } 单调不减,序列 { b n } 单调不增,因此收敛,分别设其极限为 d 1 d 2 ,且有 d 1 d 2

1) 假设 d 1 d 2 都不是 f ( x ) 的根。

存在 ε > 0 ,正整数N,当时, | f ( a n ) | ε | f ( b n ) | ε 。由迭代格式知:

c n a n = f ( a n ) ( a n b n ) f ( b n ) f ( a n ) c n b n = f ( b n ) ( a n b n ) f ( b n ) f (an)

| f ( x ) | [ a , b ] 上有界,设为M。则对于任意的正整数n,都成立

| a n + 1 b n + 1 | max ( | c n a n | , | c n b n | ) M | a n b n | M + ε

因此,

| a N + k b N + k | ( M M + ε ) k | a N b N |

从而得到

lim n + a n = lim n + b n = d 1

但是,既然对于任意的n,有 f ( a n ) f ( b n ) < 0 ,这说明 f ( d 1 ) 0 ,即 d 1 d 2 均不是方程 f ( x ) = 0 的根。

2) 假设 d 1 是方程的根, d 2 不是方程的根。

根据上述公式有

| c n a n | | f ( a n ) | | a n b n | | f ( b n ) |

而不等式右端极限存在,为0,所以有

lim n + c n = d 1

同理,如果 d 2 是方程的根, d 1 不是方程的根,有 lim n + c n = d 2

3) 假设 d 1 d 2 都是方程的根。若 d 1 d 2 ,则存在一子列 c i 收敛到 d 1 ,或有另一子列收敛到 d 2 ,即 lim n + c n = d 1

下面我们证明,除非 a 0 或者 b 0 f ( x ) 的根,或者对于某些n, c n f ( x ) 的根,就有 d 1 = d 2

假设 d 1 d 2 ,对于任意 δ > 0 ,存在正整数N,当 n N 时有:

d 1 a n < δ

显然有,对于任意正整数n, c n < d 1 c n > d 2 。若对某些n成立 c n < d 1 ,则:

f ( b n ) a n b n f ( a n ) f ( b n ) f ( a n ) < d 1

f ( b n ) b n d 1 d 1 a n 。不妨设 f ( a n ) < 0 f ( b n ) > 0 。为了序列 { b n } 收敛到 d 2 ( b n > d 2 ),必须有对于比n大的m,满足 c m > d 2 ,这表明:

同理,对于大于n的p,有

[ f ( a p ) ] d 2 a m b m d 2 f ( b m ) ( d 2 d 1 δ ) 2 [ f ( a n ) ]

如此进行下去,则对于任给的 F > 0 ,对于 | f ( x ) | > F ,x趋近于 d 2 。既然 d 1 不是 f ( x ) 的根,则 lim n + f ( a n ) = 0 ,即

综上所述,迭代格式收敛。

3.2. 收敛速度

由上一部分证明知序列 { c n } 收敛。对于充分光滑的函数 f ( x ) ,能求得序列 { c n } 收敛速度的下界 [2] 。设 f ( x ) 连续二次可微,且在内有 | f ( x ) | 不恒等于0;设 x * f ( x ) 的零点。根据试位法的迭代格式

c n + 1 x * = ( b n x * ) f ( a n ) f ( b n ) ( a n x * ) f ( a n ) f (bn)

因为

d d x [ f ( x ) x x * ] = f ( x ) ( x x * f ( x ) ) ( x x * ) 2

根据Cauchy中值定理,存在 ξ [ a n , b n ] 使得

c n + 1 x * ( b n + 1 x * ) ( a n + 1 x * ) = f ( ξ ) ( ξ x * ) f ( ξ ) f ( ξ ) ( x x * ) 2

根据Taylor公式,有

0 = f ( x * ) = f ( ξ ) + f ( ξ ) ( x * ξ ) + f ( θ ) ( x * ξ ) 2

其中 θ 介于 ξ x * 之间。结合前一个式子,则有

c n + 1 x * = f ( θ ) 2 f ( ξ ) ( b n x * ) ( a n x * )

ε n = c n x * η n = b n x * η n = a n x * ,则上式可写为

ε n + 1 = f ( θ ) 2 f ( ξ ) η n η n

根据可微性的假设,存在正数m,M,使得对任意 x [ a , b ] ,有 | f ( x ) | m | f ( x ) | M ,则

| ε n + 1 | M 2 m | η n | | η n |

K = M 2 m 乘不等式的两边,有

K | ε n + 1 | K 2 | η n | | η n |

它等价于不等式 d n + 1 d i d j ,其中 d l = K | ε l | (注:这里将 η 也用 ε 表示)。设初始逼近 a 0 满足

d = max { d 0 , d 0 } 1

则迭代到第k步时, d k + 1 d k + 1 ,这说明试位法是线性收敛的 [3] 。当时,试位法收敛速度快于二分法。

4. Illinois算法

4.1. 收敛性

Illinois算法很好地避免了不动点的出现,近似根从两端收敛到精确根,即迭代生成的新区间的长度

。基于这一条件,根据区间套定理以及一致连续定理,我们给出一下证明。

因为函数 f ( x ) [ a , b ] 上连续,则 f ( x ) [ a , b ] 上一致连续,即: ε > 0 δ > 0 ,只要 | x 1 x 2 | < δ ,就有 | f ( x 1 ) f ( x 2 ) | < ε 。则 ε > 0 δ > 0 ,当 | b n a n | < δ ,就有 | f ( b n ) f ( a n ) | < ε

对于上述 δ N ,当 n > N 时,

| b n a n | = | b n x * | + | x * a n | < δ

| f ( b n ) f ( a n ) | < ε ,即

| f ( b n ) 0 | + | 0 f ( a n ) | < ε

因为 n x * [ a n , b n ] ,又因为 lim n + | b n a n | = 0 ,根据区间套定理

lim n + b n = x * = lim n + a n

lim n + f ( b n ) = f ( x * ) = lim n + f (an)

又因为 a n c n b n ,所以

lim n + c n = x *

lim n + f ( c n ) = f ( x * ) = 0

即迭代序列收敛到方程的根。

4.2. 收敛速度

仍采用上文记号 ε i ,令

β = C 2 C 1

L = β 2 C 3 C 1

由上一小节证明,

ε i + 1 L ε i ε i 1

Illinois算法一次迭代包括先进行一次试位法,在进行两次修正 [4] ,则

ε i + 3 L 2 ( ε i ) 3

得到Illinois算法的收敛指数 [5] 为 3 1 3 。即经过一次Illinois后,误差缩小为上一次的 3 1 3 次方。

5. 函数实例

5.1. 不动点的情况

先来看一个出现不动点的情况: f ( x ) = x 3 + x 2 10 ,初始区间为 [ 1 , 2 ]

在使用试位法求根时,出现了不动点 x = 2 的情况,迭代序列从左端点收敛到 x * = 1.3652300 ;而Illinois算法从第4次迭代开始不动点消失,迭代序列从两端收 x * ,收敛速度快于试位法;另外,当迭代相同次数时(10次),后者精度高于前者。

5.2. 算例对比测试

选取了两个比较有代表性的算例进行了测试,将精度设定为10−15,计算结果如表1 (I代表Illinois算法,F代表试位法)。

Table 1. Comparison of examples between regular falsi method and illinois method

表1. 试位法与Illinois算法的算例对比

6. 总结

当函数接近线性时(图像上来看越接近直线),该算法的效果明显。大多数情况下,试位法的效果会明

显优于二分法。但是,如果区间 [ a , b ] 的长度比较大,曲线 f ( x ) [ a , b ] 内某一点附近一阶导数值突然急

剧增长,在这种情况下,试位法出现了一个端点总是不动的情形,因此近似根只从一端收敛到精确根,这样它减慢了收敛速度,效果反而不如二分法。尤其当初始区间很大或函数在区间内偏离线性近似很远时收敛更慢。为了消除这种情况下的负面影响,可以对试位法做相应改进,在改进的试位法中,如果一个端点重复两次或更多次作为新的含根区间的端点(称为不动点),则我们将这个点的函数值乘一个因子,使得线性插值的根更接近于精确根。这种改进真正体现了“试位”的思想。

参考文献

[1] Dowell, M. and Jarratt, P. (1971) A Modified Regular Falsi Method for Computing the Root of an Equation. BIT Nu-merical Mathematics, 11, 168-174.
https://doi.org/10.1007/BF01934364
[2] Anderson, N. and Björck, Å. (1973) A New High Order Method of Regula Falsi Type for Computing a Root of an Equation. BIT Numerical Mathematics, 13, 253-264.
https://doi.org/10.1007/BF01951936
[3] Young, D. and Gregory, R. (1972) A Survey of Numerical Mathmatics. Addison-Wesley, Reading.
[4] Ford, J. (1995) Improved Algorithms of Illinois-Type for the Numerical Solution of Nonlinear Equations. ACM Transactions on Mathematical Software, 30, 64-85.
[5] Szidarovszky, F. and Yakowitz, S. (1980) Principles and Procedures of Numerical Analysis, American Scientist. Plenum Press, New York.