黄丝引,曾 光,张思平,余笑宇,雷 莉
(东华理工大学理学院,330013,南昌)
在工程与科学计算中会遇到大量的求解非线性方程的问题,对于一般的代数方程,当它的次数超过4次时无法用公式直接表示方程的根;对于更复杂的超越方程,解析法求方程的根有不少困难;因此研究数值方法计算非线性方程的根就显得尤为重要。迭代法是数值求解非线性方程根的重要方法,但是使用迭代法的困难在于计算量难以估计,有时迭代过程收敛,但收敛速度缓慢,此时迭代格式因为计算量变得很大而失去实用价值。与简单迭代法相比,Newton迭代法的收敛速度更快,它具有局部平方收敛的性质。因此得到了学者们的重视和广泛应用。
一直以来有很多学者提出了各种关于 Newton 迭代法的改进。A Y Özban[1]基于算术平均牛顿法,用调和平均数代替算术平均数而得到调和平均牛顿法,该方法的收敛阶为三阶;范倩楠和王晓峰[2]通过改造史蒂芬森迭代法,构造了一种新的具有最优阶的无导数两步迭代法,得到收敛阶为四阶的无需计算导数的迭代法;黄芳芳[3]等在经典牛顿迭代法和弦截法的基础上,构造了3种新的迭代法,这3种迭代法在一定程度上加快了收敛速度;张辉[4]等根据四点 Newton-Cotes求积公式提出了一种六阶的牛顿迭代法;吴江[5]在算术平均牛顿法的基础上提出了一种六阶收敛的迭代格式;王尧和陈豫眉[6]在Ostrowski[7]四阶收敛和Grau[8]的六阶收敛以及三步迭代法的基础上,构造了一种新的求解非线性方程单根的三步六阶迭代法;薛霜[9]在2013年基于2种三阶牛顿变形方法的基础上,通过线性插值和待定系数法得到了2种新的牛顿变形法,并且理论证明了这2种方法的收敛阶都能达到五阶。
本文以Newton迭代法为基础,结合两步迭代格式,通过组合迭代,构造收敛阶更高的迭代法,以进一步提高迭代法的计算效率。文章安排如下:第1节介绍迭代格式的具体形式;第2节给出收敛性的证明;第3节利用数值实验进一步验证理论方法的有效性。
定义1[10]: 设迭代序列xk收敛于点x*,所以误差为ek=xk-x*,若存在实数p≥1和非零常数C使得
此时,迭代序列xk的收敛阶是p,C为渐进误差系数。显然,收敛阶p越大收敛速度越快,当p=1时,迭代法称为线性收敛;当p>1时,迭代法称为超线性收敛;当p=2时,迭代法称为平方收敛。
定义2[11]:设迭代序列xk是p阶收敛于点x*,每次迭代中所需计算的函数值的次数为k次,则称EI为迭代序列中的效率指数,计算公式为
定义3[12]:设定义在开区间D⊂R→R上的函数f(x)足够光滑,a为方程f(x)=0的一个根,若满足
其中c是非零正常数,则称上式为误差方程。
Newton迭代法是求解非线性方程的重要方法之一,其迭代格式为
(1)
王小瑞[13]等人提出一种收敛阶为四阶的两步迭代,迭代格式为
(2)
为了提高迭代格式的收敛速度,同时又尽量减少迭代格式中对于函数值和导数值的求解,本文基于迭代格式(2)提出新的三步迭代格式,其构造过程如下:
首先,式(2)中的第一式保持不变
(3)
再用zk替代式(2)的第2式中的xk+1,即得到与xk,yk有关的zk
(4)
最后,添加一步牛顿迭代即得到新的三步六阶迭代格式
(5)
下面利用(xk,f′(xk)),(yk,f′(yk))对(f′(zk))进行插值估计
(6)
由上式可知
(7)
将式(5)中间的式子代入式(7)中,化简得
(8)
将式(5)的第1式代入式(8)中,化简得
(9)
将式(9)代入式(5)的第3式中,化简得
(10)
于是得到新的迭代格式为:
(11)
定理1:设方程f(x)=0 的一个单根为a,函数f(x)在包含a的一个开区间I中充分光滑,当x0充分靠近a时,则由式(11)所定义的迭代法在开区间I中以六阶收敛速度收敛于a,且其误差方程为
证明:f(xk)在a处使用泰勒公式展开
(12)
(13)
由式(12)和式(13)得到
(14)
所以
(15)
利用式(15),将f′(yk)在a处使用泰勒公式展开
(16)
由式(13)和式(16)得到
(17)
(18)
(19)
利用式(19),将f(zk)和f′(zk)用泰勒公式在a处展开
f(zk)=f′(a)[(zk-a)+c2(zk-a)2+o(zk-a)3]
(20)
故
(21)
故本文迭代格式的误差估计为
(22)
将式(18)代入式(22)中,得到
(23)
为了验证本文的迭代格式的有效性,将其应用于求解以下4个测试函数的零点,并将本文新的迭代格式(简称H6方法)与牛顿迭代法(简称NM方法)进行比较。文中的数值实验在 MATLAB R2017b中进行,digits = 1 024, 测试函数为:
测试函数的零点(此处仅考虑一个零点)分别为:
α1=1.365 230 013 414 10;
α2=0.739 085 133 215 16;
α3=0.567 143 290 409 78;
α4=2.174 952 447 083 43。
数值实验测试结果如下表所示,其中表1至表4分别是函数f1(x)至f4(x)用牛顿迭代法和本文的三步六阶迭代法求解的数值实验,x0表示迭代初值,k表示迭代步数,|xk-xk-1|表示误差,迭代终止的条件是|xk-xk-1|<10-14。
表1 NM方法与H6方法数值求解f1(x)的结果对比
表2 NM方法与H6方法数值求解f2(x)的结果对比
表3 NM方法与H6方法数值求解f3(x)的结果对比
表4 NM方法与H6方法数值求解f4(x)的结果对比
在表1中,在取3个不同的初始值时,H6迭代法均快于经典的牛顿迭代法,特别的,当初始值分别取-0.5、-0.3时,经典牛顿迭代法的迭代步数分别是132步、54步。本文H6方法的迭代步数分别是是58步、13步,H6方法大大提高了迭代速度;从表2可以看出,当取不同的迭代初始值时,相对于经典牛顿迭代法,H6方法都不同程度地减少了迭代的次数;对于函数f3(x)=xex-1, 迭代初值取-0.1和-0.2时,迭代法H6明显优于牛顿迭代法。同时,通过数值实验表明,迭代法的收敛速度与选取的初始值有关,不同的初始值在用相同迭代法计算时,其迭代步数也不相同;一般初始值越接近零点,迭代步数越少;但是在初始值相同的情况下,H6方法始终快于牛顿迭代法。