非线性方程求根的迭代法.ppt

上传人:小飞机 文档编号:6491839 上传时间:2023-11-06 格式:PPT 页数:67 大小:437.50KB
返回 下载 相关 举报
非线性方程求根的迭代法.ppt_第1页
第1页 / 共67页
非线性方程求根的迭代法.ppt_第2页
第2页 / 共67页
非线性方程求根的迭代法.ppt_第3页
第3页 / 共67页
非线性方程求根的迭代法.ppt_第4页
第4页 / 共67页
非线性方程求根的迭代法.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《非线性方程求根的迭代法.ppt》由会员分享,可在线阅读,更多相关《非线性方程求根的迭代法.ppt(67页珍藏版)》请在三一办公上搜索。

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

2、区间,用计算机求有根区间:等步长扫描法。设h0是给定的步长,取,若 则扫描成功;否则令,继续上述方法,直到成功。如果 则扫描失败。再将h 缩小,继续以上步骤。,等步长扫描算法(了解),算法:(求方程 的有根区间)(1)输入;(2);(3),若 输出失败信息,停机。(4)若。输出,已算出方程的一个根,停机。,等步长扫描算法,(5)若。输出 为有根区间,停机(6),转 3)注:如果对足够小的步长h扫描失败。说明:在 内无根在 内有偶重根,Qustion:有没有更直观的方法呢?,二分法,用二分法(将区间对平分)求解。令 若,则 为有根区间,否则 为有根区间 记新的有根区间为,则 且,二分法,对 重复

3、上述做法得且,二分法,设 所求的根为,则 即 取 为 的近似解,二分法特点:(1)条件简单,只需要满足连续性即可。(2)收敛速度慢,精度要求比较高时,时间花费比较大。,例题,例1 设方程,4.2 基本迭代法,迭代法及收敛性 对于 有时可以写成 形式 如:,迭代法及收敛性,考察方程。不能直接求出它的根,但如果给出根的某个猜测值,代入 中的右端得到,再以 为一个猜测值,代入 的右端得 反复迭代得,迭代法及收敛性,若 收敛,即 则得 是 的一个根,基本迭代法,上述方法称为 基本迭代法将 变为另一种等价形式。选取 的某一近似值,则按递推关系 产生的迭代序列。这种方法算为简单迭代法。,若 收敛,即 称迭

4、代法收敛,否则称迭代法发散,迭代法的几何意义,交点的横坐标,y=x,例题,例 试用迭代法求方程 在区间(1,2)内的实根。解:由 建立迭代关系 k=10,1,2,3.计算结果如下:,例题,精确到小数点后五位,例题,但如果由 建立迭代公式 仍取,则有,显然结果越来越大,是发散序列,下面考虑如下两个问题:什么时候收敛?收敛速度怎么刻画?,迭代法的收敛性,定理(压缩映像原理)(了解)设迭代函数 在闭区间 上满足(1)(2)满足Lipschitz条件即 有且。,压缩映像原理,则 在 上存在 唯一解,且对,由 产生的序列 收敛于。,关于压缩映像,教材上有另外一种形式Th4.2.1 则基本迭代格式收敛的充

5、要条件是:,例题,例 证明函数 在区间1,2上满足迭代收敛条件。证明:,例题,例题,若取迭代函数,不满足压缩映像原理,故不能肯定 收敛到方程的根。,简单迭代收敛情况的几何解释,是否取到合适的初值,是否构造合适的迭代格式,对于是否收敛是关键的。对于初值,实际操作时,可以先画出函数图形,然后,观察根大概在什么地方。对于迭代格式,可以对 求导,看看 是否小于1,迭代法收敛的阶 定义 设序列 收敛到,若有实数 和非零常数C,使得 其中,则称该序列是p 阶收敛的,,迭代法收敛的阶,当p=1时,称为线性收敛;当p1时,称为超线性收敛;当p=2时,称为平方收敛或二次收敛。,误差估计 若 满足定理条件,则,下

