牛顿迭代法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一 .牛顿迭代法简介
1.牛顿迭代法的产生背景
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。
利用牛顿迭代法来解决问题需要做好的工作:
(1)确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
(2)建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
(3)对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
2.牛顿迭代法的概述
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。设r是f(x)=0的根,选取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点附近展开成泰勒级数 f(x)=f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +…取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。
3.牛顿迭代法的优点
迭代法是求方程近似根的一个重要方法,也是计算方法中的一种基本方法,它的算法简单,是用于求方程或方程组近似根的一种常用的算法设计方法。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具
有平方收敛,而且该法还可以用来求方程的重根、复根。牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的解。假定有一个函数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。
缺点:选定的初值要接近方程的解,否则有可能的不到收敛的结果。再者,牛顿迭代法计算量比较大。因每次迭代除计算函数值外还要计算微商值。
二 .牛顿迭代法的分析
1.牛顿迭代法的思想
多数情况下是得不到一般数学方法所需的函数表达式,或难以找到原函数。线性方程组的求解更是让人望而生畏,往往因为计算机工作量太大而无法实施。对这些问题,都可以利用数值方法来求解,在计算机中实现的数值方法也称为数值算法。牛顿迭代法是数值分析中一个重要的计算方法和思想。迭代法的主要功能:计算方程时可以比较快速。
在工程实践中,有许多问题往往归结为求一元非线性方程的实根、求函数的定积分、求线性方程组的解等。而即使对于求一元方程实根这类问题,也只有在少数简单的情况下,才可以用传统的方法得到根的数学表达式。对于需要计算定积分的问题,便的计算出来结果但并不影响计算出来结果的精确度,运用于多种工业设计和数学设计方面。
牛顿迭代法用到导数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,二分法、截弦法、牛顿迭代法计算公式不同,一个用中值外推,后二者用直线外推,二者用直线外推,但它们计算过程几乎相同,具体程序详见本源代码。对截弦法而言,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=y2
x2=x,y2=y
2.牛顿迭代法的要求
牛顿迭代法方法简单,每次迭代都是简单的重复运算,易于编制程序;与求