求解多项式方程所有实根的算法及程序实现
垫!!垒坚:i!
Scienceand lnnovetionHerebo
Technology
工程技术
求解多项式方程所有实根的算法及程序实现
贾小涛 倪旭敏
(北京交通大学理学院 北京 100044)
摘要:多呵式方程求根同是在工程实最中有着奉足轻重的地住,牛顿造代法由于其良好的收敛速度而敖广泛应用。文幸介格了根据牛
顿速代法的全局收敛定理,结合函数的一阶导莪.二阶导数信息求得多嘎式方程在耒一区闻内的所有实根,以及每一个实根的重苁。置后利
用c/c++语言实现了算法。例证表明,试方法毙有效的求得多项式方程在耒一蛤定区间内的所有实根及实根重敦。
关键词:多嘎式 牛顿迭代 实根 重敖
4
中图分类号:01 文献标识码:A 文章编号:1674--098X(2010)1l(a)-0107-02
1引言
多项式方程求根是工程实践中经常遇到问题。在工程实践中
有着举足轻重的地位。牛顿法由于其良好的计算速度以及较少的
为了判段子区间内是否有方程一’1)=0的根,需要判断条件1是否
空间需求,在求根问题中得到了广泛应用。但牛顿法具有局部收敛
满足。此时有以下几种情况:
的局限性,也不能求得某区间内的所有实根。本文根据牛顿法的全
·两个子区间均满足条件l(或有一个区间满足条件1),此时
局收敛定理,设计出求解多项式方程所有实根的算法,同时还可以
求得每一个实根的重数。 可利用牛顿迭代求解每个子区间内的根口(毛-Ll,1)记为矸一.
口(毛一1,2,1)记为霹‘1。
2算法理论及思想
定理l(整体收敛定理):设函数f(x)在区间【口,明上存在二阶 气q={砰一,磅‘1)气一。={口,砰~,砰,磅一,b】
然后需要确定初始值,口,b由收敛定理条件i和2可知,有且只
连续导数,且满足条件:
有一个满足条件4,通过条件4,确定初始值。但在程序设计中,需要
(1)/(口)/(6)
(2),。x)在区间【a,b】上不变号。 ·两个子区间均不满足条件1,但厂帕1’(矸)=0,此时砰为
(3)当苫∈(a,b)时,厂’(z)≠o, ∥铲1J=0的二重根,记为口(毛一1,l,2)
(4)对所选初值而∈【口,b】,有f(xo)f。Xo)>o。 气q={砰叫(=钟)j气一-=a,钟,bJ
则由牛顿迭代法产生的序列{t}单调收敛于方程f(x)=0在
·两个子区间均不满足条件1,且,妯“’(钟)≠0,此时
la,bI内唯一的根x’。
根据以上所给出的收敛定理,我们只需要找出满足定理要求 乞一·=a民一,=毛=p,钟,6,
的区间l口,bl以及初值%即可找到区间I口,bl内的唯一的根。 在此步我们暂且假设,每个子区间内各有一个根,即有
对于一个比较大且可能包含方程f(x)=0多个根的区间I口,bI,
如果要找到其所有根,需要把其分解成多个小区间,然后判断这些
(3)对方程∥铲2J=0:根据