毕业论文参考_非线性方程求根的迭代法_第1页
毕业论文参考_非线性方程求根的迭代法_第2页
毕业论文参考_非线性方程求根的迭代法_第3页
毕业论文参考_非线性方程求根的迭代法_第4页
毕业论文参考_非线性方程求根的迭代法_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 非线性方程求根的迭代法 本章重点介绍求解非线性方程 的几种常见和有效的数值方法.无论在理论上,还是在实际应用中,这些数值解法都是对经典的解析方法的突破性开拓和补充,许多问题的求解,在解析方法无能为力时,数值方法则可以借助于计算机出色完成.0)(xfnf(x)=0某个区间上可能有奇数重根或者有偶数重根,都可以转换为讨论单根的情形(具体数学细节不多加解释)。所以此节我们考察单根情形。4.1二分法求非线性方程0)(xf 确定方程的有根区间 计算根的近似值的根的方法分为两步:n首先确定有限区间:依据零点定理。 设 ,且 ,则方程 在区间 上至少有一个根。如果 在 上恒正或恒负,则此根唯一。,)

2、(baCxf0)()(bfaf0)(xf),(ba)(xf),(ba等步长扫描法求有根区间 n用计算机求有根区间:等步长扫描法。 设h0是给定的步长,取 ,若 则扫描成功;否则令 ,继续上述方法,直到成功。如果 则扫描失败。再将h 缩小,继续以上步骤。haxax10,0)()(10 xfxfhxxxx0110,bx 1等步长扫描算法 (了解)n算法:(求方程 的有根区间)(1) 输入 ;(2) ; (3) ,若 输出失败信息,停机。(4)若 。输出 ,已算出方程的一个根,停机。0)(xfhba,)(0aff )(,1xffhaxbx 01fx等步长扫描算法(5) 若 。输出 为有根区间,停机(

3、6) ,转 3)n注:如果对足够小的步长h扫描失败。说明:在 内无根在 内有偶重根010ff, ,xaxaxa ,ba,banQustion: 有没有更直观的方法呢?二分法 n用二分法(将区间对平分)求解。 令 若 ,则 为有根区间,否则 为有根区间 记新的有根区间为 , 则 且 )(,1121111bacbbaa0)()(11cfaf,11ca,11bc,22ba,2211baba)(112122abab二分法n对 重复上述做法得n且 ,22ba.,.,2211nnbababa)(211ababnnn二分法 设 所求的根为 , 则 即 取 为 的近似解 x.2 , 1,nbaxnn.2 ,

4、1nbxann0)(21lim)(lim1nababnnnnxbannnnlimlim)(21nnnbacxxn二分法特点:(1)条件简单,只需要满足连续性即可。(2)收敛速度慢,精度要求比较高时,时间花费比较大。例题n例1 设方程 2 , 1 , , 1)(3baxxxf4.2 基本迭代法n迭代法及收敛性 对于 有时可以写成 形式 如: 0)(xf)(xx3331101xxxxxxxxxxcos0cos迭代法及收敛性 考察方程 。不能直接求出它的根,但如果给出根的某个猜测值 , 代入 中的右端得到 ,再以 为一个猜测值,代入 的右端得 反复迭代得)(xx0 x)(xx)(01xx1x)(xx

5、)(12xx,.1 , 0)(k1kkxx迭代法及收敛性 若 收敛,即 则得 是 的一个根kx xxkklimx)(xx)()lim()(limlim1nxxxxxnnnnn基本迭代法 上述方法称为 基本迭代法将 变为另一种等价形式 。选取 的某一近似值 ,则按递推关系 产生的迭代序列 。这种方法算为简单迭代法。0)(xf)(xxx,0bax ,.1 , 0)(k1kkxxkx 若 收敛,即 称迭代法收敛,否则称迭代法发散kx xxkklim迭代法的几何意义n 交点的横坐标 *x)()(xyxyxxy=x2x0 x1x例题 例 试用迭代法求方程 在区间(1,2)内的实根。 解:由 建立迭代关系

6、 k=10,1,2,3.计算结果如下:31xx01)(3xxxf311kkxx例题n精确到小数点后五位5102132472. 1x例题n但如果由 建立迭代公式 仍取 ,则有 , 显然结果越来越大, 是发散序列1x3x,.2 , 1131kxxkk 5 . 10 x 2.3751x 12.392x kxn下面考虑如下两个问题:n什么时候收敛?n收敛速度怎么刻画?迭代法的收敛性n定理(压缩映像原理)(了解)设迭代函数 在闭区间 上满足(1)(2) 满足Lipschitz条件即 有且 。 )(x ,ba,)(,baxbax)(x,21baxx )()(2121xxLxx10 L压缩映像原理则 在 上

7、存在 唯一解 ,且对 ,由 产生的序列 收敛于 。 )(xx,0bax )(k1kxx.1kxx,bax关于压缩映像教材上有另外一种形式Th4.2.1 则基本迭代格式收敛的充要条件是:*/( )(),( )xxxxx xxx是的根,U设连续,*10()(kkx基本迭代格式xx 的初始值xU)( )1xL*(xxU)例题n例例 证明函数 在区间1,2上满足迭代收敛条件。n证明:31)x(x上严格单调增函数。是区间所以因为,)(2 , 1 0) 1(31)x(32baxxx例题 2 , 1 1431|) 1(31| )(|332xLxx又23)2(12) 1 (33,而)。满足条件(,所以即1)(

8、2 , 1 )2(),1 (x)。满足条件(所以2)(x满足压缩映像原理。在故2 , 1 1)x(3x例题n若取迭代函数 , 不满足压缩映像原理,故不能肯定 收敛到方程的根。 1)x(3 x2 , 1 3|3| )(|2xxx因为,.1 , 0)(1nxxnn简单迭代收敛情况的几何解释 是否取到合适的初值,是否构造合适的迭代格式,对于是否收敛是关键的。对于初值,实际操作时,可以先画出函数图形,然后,观察根大概在什么地方。对于迭代格式,可以对 求导,看看 是否小于1( x)/0()x n迭代法收敛的阶迭代法收敛的阶 定义定义 设序列 收敛到 ,若有实数 和非零常数C,使得 其中, ,则称该序列是

9、p 阶收敛的,0nx*x1pCeepnnn1lim*xxenn迭代法收敛的阶迭代法收敛的阶当p=1时,称为线性收敛;当p1时,称为超线性收敛;当p=2时,称为平方收敛或二次收敛。n误差估计 n若 满足定理条件,则n )(xx1L|1Lkkkxxxx0L|1 Lkkkxxxx*/11110( )LL,LkkkkkkkkLxxxxxxxxx是根附近(x的某邻域)上的最大值,实际中,我们可以如下估计 及 ,L下面定理给出判别迭代收敛阶的一个方法n定理: 记 是 的根, ,设 在 附近连续,若对 ,有则基本迭代法 是P阶连续的。( )xx*()xx( )( )px*x1p /*/*(1)*( )*()

10、()()0,()0,ppxxxx1()kkxx*x基本迭代法的matlab实现nfunction k,piancha,xk=diedai1(x0,k)n% 输入的量-x0是初始值,k是迭代次数nx(1)=x0; nfor i=1:kn x(i+1)=fun1(x(i);%程序中调用的fun1.m为函数y=(x) n piancha= abs(x(i+1)-x(i); ni=i+1;xk=x(i);(i-1) piancha xknendMatlab中与或非,分别是:& | 与或非 nif (piancha 1)&(k3)n disp(请用户注意:此迭代序列发散,请重新输入新的迭

11、代公式)n return;n endn if (piancha 3)n disp(祝贺您!此迭代序列收敛,且收敛速度较快)n return;n endnp=(i-1) piancha xk;关于程序里面的fun1,可以如下类似定义nfunction y1=fun1(x) y1=(10-x2)/2;作业: 1. 编程求方程 在区间(1,2)内的实根。2. 习题4.4(P104) 01)(3xxxf4.3 Newton迭代法n设x * 是方程f (x ) = 0的根,又x0 为x * 附近的一个值 ,将f (x ) 在x0附近做泰勒展式 令 ,则 之间和在其中020000)()(21)()()()

12、(xxfxxxfxxxfxf *xx )()(21)()()()(020*00*0*fxxxfxxxfxf Newton迭代法即以x1代替x0重复以上的过程,继续下去得:0)()()(000*0 xfxxfxxf*000()()f xxxfx0100()()fxxxfxNewton迭代法,.1 , 0)()(1nxfxfxxnnnn以此产生的序列Xn得到f(x)=0的近似解,称为Newton法,又叫切线法。Newton迭代法几何解释n几何意义例题例 用Newton法求 的近似解。解:由零点定理。0cos)(xxxf内有根。在)2, 0(0cosxx迭代公式得及由Newtonxxfsin1)(,

13、.1 , 0sin1cos1nxxxxxnnnnn例题085133739. 0739085133. 0739085133. 0739085178. 0;73936133. 044*43210 xxxxxxx故取得取例题n例 用Newton法计算 。解:22( )02f xxaa其中迭代公式得及由Newtonxxf2)(21212()0,1,.22nnnnnnxxxxnxx。有十位有效数的近似值是已的精确值相比,。与,则取332102414213562. 1414215686. 11.416666675 . 1xxxxxNewton迭代法算法。输出)转(做输入1101001001000:)4(;

14、2) 3;)2;/) 1|while(3);();()2(;,) 1 (xendwhilexxffxxfxffxffxNewton迭代法收敛性定理4.3.1给定方程 ,若满足条件:(1)在根附近,f(x)二次连续可微。(2) 则Newton迭代法是局部二阶收敛的。(即初值取根附近的值时,是二阶收敛的)( )0f x /*()0fxn定理告诉我们:定理告诉我们:单根附近是二阶收敛的单根附近是二阶收敛的Newton法的matlab实现nfunction k,xk,yk,piancha,xdpiancha=newtonqx(x0,tol,ftol,gxmax)nx(1)=x0; Newton法的ma

15、tlab实现nfor i=1: gxmaxn x(i+1)=x(i)-fnq(x(i)/(dfnq(x(i)+eps); piancha=abs(x(i+1)-x(i);n xdpiancha= piancha/( abs(x(i+1)+eps); i=i+1;nxk=x(i);yk=fnq(x(i); (i-1) xk yk piancha xdpianchanif (abs(yk)ftol)&(pianchatol)|(xdpianchagxmaxn disp(请注意:迭代次数超过给定的最大值gxmax。)n k=i-1; xk=x(i);(i-1) xk yk piancha x

16、dpianchan return;nendn (i-1),xk,yk,piancha,xdpiancha;重根情形Newton 迭代重根时仅有线性收敛速度,经修改后可以有二阶收敛性。设重数为m.(1)m已知时,迭代公式修改为:1/()()kkkkf xxxmfxn(2)m未知时,在根的附近 有单根,对 构造newton迭代公式: ( )0( )f xfx/1/2/()()()()()kkkkkkkf xfxxxfxf xfx( )0( )f xf x求重根的matlab实现n(一)(一) 已知方程根的重数已知方程根的重数n供名为供名为newtonxz.m的的M文件:文件:nfunction k

17、,piancha,xdpiancha,xk,yk=newtonxz(m,x0,tol,ftol,gxmax)nx(1)=x0;nfor i=1: gxmaxnx(i+1)=x(i)-m*fnq(x(i)/(dfnq(x(i)+eps); npiancha=abs(x(i+1)-x(i);nxdpiancha=piancha/( abs(x(i+1)+eps); i=i+1; nxk=x(i);yk=fnq(x(i); (i-1) piancha xdpiancha xk yk;n if (pianchatol)|(xdpiancha tol)&(abs(yk)gxmaxn disp(请

18、注意:迭代次数超过给定的最大值请注意:迭代次数超过给定的最大值gxmax.)n k=i-1; xk=x(i); yk=fnq(x(i); n(i-1) piancha xdpiancha xk yk;nreturn;nend求重根的matlab实现n(二)(二) 未知方程根的重数未知方程根的重数nfunction k,piancha,xdpiancha,xk,yk=newtonxz1(x0,tol,ftol,gxmax)nx(1)=x0;nfor i=1: gxmaxnu(i)=fnq(x(i)/dfnq(x(i);ndu(i)=1-fnq(x(i)*ddfnq(x(i)/(dfnq(x(i)

19、2+eps);nx(i+1)=x(i)-u(i)/du(i); piancha=abs(x(i+1)-x(i);nxdpiancha=piancha/( abs(x(i+1)+eps); i=i+1; xk=x(i);yk=fnq(x(i);n if (pianchatol)|(xdpiancha tol)&(abs(yk)gxmaxn disp(请注意:迭代次数超过给定的最大值gxmax.)nk=i-1; xk=x(i); yk=fnq(x(i); (i-1) piancha xdpiancha xk yk ;nreturn;nendn例例 用牛顿切线法求方程 在 附近的近似根,要求

20、精度 .n解解 n在MATLAB工作窗口输入程序k,xk,yk,piancha,xdpiancha=newtonqx(-0.4,0.001, 0.001,100)n k,xk,yk,piancha,xdpiancha=newtonqx(-0.4,0.001, 0.001,100)013223 xx00.4x 310nfunction k=fnq(x)n k=2*x3-3*x2+1;n%计算x处的函数值nfunction k=dfnq(x)nk=6*x2-6*x;n%计算x处的一阶导数值作业1: 求 ,要求精度为 .要求(1)写出牛顿迭代格式,并分析其收敛速度(可仿照p97例4.3.1) (2)写出matlab实现程序(写清程序newtonqx(x0,tol,ftol,g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论