您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第4章非线性方程求根的迭代法.
第4章非线性方程求根的迭代法本章重点介绍求解非线性方程的几种常见和有效的数值方法.无论在理论上,还是在实际应用中,这些数值解法都是对经典的解析方法的突破性开拓和补充,许多问题的求解,在解析方法无能为力时,数值方法则可以借助于计算机出色完成.0)(xff(x)=0某个区间上可能有奇数重根或者有偶数重根,都可以转换为讨论单根的情形(具体数学细节不多加解释)。所以此节我们考察单根情形。4.1二分法求非线性方程0)(xf确定方程的有根区间计算根的近似值的根的方法分为两步:首先确定有限区间:依据零点定理。设,且,则方程在区间上至少有一个根。如果在上恒正或恒负,则此根唯一。],[)(baCxf0)()(bfaf0)(xf),(ba)('xf),(ba等步长扫描法求有根区间用计算机求有根区间:等步长扫描法。设h0是给定的步长,取,若则扫描成功;否则令,继续上述方法,直到成功。如果则扫描失败。再将h缩小,继续以上步骤。haxax10,0)()(10xfxfhxxxx0110,bx1等步长扫描算法(了解)算法:(求方程的有根区间)(1)输入;(2);(3),若输出失败信息,停机。(4)若。输出,已算出方程的一个根,停机。0)(xfhba,,)(0aff)(,1xffhaxbx01fx等步长扫描算法(5)若。输出为有根区间,停机(6),转3)注:如果对足够小的步长h扫描失败。说明:在内无根在内有偶重根010ff],[,,xaxaxa],[ba],[baQustion:有没有更直观的方法呢?二分法用二分法(将区间对平分)求解。令若,则为有根区间,否则为有根区间记新的有根区间为,则且)(,,1121111bacbbaa0)()(11cfaf],[11ca],[11bc],[22ba],[],[2211baba)(112122abab二分法对重复上述做法得且],[22ba......],[......],[],[2211nnbababa)(211ababnnn二分法设所求的根为,则即取为的近似解x......2,1],[nbaxnn......2,1nbxann0)(21lim)(lim1nababnnnnxbannnnlimlim)(21nnnbacxx二分法特点:(1)条件简单,只需要满足连续性即可。(2)收敛速度慢,精度要求比较高时,时间花费比较大。例题例1设方程]2,1[],[,1)(3baxxxf4.2基本迭代法迭代法及收敛性对于有时可以写成形式如:0)(xf)(xx3331101xxxxxxxxxxcos0cos迭代法及收敛性考察方程。不能直接求出它的根,但如果给出根的某个猜测值,代入中的右端得到,再以为一个猜测值,代入的右端得反复迭代得)(xx0x)(xx)(01xx1x)(xx)(12xx,......1,0)(k1kkxx迭代法及收敛性若收敛,即则得是的一个根}{kxxxkklimx)(xx)()lim()(limlim1nxxxxxnnnnn基本迭代法上述方法称为基本迭代法将变为另一种等价形式。选取的某一近似值,则按递推关系产生的迭代序列。这种方法算为简单迭代法。0)(xf)(xxx],[0bax,......1,0)(k1kkxx}{kx若收敛,即称迭代法收敛,否则称迭代法发散}{kxxxkklim迭代法的几何意义交点的横坐标*x)()(xyxyxxy=x2x0x1x例题例试用迭代法求方程在区间(1,2)内的实根。解:由建立迭代关系k=10,1,2,3…….计算结果如下:31xx01)(3xxxf311kkxx例题精确到小数点后五位5102132472.1x例题但如果由建立迭代公式仍取,则有,显然结果越来越大,是发散序列1x3x,...2,1131kxxkk5.10x2.3751x12.392x}{kx下面考虑如下两个问题:什么时候收敛?收敛速度怎么刻画?迭代法的收敛性定理(压缩映像原理)(了解)设迭代函数在闭区间上满足(1)(2)满足Lipschitz条件即有且。)(x],[ba],[)(],[baxbax)(x],[,21baxx)()(2121xxLxx10L压缩映像原理则在上存在唯一解,且对,由产生的序列收敛于。)(xx],[0bax)(k1kxx}.{1kxx],[bax关于压缩映像,教材上有另外一种形式Th4.2.1则基本迭代格式收敛的充要条件是:***/()(){},()xxxxxxxx是的根,U设连续,*10()(kkx基本迭代格式xx的初始值xU)\()1xL例题例证明函数在区间[1,2]上满足迭代收敛条件。证明:31)x(x上严格单调增函数。是区间所以因为],[)(]2,1[0)1(31)x(32'baxxx例题]2,1[1431|)1(31||)(|332'xLxx又23)2(12)1(33,而)。满足条件(,所以即1)(]2,1[)]2(),1([x)。满足条件(所以2)(x满足压缩映像原理。在故]2,1[1)x(3x例题若取迭代函数,不满足压缩映像原理,故不能肯定收敛到方程的根。1)x(3x]2,1[3|3||)(|2'xxx因为,....1,0)(1nxxnn简单迭代收敛情况的几何解释是否取到合适的初值,是否构造合适的迭代格式,对于是否收敛是关键的。对于初值,实际操作时,可以先画出函数图形,然后,观察根大概在什么地方。对于迭代格式,可以对求导,看看是否小于1(x)/0()x迭代法收敛的阶定义设序列收敛到,若有实数和非零常数C,使得其中,,则称该序列是p阶收敛的,0n}x{*x1pCeepnnn1lim*xxenn迭代法收敛的阶当p=1时,称为线性收敛;当p1时,称为超线性收敛;当p=2时,称为平方收敛或二次收敛。误差估计若满足定理条件,则)(xx1L||||1Lkkkxxxx0L||||1Lkkkxxxx*/11110()LL,LkkkkkkkkLxxxxxxxxx是根附近(x的某邻域)上的最大值,实际中,我们可以如下估计及,L下面定理给出判别迭代收敛阶的一个方法定理:记是的根,,设在附近连续,若对,有则基本迭代法是P阶连续的。()xx**()xx()()px*x1p/*//*(1)*()*()()()0,()0,ppxxxx1()kkxx*x基本迭代法的matlab实现function[k,piancha,xk]=diedai1(x0,k)%输入的量--x0是初始值,k是迭代次数x(1)=x0;fori=1:kx(i+1)=fun1(x(i));%程序中调用的fun1.m为函数y=φ(x)piancha=abs(x(i+1)-x(i));i=i+1;xk=x(i);[(i-1)pianchaxk]endMatlab中与或非,分别是:&|~与或非if(piancha1)&(k3)disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')return;endif(piancha0.001)&(k3)disp('祝贺您!此迭代序列收敛,且收敛速度较快')return;endp=[(i-1)pianchaxk]';关于程序里面的fun1,可以如下类似定义functiony1=fun1(x)y1=(10-x^2)/2;作业:1.编程求方程在区间(1,2)内的实根。2.习题4.4(P104)01)(3xxxf4.3Newton迭代法设x*是方程f(x)=0的根,又x0为x*附近的一个值,将f(x)在x0附近做泰勒展式令,则之间和在其中020000)()(21)()()()(xxfxxxfxxxfxf*xx)()(21)()()()(020*00*0*fxxxfxxxfxfNewton迭代法即以x1代替x0重复以上的过程,继续下去得:0)()()(000*0xfxxfxxf*000()()fxxxfx0100()()fxxxfxNewton迭代法,......1,0)()(1nxfxfxxnnnn以此产生的序列{Xn}得到f(x)=0的近似解,称为Newton法,又叫切线法。Newton迭代法几何解释几何意义例题例用Newton法求的近似解。解:由零点定理。0cos)(xxxf内有根。在)2,0(0cosxx迭代公式得及由Newtonxxfsin1)(,......1,0sin1cos1nxxxxxnnnnn例题085133739.0739085133.0739085133.0739085178.0;73936133.044*43210xxxxxxx故取得取例题例用Newton法计算。解:22()02fxxaa其中迭代公式得及由Newtonxxf2)(21212()0,1,......22nnnnnnxxxxnxx。有十位有效数的近似值是已的精确值相比,。与,,则取332102414213562.1414215686.11.416666675.1xxxxxNewton迭代法算法。输出)转(做输入1101001001000:)4(;;2)3;)2;/)1||while(3));();()2(;,)1(xendwhilexxffxxfxffxffxNewton迭代法收敛性定理4.3.1给定方程,若满足条件:(1)在根附近,f(x)二次连续可微。(2)则Newton迭代法是局部二阶收敛的。(即初值取根附近的值时,是二阶收敛的)()0fx/*()0fx定理告诉我们:单根附近是二阶收敛的Newton法的matlab实现function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;Newton法的matlab实现fori=1:gxmaxx(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha=piancha/(abs(x(i+1))+eps);i=i+1;xk=x(i);yk=fnq(x(i));[(i-1)xkykpianchaxdpiancha]if(abs(yk)ftol)&((pianchatol)|(xdpianchatol))k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;endendNewton法的matlab实现ifigxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;end[(i-1),xk,yk,piancha,xdpiancha]';重根情形Newton迭代重根时仅有线性收敛速度,经修改后可以有二阶收敛性。设重数为m.(1)m已知时,迭代公式修改为:1/()()kkkkfxxxmfx(2)m未知时,在根的附近有单根,对构造newton迭代公式:()0'()fxfx/1/2//()()[()]()()kkk
本文标题:第4章非线性方程求根的迭代法.
链接地址:https://www.777doc.com/doc-2110040 .html