6、面定理给出判别迭代收敛阶的一个方法,定理:记 是 的根,设 在 附近连续,若对,有则基本迭代法 是P阶连续的。,基本迭代法的matlab实现,function k,piancha,xk=diedai1(x0,k)%输入的量-x0是初始值,k是迭代次数x(1)=x0;for i=1:k x(i+1)=fun1(x(i);%程序中调用的fun1.m为函数y=(x)piancha=abs(x(i+1)-x(i);i=i+1;xk=x(i);(i-1)piancha xkend,Matlab中与或非,分别是:&|与或非,if(piancha 1),关于程序里面的fun1,可以如下类似定义functio

7、n y1=fun1(x)y1=(10-x2)/2;,作业:,1.编程求方程 在区间(1,2)内的实根。2.习题4.4(P104),4.3 Newton迭代法,设x*是方程f(x)=0的根,又x0 为x*附近的一个值,将f(x)在x0附近做泰勒展式 令,则,Newton迭代法,即以x1代替x0重复以上的过程,继续下去得:,Newton迭代法,以此产生的序列Xn得到f(x)=0的近似解,称为Newton法,又叫切线法。,Newton迭代法几何解释,几何意义,例题,例 用Newton法求 的近似解。解:由零点定理。,例题,例题,例 用Newton法计算。解:,Newton迭代法算法,Newton迭代

8、法收敛性,给定方程,若满足条件:(1)在根附近,f(x)二次连续可微。(2)则Newton迭代法是局部二阶收敛的。(即初值取根附近的值时,是二阶收敛的),定理告诉我们:单根附近是二阶收敛的,Newton法的matlab实现,function k,xk,yk,piancha,xdpiancha=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;,Newton法的matlab实现,for i=1:gxmax x(i+1)=x(i)-fnq(x(i)/(dfnq(x(i)+eps);piancha=abs(x(i+1)-x(i);xdpiancha=piancha/(abs(x(

9、i+1)+eps);i=i+1;xk=x(i);yk=fnq(x(i);(i-1)xk yk piancha xdpianchaif(abs(yk)ftol)endend,Newton法的matlab实现,if igxmax disp(请注意:迭代次数超过给定的最大值gxmax。)k=i-1;xk=x(i);(i-1)xk yk piancha xdpiancha return;end(i-1),xk,yk,piancha,xdpiancha;,重根情形,Newton 迭代重根时仅有线性收敛速度,经修改后可以有二阶收敛性。设重数为m.(1)m已知时,迭代公式修改为:,(2)m未知时,在根的附近

10、 有单根,对 构造newton迭代公式:,求重根的matlab实现,(一)已知方程根的重数供名为newtonxz.m的M文件:function k,piancha,xdpiancha,xk,yk=newtonxz(m,x0,tol,ftol,gxmax)x(1)=x0;for i=1:gxmaxx(i+1)=x(i)-m*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)piancha xdpiancha xk yk

11、;if(pianchagxmax disp(请注意:迭代次数超过给定的最大值gxmax.)k=i-1;xk=x(i);yk=fnq(x(i);(i-1)piancha xdpiancha xk yk;return;end,求重根的matlab实现,(二)未知方程根的重数function k,piancha,xdpiancha,xk,yk=newtonxz1(x0,tol,ftol,gxmax)x(1)=x0;for i=1:gxmaxu(i)=fnq(x(i)/dfnq(x(i);du(i)=1-fnq(x(i)*ddfnq(x(i)/(dfnq(x(i)2+eps);x(i+1)=x(i)-

12、u(i)/du(i);piancha=abs(x(i+1)-x(i);xdpiancha=piancha/(abs(x(i+1)+eps);i=i+1;xk=x(i);yk=fnq(x(i);if(pianchagxmax disp(请注意:迭代次数超过给定的最大值gxmax.)k=i-1;xk=x(i);yk=fnq(x(i);(i-1)piancha xdpiancha xk yk;return;end,例 用牛顿切线法求方程 在 附近的近似根,要求精度.解 在MATLAB工作窗口输入程序k,xk,yk,piancha,xdpiancha=newtonqx(-0.4,0.001,0.001

13、,100)k,xk,yk,piancha,xdpiancha=newtonqx(-0.4,0.001,0.001,100),function k=fnq(x)k=2*x3-3*x2+1;%计算x处的函数值,function k=dfnq(x)k=6*x2-6*x;%计算x处的一阶导数值,作业1:求,要求精度为.要求(1)写出牛顿迭代格式,并分析其收敛速度(可仿照p97例4.3.1)(2)写出matlab实现程序(写清程序newtonqx(x0,tol,ftol,gxmax)中的各参数,另外自己写程序fnq,dfnq)作业2 习题4.5 习题 4.8,弦截法,牛顿迭代法需要计算,有时候是件很麻烦

14、的事情,比如f(x)仅给出离散的形式,可用一阶差商 代替,于是有弦截法迭代公式:,弦截法是超线性收敛的,例题,例 弦截法求方程在区间(1,2)内的实根。,弦截法的matlab实现,function k,piancha,xdpiancha,xk,yk=gexian(x01,x02,tol,ftol,gxmax)x(1)=x01;x(2)=x02;for i=2:gxmax u(i)=fnq(x(i)*(x(i)-x(i-1);v(i)=fnq(x(i)-fnq(x(i-1);x(i+1)=x(i)-u(i)/(v(i);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-2)piancha xdpiancha xk yk if(abs(yk)gxmaxdisp(请注意:迭代次数超过给定的最大值gxmax.)k=i-2;xk=x(i);yk=fnq(x(i);return;end,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号