第4章非线性方程求根的迭代法课件

上传人:无*** 文档编号:241639518 上传时间:2024-07-12 格式:PPT 页数:67 大小:640.51KB
返回 下载 相关 举报
第4章非线性方程求根的迭代法课件_第1页
第1页 / 共67页
第4章非线性方程求根的迭代法课件_第2页
第2页 / 共67页
第4章非线性方程求根的迭代法课件_第3页
第3页 / 共67页
点击查看更多>>
资源描述
第4章 非线性方程求根的迭代法 本章重点介绍求解非线性方程 的几种常见和有效的数值方法.无论在理论上,还是在实际应用中,这些数值解法都是对经典的解析方法的突破性开拓和补充,许多问题的求解,在解析方法无能为力时,数值方法则可以借助于计算机出色完成.nf(x)=0某个区间上可能有奇数重根或者有偶数重根,都可以转换为讨论单根的情形(具体数学细节不多加解释)。所以此节我们考察单根情形。4.1二分法求非线性方程 确定方程的有根区间 计算根的近似值的根的方法分为两步:n首先确定有限区间:依据零点定理。设 ,且 ,则方程 在区间 上至少有一个根。如果 在 上恒正或恒负,则此根唯一。等步长扫描法求有根区间 n用计算机求有根区间:等步长扫描法。设h0是给定的步长,取 ,若 则扫描成功;否则令 ,继续上述方法,直到成功。如果 则扫描失败。再将h 缩小,继续以上步骤。等步长扫描算法(了解)n算法:(求方程 的有根区间)(1)输入 ;(2);(3),若 输出失败信息,停机。(4)若 。输出 ,已算出方程的一个根,停机。等步长扫描算法(5)若 。输出 为有根区间,停机(6),转 3)n注:如果对足够小的步长h扫描失败。说明:在 内无根在 内有偶重根nQustion:有没有更直观的方法呢?有没有更直观的方法呢?二分法 n用二分法(将区间对平分)求解。令 若 ,则 为有根区间,否则 为有根区间 记新的有根区间为 ,则 且 二分法n对 重复上述做法得n且 二分法 设 所求的根为 ,则 即 取 为 的近似解 n二分法特点:(1)条件简单,只需要满足连续性即可。(2)收敛速度慢,精度要求比较高时,时间花费比较大。例题n例1 设方程 4.2 基本迭代法n迭代法及收敛性 对于 有时可以写成 形式 如:迭代法及收敛性 考察方程 。不能直接求出它的根,但如果给出根的某个猜测值 ,代入 中的右端得到 ,再以 为一个猜测值,代入 的右端得 反复迭代得迭代法及收敛性 若 收敛,即 则得 是 的一个根基本迭代法 上述方法称为 基本迭代法将 变为另一种等价形式 。选取 的某一近似值 ,则按递推关系 产生的迭代序列 。这种方法算为简单迭代法。若 收敛,即 称迭代法收敛,否则称迭代法发散迭代法的几何意义n 交点的横坐标 y=x例题 例 试用迭代法求方程 在区间(1,2)内的实根。解:由 建立迭代关系 k=10,1,2,3.计算结果如下:例题n精确到小数点后五位例题n但如果由 建立迭代公式 仍取 ,则有 ,显然结果越来越大,是发散序列n下面考虑如下两个问题:n什么时候收敛?n收敛速度怎么刻画?迭代法的收敛性n定理(压缩映像原理)(了解)设迭代函数 在闭区间 上满足(1)(2)满足Lipschitz条件即 有且 。压缩映像原理则 在 上存在 唯一解 ,且对 ,由 产生的序列 收敛于 。关于压缩映像,教材上有另外一种形式Th4.2.1 则基本迭代格式收敛的充要条件是:例题n例例 证明函数 在区间1,2上满足迭代收敛条件。n证明:例题 例题n若取迭代函数 ,不满足压缩映像原理,故不能肯定 收敛到方程的根。简单迭代收敛情况的几何解释 是否取到合适的初值,是否构造合适的迭代格式,对于是否收敛是关键的。对于初值,实际操作时,可以先画出函数图形,然后,观察根大概在什么地方。对于迭代格式,可以对 求导,看看 是否小于1 n迭代法收敛的阶迭代法收敛的阶 定义定义 设序列 收敛到 ,若有实数 和非零常数C,使得 其中,则称该序列是p 阶收敛的,迭代法收敛的阶迭代法收敛的阶当p=1时,称为线性收敛;当p1时,称为超线性收敛;当p=2时,称为平方收敛或二次收敛。n误差估计 n若 满足定理条件,则n 下面定理给出判别迭代收敛阶的一个方法n定理:记 是 的根,设 在 附近连续,若对 ,有则基本迭代法 是P阶连续的。基本迭代法的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(请用户注意:此迭代序列发散,请重新输入新的迭代公式)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)4.3 Newton迭代法n设x*是方程f(x)=0的根,又x0 为x*附近的一个值,将f(x)在x0附近做泰勒展式 令 ,则 Newton迭代法即以x1代替x0重复以上的过程,继续下去得:Newton迭代法以此产生的序列Xn得到f(x)=0的近似解,称为Newton法,又叫切线法。Newton迭代法几何解释n几何意义例题例 用Newton法求 的近似解。解:由零点定理。例题例题n例 用Newton法计算 。解:Newton迭代法算法Newton迭代法收敛性定理4.3.1给定方程 ,若满足条件:(1)在根附近,f(x)二次连续可微。(2)则Newton迭代法是局部二阶收敛的。(即初值取根附近的值时,是二阶收敛的)n定理告诉我们:定理告诉我们:单根附近是二阶收敛的单根附近是二阶收敛的Newton法的matlab实现nfunction k,xk,yk,piancha,xdpiancha=newtonqx(x0,tol,ftol,gxmax)nx(1)=x0;Newton法的matlab实现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 xdpianchan return;nendn(i-1),xk,yk,piancha,xdpiancha;重根情形Newton 迭代重根时仅有线性收敛速度,经修改后可以有二阶收敛性。设重数为m.(1)m已知时,迭代公式修改为:n(2)m未知时,在根的附近 有单根,对 构造newton迭代公式:求重根的matlab实现n(一)(一)已知方程根的重数已知方程根的重数n供名为供名为newtonxz.m的的M文件:文件:nfunction k,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(请注意:迭代次数超过给定的最大值请注意:迭代次数超过给定的最大值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)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例例 用牛顿切线法求方程 在 附近的近似根,要求精度 .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)nfunction 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,gxmax)中的各参数,另外自己写程序fnq,dfnq)作业2 习题4.5 习题 4.8 弦截法牛顿迭代法需要计算 ,有时候是件很麻烦的事情,比如f(x)仅给出离散的形式,可用一阶差商 代替 ,于是有弦截法迭代公式:n弦截法是超线性收敛的例题例 弦截法求方程在区间(1,2)内的实根。弦截法的matlab实现nfunction k,piancha,xdpiancha,xk,yk=gexian(x01,x02,tol,ftol,gxmax)nx(1)=x01;x(2)=x02;nfor i=2:gxmaxn u(i)=fnq(x(i)*(x(i)-x(i-1);v(i)=fnq(x(i)-fnq(x(i-1);n x(i+1)=x(i)-u(i)/(v(i);piancha=abs(x(i+1)-x(i);n xdpiancha=piancha/(abs(x(i+1)+eps);i=i+1;xk=x(i);nyk=fnq(x(i);(i-2)piancha xdpiancha xk ykn if(abs(yk)ftol)&(piancha tol)|(xdpianchagxmaxndisp(请注意:迭代次数超过给定的最大值gxmax.)nk=i-2;xk=x(i);yk=fnq(x(i);n return;nend
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!