牛顿迭代法的一种改进方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第30卷第5期 佛山科学技术学院学报(自然科学版) Vol.30No.5
2012年9月 Jo ur nal of Fo shan University(Natural Science Edition)Sep.2012文章编号:1008-0171(2012)05-0001-03
牛顿迭代法的一种改进方法
陈玉骥
(佛山科学技术学院环建学院,广东佛山528000)
摘要:牛顿迭代法是求解非线性方程的一种常用方法,该法对初值要求较高,只具有局部收敛性。在牛顿迭代法的基础上,通过调整非线性方程对应曲线切线的斜率,从而保证在取任意初值时,迭代均可收敛,有效改善了牛顿迭代法对初值的苛刻要求。
关键词:牛顿迭代法;非线性方程;初值;斜率
中图分类号:O242.23 文献标志码:A
工程上,不少实际问题的数学模型都涉及到非线性方程f(x)=0的求解。由于工程问题对应的方程f(x)=0大多不存在求根公式,因此确定精确解十分困难。故近似解的计算成为人们关心的主要问题。目前,人们已提出了不少求解非线性方程f(x)=0近似解的方法[1-8],其中,牛顿迭代法是最基本的方法之一。由于牛顿迭代法在方程的单根附近具有平方收敛速度,而且还可以求解方程的重根和复根,故该法得到了广泛应用。但牛顿迭代法对初值的要求较苛刻,只有适当选取初值,才能保证其收敛性。
为保证牛顿迭代法局部收敛,必须对f(x)和初值附加如下条件[9]:
(1)f(x)在区间[a,b]上二阶可导;
(2)f(a)f(b)<0;
(3)f′(x)≠0;
(4)f″(x)在区间[a,b]上不变号;
(5)初值x0∈[a,b]应使f″(x0)f(x0)>0。
其中,条件(1)、(2)保证了方程f(x)=0根的存在性;条件(3)表示函数单调变化,则方程的根惟一;条件(4)表示函数f(x)的图形凸凹向不变;条件(5)是对初值的要求。
只要满足以上条件,就可保证牛顿迭代法的收敛性。但当表达式f(x)很复杂时,确定f(x)导数的计算量很大,且求出f″(x)的表达式非常复杂,要满足条件(3)、(4)比较困难。另外,还有不少方程不完全符合上述条件,无法按以上要求确定初值,迭代过程很难确保收敛性。
为了扩大牛顿迭代法的适用性,本文提出一种牛顿迭代法的改进方法,可以有效避免牛顿迭代法对初值选取范围的苛刻要求。其基本思想是,通过不断增加非线性方程对应曲线切线的斜率,达到迭代收敛的目的。所以,笔者将该法称为“改变斜率法”。
1 改变斜率法
在定义域内取任一初值x0∈[a,b],按牛顿迭代法的公式进行计算,得
收稿日期:2012-03-13
基金项目:国家自然科学基金资助项目(50978058);广东省自然科学基金资助项目(S2011010005037)
作者简介:陈玉骥(1962-),男,海南文昌人,佛山科学技术学院教授,博士。
x 1=x 0-f (x 0)
f ′(x 0),(1)
若x 1落在区间[a ,b ]外,可将式(1)中导数增加一倍,然后再重新进行迭代,得
x 1=x 0-f (x 0)
2f ′(x 0)
,
(2)
若还落在区间[a ,b ]外,可将导数再增加一倍,然后再重新计算,直到x 1落在区间[a ,b ]内为止。以下迭代过程与此类似,其迭代格式为
x k +1=x k -f (x k )
2m
f ′(x k )
。
(3)
参数m 的选取原则是使x k +1∈(a ,b )。以上思路的几何意义如图1所示。当曲线y =f (x )在点x k 处的切线(图1中的实线)与坐标轴的交点(该点的横坐标即为x k +1)落在区间[a ,b ]外时,将切线斜率增加
一倍,即使其变陡,成为割线,如图1中的虚线所示。这样,其与坐标轴的交点将落在区间[a ,b ]内,从而保证迭代收敛。若该割线与坐标轴的交点仍然落在区间[a ,b ]外,则使其斜率再增加一倍,直到满足要求为止。
对于图2所示的情形,显然不满足上述牛顿迭代法的局部收敛条件(4)(因为f ″(x )正负交替变号),很难选取能保证收敛的合适初值。但采用本文提出的改变斜率法,取区间[a ,b ]内的任意初值,均可保证
迭代收敛。
图1 改变斜率法的几何意义
图2 异形曲线的迭代
需要指出的是,在迭代过程中,每一步迭代都要检查迭代的根是否落在区间[a ,b ]外,若是,则将斜率增加一倍重新计算即可。
显然,m =0即为常规牛顿迭代法,所以常规牛顿迭代法可视为本文方法的特例。
2 数值算例
例1 试求方程f (x )=5x 3
-x 2
-1=0在区间[0.2,1.5]内的根。
解 因f (0.2)<0,f (1.5)>0,f ′(x )=15x 2-2x >0,f ″(x )=30x -2>0,所以方程肯定有惟一根。取x 0=0.2,f (0.2)f ″(0.2)<0,不符合上述条件(5),则
x 1=x 0-5x 3
0-x 2
0-1
15x 20-2x 0
= 5.2[0.2,1.5]。
可见,用常规牛顿迭代法计算,迭代将会发散。采用本文的改进方法,将斜率增加一倍,重新进行迭
代x 1=x 0-5x 30-x 2
0-1
2(15x 20-2x 0)
=2.7,显然,x 1仍落在区间[0.2,1.5]外,将斜率再增加一倍,再重新进行迭代x 1=x 0-5x 30-x 2
0-1
22(15x 2
0-2x 0)
=1.45,此时,x 1已落在区间[0.2,1.5]内,可以继续迭代,以下计算与常规牛顿迭代法相同,计算过程见表1。由表1可见,方程f (x )=5x 3-x 2
-1=0在区间[0.2,1.5]内的根为
x =0.65964。
表1 方程f (x )=5x 3-x 2-1=0的迭代计算过程
k 1234567x k 1.45000 1.02606 0.78236 0.67965 0.66029 0.65964 0.65964
2佛山科学技术学院学报(自然科学版) 第30卷