牛顿迭代法论文_第1页
牛顿迭代法论文_第2页
牛顿迭代法论文_第3页
牛顿迭代法论文_第4页
牛顿迭代法论文_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、南昌工程学院 课程设计 姓 名: 专 业: 年 级: 学 号: 年 月 日 牛顿迭代算法摘要: 牛顿迭代法(Newtons method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。牛顿迭代法是一个重要

2、的计算方法和思想。牛顿迭代法的主要功能:计算方程时可以比较快速方便的计算出来结果但并不影响计算出来结果的精确度,运用于多种工业设计和数学设计方面.关键字: 牛顿 迭代 方程 根 算法一 .牛顿迭代法简介1.1 牛顿迭代法的概述 牛顿迭代法(Newtons method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。设r是f(x) = 0的根,

3、选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0) f(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴的横坐标 x2 = x1-f(x1)/f(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)f(x(n)/f(x(n),称为r的n+1次近似值,上式称为牛顿迭代公式。解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰

4、勒级数 f(x) = f(x0)+(xx0)f(x0)+(xx0)2*f(x0)/2! + 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f(x0)(xx0)=f(x)=0 设f(x0)0则其解为x1=x0f(x0)/f(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)f(x(n)/f(x(n)。1.2 牛顿迭代法的优点 迭代法是求方程近似根的一个重要方法,也是计算方法中的一种基本方法,它的算法简单,是用于求方程或方程组近似根的一种常用的算法设计方法。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有

5、平方收敛,而且该法还可以用来求方程的重根、复根。牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的解。假定有一个函数y=f(x),方程f(x)=0在 x = r 处有一个根,对于此根,先估计一个初始值 Xo(可以是猜测的)。得到一个更好的估计值X1。为此f(X)=Xo处作该曲线切线,并将其延长与 x 轴相交。切线与x轴的交点通常很接近 r ,我们用它作为下一个估计值X1,求出X1后,用X1代替Xo。重复上述过程,在x=X1处作曲线的另一条切线,并将其延长至与x轴相交,用切线的x轴截距作为下一个近似值X2这样继续下去,所得出的这个x轴截距的序列通常迅速接近根r。二 .牛顿

6、迭代法的分析2.1牛顿迭代法的思想 多数情况下是得不到一般数学方法所需的函数表达式,或难以找到原函数。线性方程组的求解更是让人望而生畏,往往因为计算机工作量太大而无法实施。对这些问题,都可以利用数值方法来求解,在计算机中实现的数值方法也称为数值算法。牛顿迭代法是数值分析中一个重要的计算方法和思想。迭代法的主要功能:计算方程时可以比较快速。 在工程实践中,有许多问题往往归结为求一元非线性方程的实根、求函数的定积分、求线性方程组的解等。而即使对于求一元方程实根这类问题,也只有在少数简单的情况下,才可以用传统的方法得到根的数学表达式。对于需要计算定积分的问题,便的计算出来结果但并不影响计算出来结果的

7、精确度,运用于多种工业设计和数学设计方面。牛顿迭代法用到导数f(x),但有时求导困难,如果导数用差商(y2-y1)/(x2-x1)逼近,便是一种快速的截弦法。取两个x值作试探,判断f(x)是否副近于0,如果f(x)不理想,用经过(x1,y1)、(x2,y2)的直线(截弦)代替f(x)求根,近似根x外推=x1-(x2-x1)*y1/(y2-y1),此x靠性会更好些。求根过程:是叠代过程,即由(x1,x2)f(x1)、f(x2)、f(x中)或f(x外推)(X1,X2),大写X1,X2就是下一轮计算的小写x1,x2,二分法、截弦法、牛顿迭代法计算公式不同,一个用中值外推,后二者用直线外推,二者用直线

8、外推,但它们计算过程几乎相同,具体程序详见本源代码。对截弦法而言,x1,y1是起点,x2,y2直的控制点,x1,y1是起点,x2,y2直的控制点,x2不能与x1相等,否则直线画不出来,但x1与x2应尽量靠近,远了作出的直线准确度下降。在求根过程中会用到牛顿迭代伪代码:牛顿迭代法伪代码:x1=-2,y1=f(x1)x2=-2,y2=f(x2)while()/循环 x=x1-(x2-x1)*y1/(y2-y1),y=f(x) 如果|x-x2|0.01或y为0则跳出循环 x1=x2,y1=y2x2=x,y2=y2.2 牛顿迭代法的要求 牛顿迭代法方法简单,每次迭代都是简单的重复运算,易于编制程序;与

9、求解线性方程的精确法相比,简单迭代法对于字长位数较少的计算机更为适用,它可以用增加迭代次数来弥补字长位数少的不足.初值可以任取,因而中间结果偶然错误不影响最后结果的获得。缺点:迭代速度较慢。 2.3 牛顿迭代法和其它算法的比较(1)二分法与牛顿迭代的比较: 1.二分法 二分法要求函数f(X)在有根区间连续即可,而且运算简单,易于在计算机上实现,可用二分法求f(x)=0与a,b内全部实根,但二分法不能起复根及偶数重根。由于每步误差是以1/2因子下降,收敛比较缓慢。方法:任取两点x1和x2,判断(x1,x2)判断(x2,x2)有无实根。如右图所示,如果f(x1)和f(x2)付号相反,说明(x1,x

10、2)之间有一实根。取(x1,x2)的中点x,检查f(x)和f(x1)是否同符号,如果不同号,说明实根在(x1,x)区间,x作为新x2,舍弃(x,x2)区间;若同号,则实根在(x,x2)区间,x作为新x1, 舍弃(x1,x)区间。再根据新的x1,x2,找中点,重复上述步骤。直到|x1-x2|10-6时,x=(x1+x2)/2为所求。 2.牛顿迭代法 牛顿迭代法的收敛速度比简单迭代法快。它的应用范围较广,可用于解代数方程和超越方程,既可求方程的实根,也可求复根,既可求单根,也可求重根。优点是在方程单根附近具有较高的收敛速度,因此是将近似根精确化的一种相当有效的方法。几何意义:f(x)=a0xn+a

11、1xn-1+.+an-1x+an=0求f(x)在X0附近的根计算公式:Xn+1=Xn-f(Xn)/f(Xn)精度:= |Xn+1-Xn|1.0e-m,m=6。所求的根:满足精度的Xn (2)简单迭代法与牛顿代法的比较 1.简单迭代法将方程f(x)0化为一个等价(同解)的方程:x(x),给定一个初值x0,代入右端可算得一个x1(x0),再以x1代入右端,又可得x2(x1)如此继续下去,会得到一个序列xk,其中: xk1(xk)k0,1,2,n(1)xk称为迭代序列,(x)称为迭代函数,式(1)称为迭代格式如果迭代序列是收敛的,且收敛于X,则当(x)连续时,必有:这说明,只要迭代序列收敛,一般总收

12、敛于原方程的解实际计算当然不能做无穷多步,迭代到一定程度,就取xk1作为原方程根的近似值这种求根法称为简单迭代法,或称逐次逼近法 2.牛顿迭代法 设xk是f(x)0的一个近似根,把f(x)在xk处作泰勒展开:显然是f(x)0的同解方程,所以迭代函数为故在的邻域R内,对任意初值x0,由式(4)得到的迭代序列收敛于迭代式(4)所确定的方法称为牛顿迭代法牛顿迭代法有明显的几何意义由式(4)知xk1是点(xk,f(xk)处yf(x)的切线:与X轴交点的横坐标如图1所示也就是说,新的近似值xk1是用代替曲线yf(x)的切线与x轴相交得到的继续取点(xk1,f(xk1),再作切线与X轴相交,又可得xk2由

13、图1可见,只要初值取得充分靠近,这个序列就会很快收敛于由于牛顿迭代法的局部收敛性,又对初值要求较高,只有初值取得充分靠近,才能保证序列收敛三. 牛顿迭代求根的方法 牛顿迭代求根的方法:设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),按下面步骤执行: (1) 选一个方程的近似根,赋给变量x0; (2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0; (3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。 若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。设在给定点处对函数进行二次逼近。二次逼近

14、q如下定义:令是使的点,并重复这个过程: k=0,1,2,该过程当或者时停止,其中是一个很小的数。该方法只能用于二次可微函数,(1)取误差限0.01,从x=4开始,用牛顿法极小化f(x)=由于。应用牛顿迭代法,得迭代计算格式,(k= 0,1,2,)取x0= 4为初值,输入初始值x0:4输入精确值accurate:0.01x1=4.000000 f(x1)=24.000000x2=-1.000000 f(x2)=-1.000000例(2)取误差限0.01,从x=4开始,用牛顿法极小化步骤:(1) 选一个接近于x的真实根的近似根x1;(2) 通过令是使的点求;(3) 并重复(2)过程: k=0,1

15、,2,该过程当或者时停止(4) 一直求下去,直到接近真正的根。当两次求出的根之差就停止牛顿迭代公式是:输入初始值x0:4输入精确值accurate:0.01x1=4.000000 f(x1)=-512.000000x2=2.800000 f(x2)=-96.588800x3=2.012500 f(x3)=-16.607539x4=1.507817 f(x4)=-1.794416x5=1.204385 f(x5)=0.675821x6=1.051791 f(x6)=0.982773x7=1.004643 f(x7)=0.999870例(3)取误差限0.01,从x=0.6开始,重做(2)。讨论用该

16、方法会发生什么现象。输入初始值x0:0.6输入精确值accurate:0.01 输入初始值x0:0.6输入精确值accurate:0.01 x1=0.600000 f(x1)=0.475200 x2=-0.600000 f(x2)=-0.475200 x3=-0.827608 f(x3)=-0.860023 x4=-1.158643 f(x4)=-0.815152 x5=-1.598022 f(x5)=3.240444 x6=-2.122156 f(x6)=22.616865 x7=-2.699757 f(x7)=80.664133 x8=-3.308431 f(x8)=214.573428

17、x9=-3.935325 f(x9)=475.738982 x10=-4.573380 f(x10)=929.789032 x11=-5.218623 f(x11)=1656.580672 x12=-5.868713 f(x12)=2750.195941 x13=-6.522204 f(x13)=4318.940133 x14=-7.178162 f(x14)=6485.341129 x15=-7.835963 f(x15)=9386.149140 x16=-8.495174 f(x16)=13172.336610 x17=-9.155487 f(x17)=18009.098183 x18=-

18、9.816676 f(x18)=24075.850691 x19=-10.478573 f(x19)=31566.233158 x20=-11.141050 f(x20)=40688.106800 x21=-11.804007 f(x21)=51663.555035 x22=-12.467368 f(x22)=64728.883480 x23=-13.131069 f(x23)=80134.619961 x24=-13.795062 f(x24)=98145.514509陷入死循环牛顿迭代法的收敛性牛顿迭代法在使用受条件限制,这个限制就是通常所说的牛顿迭代法的局部收敛性。定理 假设f(x)在x

19、*的某邻域内具有连续的二阶导数,且设f(x*)=0,则对充分靠近x*的初始值x0,牛顿迭代法产生的序列xn收敛于x*。下面例子是牛顿迭代法不收敛的反例。反例说明,牛顿迭代法局部收敛性要求初始点要取得合适,否则导致错误结果。 例(3)在例2基础上取误差限0.01,从x=0.6开始,重做(2)。讨论用该方法会发生什么现象。对于迭代初值取x0=0.6,迭代数列中的第四项又回到初始点x0 = 0.6附近,算法将陷入死循环。而迭代初值取x0=4,可以使牛顿迭代法得到收敛。六、迭代求根应注意的事项牛顿迭代法也有几点注意事项: 关于初始近似的选取。? 当f(x)在a,b上二阶连续可微时,常用下述方法判别收敛

20、性和选取初始近似值x0。即如果在区间a,b上如下条件成立:? (a) f(x)、f(x)在a,b上不变号;? (b) f(a)f(b) 0 ( 或f(a)f(a)0 )? 那么,当x0=b或x0=a时,牛顿格式收敛。 使用时x0应选的尽量靠近x*。 当f(x)不易求得时,不宜采用此方法。牛顿迭代方法能够有效的基本条件是:迭代公式必须是收敛的(也就是通过迭代运算,每一次的结果必须是更接近真实值的) 具体使用迭代法求根时应注意以下两种可能发生的情况: (1) 如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代 算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制; (2) 方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败四,附录例题(1)程序#include #include double f(double x) return pow(x,2)+2*x;double g(double x) return 2*x+2;double h(double x) return 2; void main() int i,j;double x0,accurate,x1000,Abc;printf(输入初始值x0:);scanf(%lf,&x0

温馨提示

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

评论

0/150

提交评论