《第4章-非线性方程求根的迭代法》由会员分享,可在线阅读,更多相关《第4章-非线性方程求根的迭代法(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条件 即 有 且 。,压缩映像原理,则。
5、 在 上存在 唯一解 , 且对 ,由 产生 的序列 收敛于 。,关于压缩映像,教材上有另外一种形式 Th4.2.1 则基本迭代格式收敛的充要条件是:,例题,例 证明函数 在区间1,2上满足迭代收敛条件。 证明:,例题,例题,若取迭代函数 , 不满足压缩映像原理,故不能肯定 收敛到方程的根。,简单迭代收敛情况的几何解释,是否取到合适的初值,是否构造合适的迭代格式,对于是否收敛是关键的。 对于初值,实际操作时,可以先画出函数图形,然后,观察根大概在什么地方。 对于迭代格式,可以对 求导,看看 是否小于1,迭代法收敛的阶 定义 设序列 收敛到 ,若有实数 和非零常数C,使得 其中, ,则称该序列是p。
6、 阶收敛的,,迭代法收敛的阶,当p=1时,称为线性收敛; 当p1时,称为超线性收敛; 当p=2时,称为平方收敛或二次收敛。,误差估计 若 满足定理条件,则,下面定理给出判别迭代收敛阶的一个方法,定理: 记 是 的根, ,设 在 附近连续,若对 ,有 则基本迭代法 是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+。
7、1;xk=x(i);(i-1) piancha xk end,Matlab中与或非,分别是:,作业:,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法求 的近似解。 解:由零点定理。,例题。
8、,例题,例 用Newton法计算 。 解:,Newton迭代法算法,Newton迭代法收敛性,定理4.3.1 给定方程 ,若满足条件: (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。
9、(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) xk yk piancha xdpiancha if (abs(yk)gxmax disp(请注意:迭代次数超过给定的最大值gxmax。) k=i-1; xk=x(i);(i-1) xk yk piancha xdpiancha return; end (i-1),xk,yk,piancha,xdpiancha;,重根情形,Newton 迭代重根时仅有线性收敛速度,经修改后可以有二阶。
10、收敛性。 设重数为m. (1)m已知时,迭代公式修改为:,(2)m未知时,在根的附近 有单 根,对 构造newton迭代公式:,求重根的matlab实现,(一) 已知方程根的重数 供名为newtonxz.m的M文件: function k,piancha,xdpiancha,xk,yk=newtonxz(m,x0,tol,ftol,gxmax) x(1)=x0; for i=1: gxmax x(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); 。
11、i=i+1; xk=x(i);yk=fnq(x(i); (i-1) piancha xdpiancha xk yk; 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: gxmax u(i)=fnq(。
12、x(i)/dfnq(x(i); du(i)=1-fnq(x(i)*ddfnq(x(i)/(dfnq(x(i)2+eps); x(i+1)=x(i)-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,例 用牛顿。
13、切线法求方程 在 附近的近似根,要求精度 . 解 在MATLAB工作窗口输入程序k,xk,yk,piancha,xdpiancha=newtonqx(-0.4,0.001, 0.001,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)写出。
14、matlab实现程序(写清程序newtonqx(x0,tol,ftol,gxmax)中的各参数,另外自己写程序fnq,dfnq) 作业2 习题4.5 习题 4.8,弦截法,牛顿迭代法需要计算 ,有时候是件很麻烦的事 情,比如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)gxmax disp(请注意:迭代次数超过给定的最大值gxmax.) k=i-2; xk=x(i);yk=fnq(x(i); return; end。