非线性方程求根的数值算法分析非线性方程求根的数值算法分析摘要众所周知,代数方程求根问题是一个古老的数学问题。早在16世纪就找到了三次、四次方程的求根公式。但直到19世纪才证明了5n次的一般代数方程是不能用代数公式求解的,或者求解非常复杂。因此需要研究用数值方法求得满足一定精度的代数方程的近似解。在工程和科学技术中许多问题常归结为求解非线性方程的问题。正因为非线性方程求根问题是如此重要的基础,因此它的求根问题很早就引起了人们的兴趣,并得到了许多成熟的求解方法。本课题主要介绍非线性方程的数值解法是直接从方程出发,逐步缩小根的存在区间,或逐步将根的近似值精确化,直到满足问题对精度的要求,主要的方法有逐步搜索法、二分法,迭代法,并写出这几种非线性方程的数值解法的算法步骤和例题,最后通过一个实际问题建立数学模型,用三种方法进行计算,得出结果并进行比较。关键词:非线性方程;寻根搜索法;二分法;迭代法;近似解非线性方程求根的数值算法分析THEANALYSISABOUTNUMERICALFORSOLVINGNONLINEAREQUATIONABSTRACTAsweallknow,itisanancientproblemaboutfindingrootsofalgebraicequations.Asearlyas16thcentury,peoplehavefoundextractrootsformulasofcubicequationandquarticequation.Butitwasnotuntilthe19thcenturygeneralalgebraicequationisprovedthattimecannotusealgebraicformula,orsolvingverycomplex.Thereforeneedtobestudiedusingnumericalmethodstoobtainapproximatesolutionstomeetcertainprecisionalgebraicequations.Therearemanyproblemsinengineeringandscienceandtechnologyoftenattributedtotheproblemofsolvingnonlinearequations.Becauserootsofnon-linearequationsonthebasisoftheproblemissoimportant,soit'stherootproblemhavelongattractedtheinterestofthepeople,andgotmanymaturesolu-tion.Thistopicmainlyintroducesthenumericalsolutionofnonlinearequationthati-sdirectlyfromtheequation,graduallyreducetheexistenceofrootrange,orro-otofapproximationwillbeaccurate,untilmeettherequirementsoftheproble-mofaccuracy.Therearethreemethods,themethodofstepsearching,dichoto-myieandthemethodofiterative,andthenIwillwritethisseveralalgorithmstepsandexamplesofnumericalmethodsforsolutionofnonlinearequation,fi-nally,Iwillestablishapracticalproblem,andusethreeproblemstosolvetheproblem,atlast,Iwillmakeacomparisonofthesethreekindsofmethod.Keywords:Nonlinearequations;Rootssearchmethod;Dichotomy;Iterationmethod;Theapproximatesolutions非线性方程求根的数值算法分析目录1问题背景介绍.................................................12问题的分析...................................................12.1数值算法理论分析.......................................22.1.1逐步搜索法........................................22.1.2二分法............................................32.1.3迭代法...........................................43实际问题的提出及建模.........................................83.1实际问题的提出..........................................83.2建立模型...............................................84模型求解.....................................................94.1逐步搜索法求解..........................................94.2二分法求解.............................................104.3迭代法求解.............................................105求解结果分析比较............................................105.1模型结果...............................................105.2模型结果分析...........................................116课程设计的总结与体会.........................................12参考文献...................................................13附录........................................................14非线性方程求根的数值算法分析第1页共16页1问题背景介绍我们都会解一元一次方程,对于二次方程20axbxc,我们可以用熟悉的求根公式21,2142xbbaca,而对于三次以上方程就不会解了。事实上,三次和四次方程的求根公式很复杂,五次以上代数方程一般无求根公式,至于一般的超越方程,更没有求根公式。因此,为求解一个非线性方程,我们必须依靠某种数值方法来求其近似解。2问题的分析对于一个非线性方程,在求其根时,必须考虑两个问题(1)方程是否有根;(2)方程的根的个数,首先我们需要知道非线性方程根的定义:设有一个非线性方程0fx,其中()fx为实变量x的非线性函数。(1)如果有*x使(*)0fx,则称*x为方程的根,或为fx的零点。(2)当fx为多项式,即110(),0nnnnnfxaxaxaxaa则称()0fx为n次代数方程。当()fx包含指数函数或者三角函数等特殊函数时,则称()0fx为特殊方程。非线性方程求根的数值算法分析第2页共16页根的重数的定义(3)如果()(*)()mfxxxgx,其中(*)0gx。m为正整数,则称*x为()0fx的m重根。当1m时,称*x为()0fx的单根。其次,根的存在由于零点定理密不可分,零点定理的意义:设()fx在,ab连续,且()()0fafb,则存在,xab,使得()0fx,即fx在(,)ab内存在零点。2.1数值算法理论分析2.1.1逐步搜索法对于方程0fx,,xab,为简明起见,设0fa,()0fb,从区间左端点0xa出发按某个预定步长h(如取bahN,N为正整数),一段一段地向右跨,每跨一步进行一次根的搜索。即检查节点kxakh上的函数值kfx的符号,若0kfx,则kx即为方程解;若0kfx,则方程根在区间1[,]kkxx中,其宽度为h。例考察方程310fxxx的根。解注意到010,250ff则fx在0,2内至少有一个根,设从0x出发,以0.5h为步长向右进行根的搜索。列表记录各节点函数值的符号,如表4.2.1所示。可见方程在1.0,1.5内必有一根。表2.1fx的符号x00.51.01.5()fx的符号---+易见,此方法应用关键在步长h的选择上。很明显,只要步长h取得足够小,利用此法就可以得到任意精度的根,但h缩小,搜索步数增多,从而使计算量增大,用此方法对高精度要求不简便。非线性方程求根的数值算法分析第3页共16页2.1.2二分法对非线性方程:0fx(2.1)其中fx在,ab上连续且设0fafb,不妨设fx在,ab内仅有一个零点。求方程的实根*x的二分法的过程,就是将,ab逐步分半,检查函数值符号的变化,以便确定包含根的充分小区间。二分法的步骤如下:记1aa,1bb第1步:分半计算1k,即将11[a,b]分半。计算中点1112abx及1fx。若11()()0fafx,则根必在11[,]ax内,否则必在11[,]xb内(若1()0fx,则1*xx),于是得到长度一半的区间22[,]ab含根,即22()()0fafb,且22111()2baba。第2步:...第k步:(分半计算)重复上述过程。设已完成第1步第1k步,分半计算得到含根区间1122[,][,][,]kkababab,且满足()()0kkfafb,即*[,]kkxab,11()2kkkbaba,则第k步的分半计算:2kkkabx,且有:1*22kkkkbaxxba(2.2)确定新的含根区间11[,]kkab,即如果()()0kkfafx,则根必在[,]kkax内,否则必在11[,]kkab内,且有:111()2kkkbaba。总之,由上述二分法得到序列kx,由(2.2)有:lim*kkxx。非线性方程求根的数值算法分析第4页共16页可用二分法求方程()0fx的实根*x的近似值到任意指定的精度,这是因为:设0为给定精度要求,则由*2kkbaxx,可得分半计算次数k应满足:lnlnln2bak(2.3)二分法的优点是方法简单,且只要求()fx连续即可。可用二分法求出()0fx在,ab内的全部实根,但二分法不能求复根及偶数重根,且收敛较慢,函数值计算次数较多。例用二分法求6()1fxxx在12,内一个实根,且要求精确到小数点后第三位。(即31*102kxx)解由30.510代入式(2.3),其中1,2)ab(,可确定所需分半次数为11k,计算结果部分如表2.2所示(显然(1)10,(2)0ff)。表2.2部分计算结果kkakbkx()kfx81.1328131.1406251.1367190.02061991.1328131.1367191.1347660.4268415101.1328131.1347661.13378900959799.0111.1337891.134766