牛顿迭代法
牛顿迭代法
xn1
xn
xne xn 1 e xn (1 xn )
xn
xn exn 1 xn
取x0=0.5,逐次计算得 x1=0.57102, x2=0.56716, x3=0.56714
1.5 牛顿下山法
通常,牛顿迭代法的收敛性依赖于初始值 x0 的选取,
如果 x0 偏离所求的根 x* 比较远,则牛顿法可能发散。
由定理2.2知,牛顿迭代法在 x* 附近局部收敛。又由 定理2.3知, 迭代公式至少具有二阶收敛速度。
利用泰勒公式
0
f (x*)
f (xk )
f (xk )(x*
xk )
f ( ) (x*
2
xk )2 ,
xk
x*
f f
(xk ) (xk )来自f 2f( )
(xk )
(x*
xk
)2
x*, xk
为了防止迭代发散,我们对牛顿迭代法的迭代过程再附
加一项要求,即具有单调性
f (xk1) f (xk )
满足这项要求的算法称下山法。 将牛顿迭代法与下山法结合起来使用,即在下山
法保证函数值下降的前提下,用牛顿迭代法加快收敛 速度。把这一算法称为牛顿下山法。即
xk 1
xk
f (xk ) f (xk )
xk
f (xk ) f (xk )
x*
f ( ) (x*
2 f (xk )
xk )2
所以
xk 1
x*
f ( )
2 f (xk )
(x*
xk
)2
lim x* xk1 f (x* ) k x* xk 2 2 f (x* )
证毕
1.3 牛顿迭代法的收敛性
第三节 牛顿迭代法
一 牛顿法及其收敛性
牛顿法是一种线性化方法,其基本思想是将非线性方 程 f (x)逐 步0 归结为某种线性方程来求解.
设已知方程 f (x有) 近0似根 (假定xk 将函数 f (在x)点 展x开k ,有
),f (xk ) 0
f (x) f (xk ) f (xk )( x xk ),
C )2; C )2.
(3.5)
6
以上两式相除得
xk 1 xk 1
C C
xk xk
2
C C
.
据此反复递推有
xk 1 xk 1
C C
x0 x0
2k
C C
.
记
q x0 C , x0 C
整理(3.6)式,得
(3.6)
7
q 2k xk C 2 C 1 q2k .
对任意 x0,总0有 ,q故由1上式推知,当 时 xk ,C即迭代过程恒收敛.
10
在(3.7)中取 C ,1则称为简化牛顿法,这
f ( x0 )
类方法计算量省,但只有线性收敛,其几何意义是用平行 弦与 x轴交点作为 x的*近似. 如图7-4所示.
图7-4
11
(2) 牛顿下山法.
牛顿法收敛性依赖初值 的x0选取. 如果 偏离x0所求根 x较* 远,则牛顿法可能发散.
例如,用牛顿法求方程
牛顿法(2)的收敛性,可直接由上节定理得到,对(2) 其迭代函数为
g(x) x f (x) , f (x)
由于
g(x)
f (x) [ f (
f (x) x)]2
.
假定 x是* f 的(x一) 个单根,即 f (x*) 0,, f (x*) 0 则由上式知 g(x*),于0是依据可以断定, 牛顿法在根 x *的邻近至少是平方收敛的.
研究生数值分析(5)牛顿(Newton)迭代法
z
0.612547 0.641384 0.641186
6 求方程 m重根的Newton法 设 s 是方程 f(x)=0 的 m 重根(m≥2), f(x)
在 s 的某邻域内有m阶连续导数 ,这时
f (s) f (s) f (m1) (s) 0, f (m) (s) 0
由Taylor公式,得
设 f '(x) 0 ,上式解为
x
xk
f (xk ) f ' (xk )
于是方程 f(x)=0的新的近似根xk+1,可由牛顿
迭代公式
xk 1
xk
f (xk ) f ' (xk )
k 0,1, 2,
求出
牛顿迭代公式具有明显的几何意义。 方程 y f (xk ) f '(xk )(x xk ) 是曲线 y=f(x)在点 (xk , f (xk )) 处的切线方程,迭代公式就是切线与x轴 交点的横坐标。因此,牛顿迭代法又称为切线法。
这表明牛顿迭代法用于求单根时至少是二阶收敛的。
(2)若 x* 是方程 f (x) 0 的 m(m 2) 重根,
即
f (x) (x x*)m q(x)
(q(x*) 0)
此时有
g ' (x*) lim g ' (x) lim
x x*
x x*
f (x) f '' (x) [ f ' (x)]2
k
xk
k
xk
4 0.635498 8 0.640964
5 0.643719 9 0.641285
6 0.640061 10 0.641142
牛顿迭代法(Newton‘s Method)
牛顿迭代法(Newton’s Method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson Method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
与一阶方法相比,二阶方法使用二阶导数改进了优化,其中最广泛使用的二阶方法是牛顿法。
考虑无约束最优化问题:其中 \theta^{\ast} 为目标函数的极小点,假设 f\left( \theta \right) 具有二阶连续偏导数,若第 k 次迭代值为 \theta^{k} ,则可将f\left( \theta \right)在\theta^{k}近进行二阶泰勒展开:这里,g_{k}=x^{\left( \theta^{k} \right)}=∇f\left( \theta^{k} \right)是f\left( \theta \right) 的梯度向量在点 \theta^{k}的值, H\left( \theta^{k} \right) 是 f\left( \theta \right) 的Hessian矩阵:在点 \theta^{\left( k \right)}的值。
函数 f\left( \theta \right) 有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0,特别是当H\left( \theta\right) 是正定矩阵时,函数 f\left( \theta \right) 的极值为极小值。
牛顿法利用极小点的必要条件:这就是牛顿迭代法。
迭代过程可参考下图:在深度学习中,目标函数的表面通常非凸(有很多特征),如鞍点。
因此使用牛顿法是有问题的。
如果Hessian矩阵的特征值并不都是正的,例如,靠近鞍点处,牛顿法实际上会导致更新朝错误的方向移动。
这种情况可以通过正则化Hessian矩阵来避免。
常用的正则化策略包括在Hessian矩阵对角线上增加常数α 。
正则化更新变为:这个正则化策略用于牛顿法的近似,例如Levenberg-Marquardt算,只要Hessian矩阵的负特征值仍然相对接近零,效果就会很好。
第二节_牛顿迭代法
2 3 xk
2 f ( x) 3 x
k 0,1, 2,
4、牛顿迭代法的局部收敛性定理 设 x* 为方程 f (x) = 0的根,在包含x*的某个开区间内 f ( x) 连 B ( x *) [ x , x ], f ( x ) 0 续,且 ,则存在 x* 的邻域 使得任取初值 x0 B ( x*),由牛顿迭代法产生的序列xk 以不 低于二阶的收敛速度收敛于x*.
标即为 xk 1 。 y
( x0 , f ( x0 ))
x* x2 x x0 1
x
例2.5:写出求 a (a 0) 的牛顿迭代格式;写出求 a (a 0) 的牛顿迭代格式,要求公式中既无开方运算,又无除法运算。
2 f ( x ) x a 0 (a 0) 的正根 f ( x) 2x 解: 等价于求方程
f ( x ) f ( x0 ) f ( x0 )( x x0 ) f ( ) ( x x 0 ) 2 , 2!
在 x0 和 x 之间
* 取 x x ,可将 (x* x0)2 看成高阶小量,则有:
0 f ( x*) f ( x0 ) f ( x0 )( x * x0 )
lim x n 注意到ξn 在xn 及x*之间,及 n
x n1 x* x n x*
2
x*
,故
f" ( n ) f " ( x* ) * 2 f ' ( xn ) 2 f' ( x )
0(二阶收敛)若 f "( x* ) 0 0(大于二阶收敛)若 f "( x* ) 0
Newton迭代公式是一种特殊的不动点迭代,其 迭代函数为: f ( x) ( x) x f '( x )
牛顿迭代法
有一种迭代方法叫牛顿迭代法,是用于求方程或方程组近似根的一种常用的算法设计方法。
设方程为f(x)=0,用某种数学方法导出等价的形式x(n+1) = g(x(n)) = x (n)–f(x(n))/f‘(x(n)).然后按以下步骤执行:(1) 选一个方程的近似根,赋给变量x1;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。
例1:已知f(x) = cos(x) - x。
x的初值为3.14159/4,用牛顿法求解方程f(x) =0的近似值,要求精确到10E-6。
算法分析:f(x)的Newton代法构造方程为:x(n+1) = xn - (cos(xn)-xn) / (-sin(xn)-1)。
#include<stdio.h>double F1(double x); //要求解的函数double F2(double x); //要求解的函数的一阶导数函数double Newton(double x0, double e);//通用Newton迭代子程序int main(){double x0 = 3.14159/4;double e = 10E-6;printf("x = %f\n", Newton(x0, e));getchar();return 0;}double F1(double x) //要求解的函数{return cos(x) - x;}double F2(double x) //要求解的函数的一阶导数函数{return -sin(x) - 1;}double Newton(double x0, double e)//通用Newton迭代子程序{double x1;do{x1 = x0;x0 = x1 - F1(x1) / F2(x1);} while (fabs(x0 - x1) > e);return x0; //若返回x0和x1的平均值则更佳}例2:用牛顿迭代法求方程x^2 - 5x + 6 = 0,要求精确到10E-6。
牛顿迭代法
一后逐步向某个位置逼近的方法称为迭代法。 迭代法也称辗转法,是一种不断用变量的旧值递 推新值的过程,跟迭代法相对应的就是直接法(或 称为一次解法) ,即一次性解决问题。迭代算法是用 计算机解决问题的一种基本方法。它利用计算机运 算速度快、适合做重复性操作的特点,让计算机对 一组指令(或一定步骤)重复执行,在每次执行这 组指令(或这些步骤)时,都从变量的原值推出他 的一个新值。 利用迭代法解决问题,需要做好以下三个方面的 工作: 一、确定迭代变量 在可以用迭代算法解决的问题中,至少存在一个 可直接或间接的不断由旧值递推出新值的变量, 这个变量就是迭代变量; 二、建立迭代关系式 所谓的迭代关系式,指如何从变量的前一个值递 推出其下一个值得公式(或关系) 。迭代关系式的 建立是解决迭代问题的关键,通常可以使用递推 或倒推的方法来完成。 三、对迭代过程进行控制 在什么时候结束迭代过程?这时编写迭代程序必
欧几里德算法(辗转相除法)
最经典的迭代算法是欧几里德算法,用于计算两 个整数 a,b 的最大公约数。 其计算原理依赖于下面 的定理: 定理:gcd(a,b)=gcd(b,a mod b) 证明:a 可以表示成 a=kb+r,则 r=a mod b. 假设 d 是 a,b 的一个公约数, 则有 a%d==0,b%d==0, 而 r=a-kb,因此 r%d==0,因此 d 是(b,a mod b)的公约 数 同理,假设 d 是(b,a mod b)的公约数,则 b%d==0, r%d==0, 但是 a=kb+r, 因此 d 也是(a,b)的公约数; 因此(a,b)和(b, a mod b)的公约数是一样的, 其最大 公约数也必然相等,得证。
牛顿迭代法
牛顿迭代法是求方程根的重要方法之一,其最大优 点是在方程 f(x)=0 的单根附近具有平方收敛, 而且该 法还可以用来求方程的重根、 复根, 此时线性收敛, 但是可通过一些方法变成超线性收敛。另外该方法 广泛用于计算机编程中。
牛顿迭代法
4.优缺点 • 优点:收敛速度快,稳定性好,精度高
• 缺点:在重根附近收敛速度会降阶;每次都要计算函
数及其导数值,计算量大。
• 注解:牛顿法是局部收敛的,所以要求初值选在解的 附近,实际计算时,常先用简单迭代法算几步,估计 出一个质量较好的初值!!
5.牛顿迭代法的改进——弦割法
基本思想:牛顿迭代法每一步要计算 f 和 f ,为了避免计算 导数值,现用 f 的差商近似代替微商 f ,从而得到弦割法。
( x) x
1 f ( x*)2 f ( x*) f ( x*) 1 1 | ( x*) | 1 2 n f ( x*)
f ( x) f ( x )
,则
A1: 有局部收敛性,但重数 n 越高,收敛越慢。 Q2: 如何加速重根的收敛? A2: 根的重数已知,可将 f 的重根转化为另一函数的单根。
从而可构造出相应的迭代法格式为
xk 1
f ( xk ) f ( xk ) xk [ f ( xk )]2 f ( xk ) f ( xk )
f ( xk ) f ( xk )
若已知根的重数为 n,可将迭代格式改为,
xk 1 xk n k 0,1, 2,
* 则 ( x ) 0 ,所以上述格式是平方收敛的。
割线 切线 收敛比牛顿迭代法慢,且对 初值要求同样高。 x2 x1 x0
切线斜率
割Hale Waihona Puke 斜率f ( xk )( xk xk 1 ) f ( xk ) f ( xk 1 )
f ( x1 )
f ( x1 ) f ( x0 ) x1 x0
xk 1 xk
需要2个初值 x0 和 x1。
牛顿迭代法演示
数值分析3-牛顿迭代法
§3 牛顿迭代法Newton Iteration————切线法牛顿迭代法是最著名的方程求根方法。
已经通过各种方式把它推广到解其他更为困难的非线性问题。
【例如】非线性方程组、非线性积分方程和非线性微分方程。
虽然牛顿法对于给定的问题不一定总是最好的方法,但它的简单形式和快的收敛速度常常使得解非线性问题的人优先考虑它。
迭代一般理论告诉我们,构造好的迭代函数可使收敛速度提高。
然而迭代函数的构造方法又各不相同,方法多样。
牛顿法是受几何直观启发,给出构造迭代函数的一条重要途径。
牛顿迭代的基本思想:方程f(x)=0的根,几何意义是曲线y=f(x)与ox轴y=0的交点。
求曲线与y=0的交点没有普遍的公式,但直接与0x 轴的交点容易计算。
用直线近似曲线y=f(x),从而用直线方程的根逐步代替f(x)=0的根。
即把非线性方程逐步线性化。
方法:设x k是f(x)=0的一个近似根,把f(x)在x k处作一阶Taylor 展开,得到))(()()(k k k x x x f x f x f -'+≈ (19)设)(k x f '≠0,由于0)())(()(=≈-'+x f x x x f x f k k k所以求得解记为1+k x ,有牛顿迭代公式:(20) 按牛顿迭代计算称为牛顿迭代法。
牛顿法的几何意义:选初值x k 以后,过))(,(k k x f x p 点,作曲线y=f(x)的切线,其切线方程为))(()()(k k k x x x f x f x f -'+= (21)切线与ox 轴的交点,为1+k x ,则)(/)(1k k k k x f x f x x '-=+(22)牛顿迭代法也称为切线法。
迭代法的收敛性:如果取)(/)()(k k x f x f x x g '-=,则有x=g(x),从而牛顿迭代公式就是)(1k k x g x =+因此就可以由考察g(x)的性质,来讨论迭代法的收敛性及收敛速度。
牛顿迭代法
一 .牛顿迭代法简介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的根。
三种牛顿迭代法
三种牛顿迭代法牛顿迭代法是求解方程的一种常用方法。
它是一种迭代法,基本思想是从一个初始点开始,通过函数的局部线性逼近,求得函数的零点。
然后利用新的零点作为下一次迭代的初始点,直到满足预设的精度要求为止。
三种常用的牛顿迭代法包括:常规牛顿迭代法、改进牛顿迭代法和高效牛顿迭代法。
常规牛顿迭代法是最基本的牛顿迭代法,它通过函数的一阶导数和二阶导数来逼近函数的零点。
具体而言,设$f(x)$是要求解的方程,$x_{k}$是当前的估计解,$f^{prime}(x_{k})$是$f(x)$在$x_{k}$处的一阶导数,$f^{prime prime}(x_{k})$是$f(x)$在$x_{k}$处的二阶导数,则常规牛顿迭代法的迭代公式为:$x_{k+1}=x_{k}-frac{f(x_{k})}{f^{prime}(x_{k})}$ 改进牛顿迭代法是针对常规牛顿迭代法的局限性而提出的。
常规牛顿迭代法在求解某些特定的方程时可能会失效,例如当$f^{prime}(x_{k})$接近于零时,迭代公式会出现除零的情况。
改进牛顿迭代法通过加入一个修正因子来避免这种情况的发生。
具体而言,在计算$x_{k+1}$时,改进牛顿迭代法的迭代公式为:$x_{k+1}=x_{k}-frac{f(x_{k})}{f^{prime}(x_{k})+frac{1}{2}f^ {prime prime}(x_{k})(x_{k+1}-x_{k})}$高效牛顿迭代法是一种优化的牛顿迭代法,它通过使用逆Hessian矩阵来加速迭代收敛。
逆Hessian矩阵是函数$f(x)$在$x_{k}$处的Hessian矩阵的逆矩阵,即$H^{-1}(x_{k})=[f^{prime prime}(x_{k})]^{-1}$,其中$[f^{prime prime}(x_{k})]^{-1}$表示$f(x)$在$x_{k}$处的二阶导数矩阵的逆矩阵。
高效牛顿迭代法的迭代公式为:$x_{k+1}=x_{k}-H^{-1}(x_{k})f(x_{k})$总之,牛顿迭代法是一种重要的求解方程的方法,常规牛顿迭代法、改进牛顿迭代法和高效牛顿迭代法是其中的三种常用方法,每种方法都有其适用范围和优缺点。
牛顿迭代法
牛顿迭代法一、 牛顿迭代法牛顿迭代法也称为牛顿-拉夫森(Newton-Raphson)迭代法,它是数值分析中最重要的方法之一,它不仅适用于方程或方程组的求解,还常用于微分方程和积分方程求解。
二、 迭代公式,...2,1,0,)()(1='-=+k x f x f x x k k k k用迭代法解非线性方程时,如何构造迭代函数是非常重要的,那么怎样构造的迭代函数才能保证迭代法收敛呢?牛顿迭代法就是常用的方法之一,其迭代格式的来源大概有以下几种方式(主要是第一种):1、设],[)(2b a C x f ∈,对)(x f 在点],[0b a x ∈作泰勒展开: !2))((''))((')()(20000x x f x x x f x f x f -+-+=ξ略去二次项,得到)(x f 的线性近似式:))((')()(000x x x f x f x f -+≈。
由此得到方程=)(x f 0的近似根(假定≠)('0x f 0),)(')(000x f x f x x -=即可构造出迭代格式(假定≠)('k x f 0):)(')(1k k k k x f x f x x -=+ 公式(1)这就是牛顿迭代公式,若得到的序列{k x }收敛于α,则α就是非线性方程的根。
2、 牛顿迭代法也称为牛顿切线法,这是由于)(x f 的线性化近似函数)(x l =))((')(000x x x f x f -+是曲线y =)(x f 过点))(,(00x f x 的切线而得名的,求)(x f 的零点代之以求)(x l 的零点,即切线)(x l 与x 轴交点的横坐标,如右图所示,这就是牛顿切线法的几何解释。
实际上,牛顿迭代法也可以从几何意义上推出。
利用牛顿迭代公式,由k x 得到1+k x ,从几何图形上看,就是过点))(,(k k x f x 作函数)(x f 的切线k l ,切线k l 与x 轴的交点就是1+k x ,所以有1)()('+-=k k k k x x x f x f ,整理后也能得出牛顿迭代公式:)(')(1k k k k x f x f x x -=+。
牛顿迭代法
定理(牛顿局部收敛定理)设有方程f ( x) = 0
(1)设f ( x)在根x*邻域内有连续二阶导数; (2)且设f ( x* ) = 0, 但f ′( x* ) ≠ 0. 则存在x*的一个领域S={x x* − x ≤ δ },使得∀x0 ∈ S , 由牛顿法产生的序列{ xn } 收敛于x*,且有 x* − xn−1 f ′′( x* ) lim * =− 2 n →∞ ( x − x ) 2 f '( x* ) n
误差关系式
xn+1 − x
*
=
f ′′(ξ ) * 2 ( x − xn ) 2 f '( xn )
4.2 牛顿法的局部收敛性
定义 若存在ϕ x)的不动点x*的一个邻域S={x x* − x ≤ δ }, (
∀x0 ∈ S,不动点迭代法xn+1 =ϕ xn )产生的序列{ xn } 收敛于x*, ( 就称x*的迭代法xn+1 =ϕ xn )局部收敛. (
f ( x) = 0
近似于 f ( x n ) + f ' ( xn ) ( x − x n ) = 0
解出 x 记为 xn+1,则
xn+1 = xn −
f ( xn ) f ' ( xn )
xn + 1
(n = 0,1,2,L)
(2.1)
2.Newton迭代法的几何意义 2.Newton迭代法的几何意义
t的 选 取 方 式
1 1 1 按 t = 1, , 2 , 3 , 的 顺 序 L 2 2 2
直到 | f ( xk + 1 )| | f ( xk )|成立为止 <
4.5重根情形 重根情形
研究生数值分析(5)牛顿(Newton)迭代法
解:对于简单迭代法,由
x* xk 1 g ( x* ) g ( xk ) g ' ( k )( x* xk )
( k 在xk 与x*之间)
当迭代过程收敛,且 有
lim
k
g ' ( x)
连续时,
x* xk 1 x* xk
lim g ' ( k ) g ' ( x)
满足定理5条件,牛顿迭代公式收敛。 事实上,由迭代公式可得
1 xk 1 c ( xk c )2 2 xk
1 xk 1 c ( xk c ) 2 2 xk
两式相除得到 由此递推可得 令 r0 解得
x0 c x0 c
xk 1 c xk 1 c
(
xk c xk c
'
,上式解为
x xk
f ( xk ) f ' ( xk )
于是方程 f(x)=0的新的近似根xk+1,可由牛顿 迭代公式
f ( xk ) xk 1 xk ' f ( xk ) k 0,1, 2,
求出 牛顿迭代公式具有明显的几何意义。 方程
( xk , f ( xk ))
y f ( xk ) f ' ( xk )( x xk )
)2
2k
,
xk c xk c
(
x0 c x0 c
)
,于是
r02
k
xk c xk c
r
2k 0
xk c 2 c
1 r
2k 0
对任意 x0 (0, ) ,总有 r0 1
,
所以当 k 时,xk c
牛顿迭代法
2.牛顿迭代法的几何解析
在 x0 处做曲线的切线,切线方程为
y f (x0 ) f (x0 ) f ' (x0 )(x x0 )
令 y 0可得切线与 x 轴的交点坐标
x1 x0
f (x0 ) f ' (x0 )
,这
就是牛顿迭代法的迭代公式。因此,牛顿法又称“切线
法”。
y
y f (x)
n=0;eps=1.0e-5;
x=0.5;
while abs(x-0.625*exp(-x)-0.375*x)>eps
x=0.625*exp(-x)+0.375*x;n=n+1;
end
x,n 结果为0.5671,n=3,说明迭代三次后达到精度要求。
练习5 对练习中方程
,用加快后的迭代格式
x ex
h(x) g(x) xg ' (x) 求x=0.5附近的根,精确到10-5 1 g'(x)
o
x2 x1 x0
x
牛顿迭代法
3.牛顿迭代法的收敛性
计算可得 g'(x)
f (x) f ''(x) [ f ' (x)]2
,设 x* 是 f (x) 0 的单根,
有 f ' (x*) 0 ,f (x*) 0 则
g' (x*)
f (x* ) f '' (x* ) [ f ' (x* )]2
x=x-(x*exp(x)-1)/((x+1)*exp(x)) end 可得迭代数列前6项为1.0000 ,0.6839, 0.5775
0.5671,0.5671,说明迭代实收敛的。 如果取初值为10,相应的MATLAB代码为 clear; x=10.0; for i=1:20
牛顿迭代法算法
牛顿迭代法算法
牛顿迭代法,又称牛顿-拉夫逊方法,是一种用来近似求解方程根的迭代算法。
该算法以牛顿的差商公式为基础,通过不断迭代逼近方程的根。
假设我们要求解方程 f(x)=0 的根,其中 f(x) 是一个连续可微的函数。
牛顿迭代法的步骤如下:
1. 选择一个初始近似根 x0;
2. 计算初始点处的函数值 f(x0) 和导数值 f'(x0);
3. 使用牛顿迭代公式 x1 = x0 - f(x0)/f'(x0) 计算下一个近似根;
4. 如果 |x1 - x0| 小于某个给定的精度要求,即达到所需精度,停止迭代并输出结果 x1 作为方程的近似根;
5. 否则,令 x0 = x1,返回步骤 2 继续迭代。
牛顿迭代法的思想是通过逐步改进初始近似根,使其逐渐接近真实根。
算法的收敛性与初始近似根的选择有关,通常需要合理选择初始点以确保算法的稳定性和快速收敛。
该算法被广泛应用于优化、数值分析、物理学等领域,具有较高的收敛速度和准确性。
牛顿迭代法的主要优势是可以求解高阶多项式方程以及非线性方程等复杂问题。
需要注意的是,牛顿迭代法也存在收敛速度慢、可能陷入局部最小值等缺点。
在实际应用中,需要根据具体问题来选择合适的求解方法。
牛顿迭代法.
牛顿迭代法李保洋数学科学学院信息与计算科学学号:060424067指导老师:苏孟龙摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较.关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学;九章算术;Duffing方程;非线性方程;收敛速度;渐进性0 引言:迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法.迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况:(1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制.(2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败.所以利用迭代算法解决问题,需要做好以下三个方面的工作:1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量.2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成.3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件.1牛顿迭代法:牛顿迭代法(Newton method)又称为牛顿-拉夫逊方法(Newton-Rapfson method ),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难甚至不可能,从而寻找方程的近似根就显得特别重要.方法使用函数()f x 的泰勒级数的前面几项来寻找方程()0f x =的根.牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程()0f x =的单根附近具有平方收敛性,而且该法还可以用来求方程的重根、复根.另外该方法广泛用于计算机编程中:解非线性方程()0f x =的牛顿(Newton )法是把非线性的方程线性化的一种近似方法.把()f x 的0x 点附近展开泰勒(Taylor )级()()()()()()''20'00002!f x f x f x f x x fx x x =+-+-+;取其线性部分作为非线性方程()0f x =的近似方程,则有:()()()'0000f x f x x x +-=;设()'00f x ≠,则其解为:()()0'100f x x x f x =-;再把()f x 在1x 附近展开泰勒(Taylor )级数,也取其现行部分作为()0f x =的近似方程.若()'10f x ≠,则得:()()1'211f x x x f x =-;这样,得到牛顿(Newton )法的一个迭代序列:()()'1n n n n f x x x fx +=-;牛顿迭代有十分明显的几何意义,如图所示:当选取初值0x 以后,过()()00,x f x 做()f x 的切线,其切线方程为:()()()'000y f x f x x x -=-;求此切线方程和x 轴的交点,即得:()()'1000x x f x f x =-;牛顿法正因为有这一明显的几何意义,所以也叫切线法. 例:用牛顿法求下面方程的根()32210200f x x x x =++-=; 解:因()'23410f x x x =++,所以迭代公式为:()()3221210203410n n x x x x x x x +=-++-++;选取01x =计算结果列表:从结果可以看出,牛顿法的收敛是很快的,5x 误差1510-.但用牛顿法计算工作量比较大,因每次计算迭代除了计算函数值外还要计算微商值.为此我们提出了简化牛顿法:其公式为()()'10n n n x x f x f x +=-;用上面的公式计算,不再需要每步重新计算微商值,所以计算量小一些,但收敛也要慢一些.为了避免计算导数还可以采用差商代导数的方案:()()()()111n n n n n n n f x x x x x f x f x +--=---;关于牛顿迭代的收敛有下面结果:如果()f x 在零点附近存在连续的二阶微商,ξ是()f x 的一重零点,且初始0x 充分接近于ξ,那么牛顿迭代是收敛的,且有()()()2'''1/2n n x f f x ξξξξ+-≈•-;这表明牛顿法是二阶收敛的(平方收敛的).最后考虑()f x 是多项式的特殊情况,此时()f x ,()'f x 在某个x 值,比如x c =时的计算可用综合除法.设 ()111n n n n f x ax a x a x a +-=+++,除以x c -,得商()q x ,余r :()()()f x q x x c r =-+; (1) 其中:()120121n n n n q x b x b x b x b ----=++++;()n r b f c ==;比较(1)式两边k x 的系数便知这些k b 可以按下表进行:这一过程其实就是秦九韶算法,计算多项式值的嵌套算法:()()()()121n n f c aa c a c c a c a -=+++++;每个括号的值就是这里的0n b b .至于导数的计算,注意到(1)式可得:()()()()''f x q x q x x c =+-;于是:()()'f c q c =;因此再对0n b b 进行上述过程,或者再用一次秦九韶算法即可.2一种修正的牛顿迭代法:给出了牛顿迭代法的一种修正形式,并证明了当1/2r ≠时修正的牛顿迭代法是二阶收敛的,当参数1/2r =时是三阶收敛的,数值实验表明,与经典牛顿迭代法相比,该修正牛顿迭代法具有一定的优势.众所周知,数值求解非线性方程()0f x =的根的方法很多.经典的牛顿迭代法是非线性方程组求根的一个基本方法,它二次收敛到单根,线性收敛到重根.牛顿法因收敛速度快而得到广泛应用,也倍受学者的重视,近年来很多文献中提出各种改进的牛顿方法.文献[8]中利用Newton 迭代法和微分中值定理“中值点”的渐进性,提出了一种多点迭代法.设()f x 满足下述条件:()[]2,f x c a b ∈,()()0f a f b <; ()'0f x ≠, ()''f x 在[,]a b 上保号. (A)根据微分中值定理,存在(,)a b ξ∈,使得:()()()'f b f a f b a ξ-=-,而1lim 2b a a b a ξ→-=-.因此,当b 与a 的距离无限接近时有:()12a b a ξ≈+-.也就是说,在区间(,)a b 不甚大时,中值点ξ一定在其渐近位置 ()12a b a ξ≈+-附近,并随区间变小而趋于其渐近位置.图所示迭代法构造图本方案基于上述考虑,给出一种通过迭代点选取另一个点,利用两个点进行迭代求近似根的新方法.这种方法虽然在迭代中又只利用了一个其它点,但其计算精度却相当高,它的某一种特殊情形恰是通常的Newton 迭代法.为了更加直观起见,我们通过几何直观图来构造这种迭代法.设()f x 满足条件(A ),当选定初值0x(仅要求()()"00f x f x ⋅>),如图所示,作交点的切线交x 轴于B ()()00'0,0f x x f x ⎛⎫- ⎪ ⎪⎝⎭,AQ 线段的斜率为:()()()()()000'0000'0f x f x f x f x f x x x f x ⎛⎫-- ⎪⎝⎭⎛⎫-- ⎪⎝⎭.由微分中值定理知,存在()()000'0,f x x x f x ξ⎛⎫∈- ⎪ ⎪⎝⎭使得:()()()()()()000'0'0000'0f x f x f x f x f x f x x x f x ⎛⎫-- ⎪⎝⎭=⎛⎫-- ⎪⎝⎭;而()()()()0000''0012f x f x x x f x f x ξ⎛⎫≈-+- ⎪ ⎪⎝⎭,因此,我们取数1,12r ⎛⎫∈ ⎪⎝⎭,在点()()()()()()0000''001,1f x f x P x r f x r f x f x ⎛⎫⎛⎫---- ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭作切线PC ,图中AD 平行于PC .即用点P 的导数()()()0'0'01f x f x r f x ⎛⎫-- ⎪ ⎪⎝⎭代替点A 的导数,而仍用点A 的迭代格式得到点D 的坐标()()()()00'00'0,01f x D x f x f x r f x ⎛⎫ ⎪⎪- ⎪⎛⎫⎪-- ⎪ ⎪⎝⎭⎝⎭;重复上述过程,得到多点迭代公式()()()()1''1k k k k k k f x x x f x f x r f x +=-⎛⎫-- ⎪⎝⎭; (2)其中[,]k x a b ∈,1,2,3,k =.下面我们对上述事实,从理论上加以严格证明.定理 设()f x 满足条件(A ),则由多点迭代公式(1)产生的序列{n x }必收敛于[,]a b 上的唯一a ,这里[],n x a b ∈,()0f a =.证明 函数()f x 在上连续,由连续函数根的存在定理,从()()0f a f b <知道()f x 在[],a b 上根存在,又由条件()'0f x ≠及()''f x 保号知道,()'f x 在[],a b 上不变号,故()f x 在[],a b 上是单调函数,因此()f x 在[],a b 上根a 存在且唯一.由定理条件曲线()y f x =可有如下四种不同情况:(1) ()()()"0,0,0f a f b f x <>>,则()'f x 单调上升,()()''0f a f b >; (2) ()()()"0,0,0f a f b f x <>>,则()'f x 单调下降,()()''0f a f b >;(3) ()()()"0,0,0f a f b f x ><>,则()'f x 单调上升, ()()''0f a f b <; (4) ()()()"0,0,0f a f b f x ><<,则()'f x 单调下降,()()''0f a f b <. 通过对自变量的变号或对函数的变号可将四种情况归结为一种情况,所以我们只需对情况(一)证明迭代过程(1)收敛就可以了.若初值[]0,,,n x a b x a ∈>所以()00f x >,故有()()()()0100'00'01f x x x x f x f x r f x =-<⎛⎫-- ⎪⎝⎭;()()()()()()()()()()()()()()()''0001000'''000000'''000111f x f a f x a f x a x x x x f x f x f x f x r f x r f x r f x f x f x ξξ+--=-=-=-⎛⎫⎛⎫⎛⎫------ ⎪⎪⎪⎝⎭⎝⎭⎝⎭;一方面,()0.a x ξ∈,且()()'00f x f x a =-.下证()()()()0''0'01f x f x f x r f x ⎛⎫<-- ⎪ ⎪⎝⎭.若()()()()0''0'01f x f x f x r f x ⎛⎫>-- ⎪ ⎪⎝⎭,由()'f x 的单调性有,x ,()()()00'01f x x r f x ξ--<,又因为()()()()()0000''001f x f x x r x f x f x -->-,因此有()()()0''0'0f x f x f f x ξ⎛⎫-< ⎪ ⎪⎝⎭,与Newton 迭代法的收敛性矛盾.由(一)的假设及()()()()0''0'01f x f f x r f x ξ⎛⎫<-- ⎪ ⎪⎝⎭可得: ()()()()()()'01000'00'01f x a x x x x a a f x f x r f x ξ-=->-=⎛⎫-- ⎪⎝⎭;一般地,若n x a =,同样可以证明由式(2)得到的1n x +满足1n n a x x +<<.所以由式(1)产生的迭代序列{n x }单调下降且有下界.依极限理论必有极限.对式(2)两边取极限,由极限理论可以求得()'0f a =.再由()'0f x ≠,[],n x a b ∈,可知函数方程()0f x =在[],a b 上的根是唯一的,因此有'a a =.当1r =时,式(2)即为Newton 迭代公式.本文给出的这种多点迭代方法不仅可以被广泛应用于方程的近似求根,更重要的是它为人们提供了一种新的迭代思想,拓宽人们在方程近似求根方面的思路.例 计算()3250f x x x =--=在(2,3)区间内的一个实根.我们已知()0f x =有一个精确到十二位有效数字的实根 2.09455148154a =. 取03x =,以Newton 迭代法计算(记作1n x ),取03x =, 12r =以式(1)计算(记作2n x ),其结果列表如表1.行三次迭代就已得满足精度要求的值了,而Newton 迭代法需迭代5次才可得到满足精度要求的值.式(2)可以被广泛应用,特别是编成数学软件后,用计算机求解方程近似根效果会更加显著.3另外一种牛顿迭代法的修正:Newton 迭代法是方程求根的一种简单而直观的近似方法,但在实际运用中,我们常常觉察到,这种方法仅仅是利用了迭代点及该点的导数值,而没有充分利用其他点及其导数值.是否存在可利用的点,这些点我们应怎样确定.文[1]给出了一种方法,但这种方法求根的关键在适当地选取0x 和r 或n r .选取不适当,就会出现某次迭代的值不是迭代序列中的值.因此,我们会问这些值特别是0x 能否不依靠人为选取,而通过迭代点来选取,本文将利用Newton 迭代法和微分中值定理“中值点”的渐近性,来寻找除迭代点以外的可利用点,给出一种多点迭代方法.设()f x 满足下述条件:()[]()()2,,0f x c a b f a f b ∈<;()()'''0,f x f x ≠在[],a b 上保号. (A)根据微分中值定理,存在(),a b ξ∈,使得()()()'f b f a f b a ξ-=-而1lim 2b a a b a ξ→-=-.因此,当b 与a 的距离无限接近时有:()12a b a ξ≈+-.也就是说,在区间(),a b 不甚大时,中值点ξ一定在其渐近位置()12a b a ξ≈+-附近,并随区间变小而趋于其渐近位置.本方案基于上述考虑,给出一种通过迭代点选取另一个点,利用两个点进行迭代求近似根的新方法.设()f x 满足下列条件(A):(1) ()f x 在区间在区间[],a b 上存在二阶导数; (2) ()'f x 在[],a b 上不等于零; (3) ()''f x 在[],a b 上不变号; (4) ()()0f a f b <;为了更为直观,我们通过几何直观图来构造多点迭代法.设()f x 满足条件(A),当选定初值0x (仅要求()()''00f x f x >),如图所示:做A 点的切线交X 轴于B ()()00'0,0f x x f x ⎛⎫- ⎪ ⎪⎝⎭,AQ 线段的斜率为:()()()()()000'0000'0f x f x f x f x f x x x f x ⎛⎫-- ⎪⎝⎭⎛⎫-- ⎪⎝⎭;由微分中值定理知,存在()()000'0,f x x x f x ξ⎛⎫∈- ⎪ ⎪⎝⎭使得: ()()()()()()000'0'0000'0f x f x f x f x f x f x x x f x ⎛⎫-- ⎪⎝⎭=⎛⎫-- ⎪⎝⎭;而()()()()0000''0012f x f x x x f x f x ξ⎛⎫≈-+- ⎪ ⎪⎝⎭,因此,我们取数1,12r ⎛⎫∈ ⎪⎝⎭,在点()()()()()()0000''001,1f x f x P x r f x r f x f x ⎛⎫⎛⎫---- ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭作切线PC ,图中AD 平行于PC .即用点P 的导数()()()0'0'01f x f x r f x ⎛⎫-- ⎪ ⎪⎝⎭代替点A 的导数,而仍用点A 的迭代格式得到点D 的坐标()()()()00'0',01k k f x D x f x f x r f x ⎛⎫ ⎪⎪- ⎪⎛⎫ ⎪-- ⎪ ⎪⎝⎭⎝⎭; (3)主要对(3)式的分子()k f x 用()k f x 与()()()()''1k k k k k f x f x f x f x r f x ⎛⎫ ⎪⎪- ⎪⎛⎫⎪-- ⎪ ⎪⎝⎭⎝⎭的和代替,这样就得到新的迭代公式:()()()()()()()()''1''11k k k k k k k k k k k f x f x f x f x f x r f x x x f x f x r f x +⎛⎫ ⎪⎪+-⎪⎛⎫ ⎪-- ⎪ ⎪⎝⎭⎝⎭=-⎛⎫-- ⎪⎝⎭; (4) 如果令 ()()()()'1k k f x u x x r f x =--;()()()1'k k k kf x x w x x f u +==-;则: ()()111'k k k f x x x f u x -+-++⎛⎫⎪⎝⎭=-; 从而可知(4)式中迭代函数为:()()()()()()'f w x x w x f w x Φ=-;引理1[5] 对于迭代公式()1k k x x +=Φ,如果p Φ在所求的根*x 的邻近连续并且:()()()()1'*''**0p x x k x +Φ=Φ==Φ=,()()*0px Φ≠,则该公式在*x 的邻近是p 阶收敛的.定理1 设方程()f x 的根为*x ,函数()f x 在*x 的的邻域内有至少四阶连续导数,且()'0f x ≠,则迭代公式(4)在的*x 邻近至少是三阶收敛的.证明 迭代公式(4)的迭代函数为:()()()()()()'f w x x w x f w x Φ=-,其中()()()'k k k f x w x x f u =-,由于方程()f x 的根为*x 所以()*0f x =,从而可知()**w x x =,()'*0w x =;()()()()()()'*'*''*3''*f x u x w x f u x =对()x Φ求导数得:()()()()()()()()()()()()()()()'''''"''''*2''0f w x w x f u x f w x f u x u x x w x x f u x -Φ=-⇒Φ=; 同理可得:()()()()()()'"'"*''*''*0x x x w x w x Φ=Φ⇒Φ=-=.由引理知迭代公式(4)在*x 邻近至少是三阶收敛的.引理2([4]) 假设函数()f x 在区间[],a b 上存在二阶导数,且满足下列条件(1) ()'f x 在[],a b 上不等于零;(2) ()''f x 在[],a b 上不变号;(3) ()()0f a f b <;(4) 设[],x a b ∈,且满足条件()()"0f x f x >;则由Newton 迭代法()()'10n n n x x f x f x +=-得到的序列{}n x 收敛于()0f x =的惟一根*x .定理2 假设函数()f x 在区间[],a b 上存在二阶导数,且满足下列条件(1) ()'f x 在[],a b 上不等于零;(2) ()''f x 在[],a b 上不变号;(3) ()()0f a f b <;(4) 设[],x a b ∈,且满足条件()()"0f x f x >.则由多点迭代公式(4)得到的序列{}n x 收敛于()0f x =的惟一根*x .证明 函数()f x 在[],a b 上连续,由连续函数根的存在定理,从()()0f a f b <知道()f x 在[],a b 上根存在,又由条件()'0f x ≠及()"f x 的保号性知道,()'f x 在[],a b 上不变号,故()f x 在[],a b 上是单调函数,因此()f x 在[],a b 上的根*x 存在且惟一. 由定理条件,曲线()y f x =可有如下四种不同情况:(a) ()()()"0,0,0f a f b f x <>>,则()'f x 单调上升,()()''0f b f a ≥>;(b) ()()()"0,0,0f a f b f x <><,则()'f x 单调下降,()()''0f a f b ≥>;(c) ()()()"0,0,0f a f b f x ><>,则()'f x 单调上升,()()''0f a f b ≥<;(d) ()()()"0,0,0f a f b f x ><<,则()'f x 单调下降,()()''0f b f a ≥<.通过对自变量的变号或对函数的变号可以将四种情况归结为一种情况,所以我们只需对其中一种情况证明迭代过程(4)是收敛的就可以了.下面仅就情况(a)证明定理2,其余情况的证明类似.对情况(a)来说此时()0f x =在[],a b 上的根存在且惟一,且()f x 在[],a b 上单调递增.首先证明,对任何初始近似()*,x x b ∈,由迭代公式(4)求出的逐次近似k x 都属于()*,x b ,并且单调递减. 事实上,由引理2的证明我们可知,只要()()()()()*'1,k k k k f x u x x r x b f x =--∈,就有()*1,k x x b -+∈,即()1k k k x u x x -+<<,再由(3)式得11k k x x -++<,另一方面(3)式可化为: ()()()()()()()()()*''1*****11111'''1k k k k k k k k k f x f x f f x x x x x x x x x x f u x f u x f u x ξξ-+----+++++⎛⎫- ⎪⎛⎫⎛⎫⎛⎫⎝⎭-=--=---=-- ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭; 其中()()**11,,k k x x x u x ξ-+⎛⎫∈⊂ ⎪⎝⎭.由()'f x 单调递增且()'0f x >知()()()''1k f f u x ξ<,故*10k x x -+->因而由(4)式产生的序列{}n x 单调递减并有下界,故lim n n x →∞存在.设lim n n x x -→∞=,(4)式两边当k →∞时求极限得: ()()_____'_'____'_'101f x f x f x f x f x r f x x x f x f x r f x ⎛⎫ ⎪ ⎪ ⎪⎛⎫ ⎪ ⎪⎛⎫⎝⎭ ⎪+- ⎪⎛⎫⎛⎫⎝⎭ ⎪ ⎪ ⎪ ⎪⎝⎭ ⎪-- ⎪⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭=-=⎛⎫⎛⎫ ⎪ ⎪⎝⎭ ⎪--⎛⎫ ⎪ ⎪ ⎪⎝⎭⎝⎭; ()()_____'_'__'_'11f x f x f x f x f x r f x f x f x r f x ⎛⎫ ⎪ ⎪ ⎪⎛⎫ ⎪ ⎪⎛⎫⎝⎭ ⎪+- ⎪⎛⎫⎛⎫⎝⎭ ⎪ ⎪ ⎪ ⎪⎝⎭ ⎪-- ⎪⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫ ⎪ ⎪⎝⎭ ⎪--⎛⎫ ⎪ ⎪ ⎪⎝⎭⎝⎭; 可知 ()_____'_'01f x f x f x f x f x r f x ⎛⎫ ⎪ ⎪ ⎪⎛⎫ ⎪ ⎪⎛⎫⎝⎭ ⎪+-= ⎪⎛⎫⎛⎫⎝⎭ ⎪ ⎪ ⎪ ⎪⎝⎭ ⎪-- ⎪⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭; ()()___*__'_',,1f x x x x b f x f x r f x ⎛⎫ ⎪⎝⎭-∈⎛⎫⎛⎫ ⎪ ⎪⎝⎭ ⎪--⎛⎫ ⎪ ⎪ ⎪⎝⎭⎝⎭,()f x 在[],a b 上单调递增,且()*0f x =所以:()_____'_'0,01f x f x f x f x f x r f x ⎛⎫ ⎪ ⎪ ⎪⎛⎫ ⎪ ⎪⎛⎫⎝⎭ ⎪=-= ⎪⎛⎫⎛⎫⎝⎭ ⎪ ⎪ ⎪ ⎪⎝⎭ ⎪-- ⎪⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭;因此得:*x x -=. 本方法代方法比Newton 和文[4]的迭代法的收敛速度明显要快,而且对于1,12r ⎡⎤∈⎢⎥⎣⎦,r 越大效果越差!对于例1,用MATLAB 程序运算格式(4),当12r <时,在*0k x x →=之前迭代格式会产生负值.所以,格式(4)的收敛速度和r 的选取有关. 对于定理2中的四个条件,在MATLAB 中通过简单的程序即可验证.4 中国古代算法盈不足术与牛顿迭代算法的比较:首先介绍 盈不足术 九章算术中的第七章是盈不足术,这是求解方程的一种最古老的方法.为了说明该方法的基本思想,我们考虑该章的第一个例子:今有共买物,人出8,盈3;人出7,不足4,问人数、物价各几何?其求解过程为(见图1):(1) 把出率(8)和(7)放在第一行;(2) 把盈数(3)和不足数(4)放置在出率下面;(3) 计算维积(交差积)得(32)和(21),得和为(53);(4) 盈减去不足数为431-=;(5) 从而得物价为53531=; 用现代数学的观点,盈不足术可表示为:设1x 和2x 为两个近似物价,1R 和2R 分别表示为盈或不足数,则物价为:211212x R x R x R R -=-;人数为1212R R y x x +=-;正如白尚恕[7]指出的那样,在隋唐(581~618年AD )盈不足术在中东被广泛流传,最早的阿拉伯算术书是由al-Khowarizmi 在公元825年写的,英文中的算术一词(algorithm)来自他的名字,他应该对九章算术和其他古代中国巨著很了解,并把盈不足术称为中国方法.Khitai 指China ,类似的写法有Khatai ,Chatayn ,Chataain 等等.普遍认为中国算法是通过古代著名的意大利数学家Leonardo Fibonacci(1170?~1250?年)传给西方的,据记载Fibonacci 随他父亲周游了埃及、西西里、希腊和叙利亚,这次周游使他接触了东方和阿拉伯的计算方法.在1202年,即他回家后不久他就出版了著名的《算经Liber Abaci 》.该书也介绍了盈不足术,并把这种方法称为中国规则,这个名字来自中东,在那里中国算法称为Hisabl-Chatin ,里Chation 指China 该书中的一些例子和算法和中国古代数学巨著完全一样.如在4世纪的孙子算经:今有物不知其数,三三数之胜二,五五数之胜三,七七数之胜二,问物几何?该问题的解题方法就是数论中的中国余数定理:在Fibonacci 的《算经》中阿拉伯语DeRegulisel-Chatavn 被译成拉丁文DuarumFalsdrumPosicionumRegula 所以在西方这种方法被称作双假定方法,这实际上是九章算术中的盈不足术,即中国算法,它起源于中国是毫无疑问的,这正如钱宝琮[8]指出的那样可惜的是很多西方人认为这种方法起源于印度,并被阿拉伯人所掌握所以本作者强烈建议把双假设法改称为中国算法或中国方法.中国算法与牛顿迭代算法考虑方程()'0f x =设12,x x 为方程的两个近似解,于是我们得残量()1f x 和()2f x 应用中国算法,我们可得()()()()2112312x f x x f x x f x f x -=-; (5) 在九章算术中给出了在下列情况下的一些不等式:(1)双盈,即()10f x >和()20f x >(2)双亏,即()10f x <和()20f x <;(3)一盈一亏,即()()120f x f x ⋅<;上述算法可以根据不等式的性质确定更合适的两个数()12,x x 或()23,x x ,再进行计算定更精确的近似解,为了与牛顿迭代算法比较,我们把(5)写成如下形式:()()()()()()()()2112112311212x f x x f x f x x x x x f x f x f x f x --==---; 如果引入导数()'1f x ,它定义为()()()12'112f x f x f x x x -=-;那么我们马上可得:()()11'1f x x x f x =-; 这就是著名的牛顿迭代法,当两个近似值1x 和2x 位于真解的两侧时,即()()120f x f x ⋅<,中国算法比牛顿迭代算法具有很大的优势,牛顿迭代算法可以更进一步的优化发展,可参考文献[10,11].中国算法的改进:中国算法可以看成是通过两个近似解的线性近似方法,见图2为了提高中国算法的精度,我们用三点()123,,x x x ,而不用两点()12,x x ,用抛物线拟合该曲线,我们得近似解为:()()()()()()123213321121321233231x f f x f f x f f x f f f f f f f f f f f f =++------; 式中()i i f f x =;综合概述:迭代算法是一种用途非常广泛的方法,本文不仅介绍了这个方法很好的诠释这个方法, 而且做了牛顿迭代法的两种修正,更做了牛顿迭和与中国古代算法的比较,不仅试读者更好理解了这个方法,更开阔了读者的视野,使读者更能留下研究的空间.参考文献:[1] 徐萃薇,孙绳武.计算方法引论(第三版)[M].北京:高等教育出版社,2007.[2] 龙爱芳.避免二阶导数计算的迭代法[J].浙江工业大学学报,2005, 33(5):602~604.[3] 李庆扬,王能超.数值分析[M].武汉:华中科技大学出版社,1986.[4] 张新东,王秋华.避免二阶导数计算的Newton迭代法的一个改进[J].山东大学学报,2007,42(7):72~76.[5] 何吉欢.盈不足术与牛顿迭代算法的比较[J].应用数学和力学,2002,23(12):1256~1259.[6] 王晓峰.一种修正的牛顿迭代法[J],2010,33(1)长春理工大学学报,178~179.[7] 白尚恕.九章算术注释[M].北京:科学出版社,1983.[8] 钱宝琮.中国数学史[M].北京:科学出版社,1992.[9] 陈新一.一种多点迭代方法[J].甘肃教育学报(自然科学版),2001,15(1):13~16.[10]HeJi-huan.Improvement of Newton interation menthod [J].International Journal of Nonlinear Science and Numerical Simulation 2000,1(3):239~240.[11]HeJi-huan.Newton-like iteration menthod for solving algebraice quations[J]. Communication NumSimulation,1998,3(2):106~109Newton iterationLI Bao YangMathematical Sciences Information and Computing Science NO:060424067Instructor :SU MenglongSummary:In the 17th century,Newton introduced a method of solve equations approximately in real number domain and complex domain,that is Newton Iteration,a process of recursion new value constantly with the old value of variable. Correspond with the Iterative Method is A Direct Method or as A Solution,that is a one-time problem solving. Iteration is divided into exact iterative and approximate iterative. "Newton Iterative Method" is belong to approximate iterative methods. This article mainly focuses on the Newton Iteration. The main contents of this article include the discovery,evolution and amendment process of this methods; an improve of avoiding calculating Newton Iteration with second-order derivative; the comparison of the Chinese ancient algorithm---Yingbuzu Method and Newton Iterative Algorithms. Keywords: Newton Iterative Algorithm; approximate solution; order of convergence; numerical experimentation; Arithmetic in Nine Section ; Duffing Equation; Nonlinear equations; Convergence rate; Progressive。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一 牛顿法及其收敛性
牛顿法是一种线性化方法,其基本思想是将非线性方 程 f ( x) 0逐步归结为某种线性方程来求解. 设已知方程 f ( x) 0 有近似根 xk(假定 f ( xk ) 0), 将函数 f ( x) 在点 xk 展开,有
f ( x) f ( xk ) f ( xk )( x xk ),
x
表7 5 计算结果 k 0 1 2 3 xk 0.5 0.57102 0.56716 0.56714
5
二 牛顿法应用举例 对于给定的正数 C,应用牛顿法解二次方程
x 2 C 0,
可导出求开方值 C 的计算程序
xk 1 1 C ( xk ). 2 xk
(3.5)
这种迭代公式对于任意初值 x0 0 都是收敛的. 事实上,对(3.5)式施行配方手续,易知
10
在(3.7)中取C
1 ,则称为简化牛顿法,这 f ( x0 )
类方法计算量省,但只有线性收敛,其几何意义是用平行 弦与 x 轴交点作为 x *的近似. 如图7-4所示.
图7-4
11
(2)
牛顿下山法.
牛顿法收敛性依赖初值 x0的选取. 如果x0 偏离所求根 x* 较远,则牛顿法可能发散.
xk 1 xk 1 1 C ( xk 2 xk C 1 ( xk 2 xk C )2 ; C )2 .
6
以上两式相除得
xk 1 xk 1 xk C x C k C . C
2
据此反复递推有
xk 1 xk 1 x0 C x C 0 C C .
14
x1 17.9,它不满足条件(3.10).
通过 逐次取半进行试算,当 1 / 32时可求得 x1 1.140625 . 此时有 f ( x1 ) 0.656643 ,而 f ( x0 ) 1.384 显然 f ( x1 ) f ( x0 ) . 由 x1 计算 x2 , x3 , 时 1 , 成立. 计算结果如下 :
f ( xk ) f xk 1 p1 ( x) f ( xk ) ( x xk ). xk xk 1
(5.1)
21
因此有
xk 1 f ( xk ) xk ( xk xk 1 ). f ( xk ) f ( xk 1 )
(5.2)
(5.2)可以看做牛顿公式
k
15
四 重根情形 设 f ( x) ( x x*)m ( x),整数 m 2, ( x*) 0 ,则 x *为方程 f ( x) 0 的 m 重根,此时有
f ( x*) f ( x*) f
( m 1)
( x*) 0, f
m
( x*) 0.
从而可构造迭代法
xk 1 xk f ( xk ) f ( xk ) [ f ( xk )]2 f ( xk ) f ( xk ) ( k 0,1, ),
(3.14) 它是二阶收敛的. 例7.3.3 方程x 4 4 x 2 4 0 的根 x* 用上述三种方法求根. 解 先求出三种方法的迭代公式:
于是方程 f ( x) 0 可近似地表示为
f ( xk ) f ( xk )( x xk ) 0.
(1)
这是个线性方程,记其根为 xk 1 ,则 xk 1的计算公式为
1
xk 1 xk
f ( xk ) f ( xk )
( k 0,1, ),
(2)
这就是牛顿(Newton)法. 牛顿法的几何解释. 方程 f ( x) 0 的根 x * 可解释为曲线 y f ( x) 与 x 轴 的交点的横坐标(图7-3). 设 xk 是根 x *的某个近似值, 过曲线 y f ( x) 上横坐标为 xk 的点 Pk 引切线,并将该切线与 x 轴的交点的横坐标 xk 1 作为 x * 的新的近似值.
.
用迭代法
f ( xk ) f ( xk ) (k 0,1, )
xk 1 xk m
(3.13)
求 m重根,则具有2阶收敛,但要知道 x *的重数 m .
构造求重根的迭代法,还可令 ( x) f ( x) / f ( x) , 若 x* 是 f ( x) 0 的 m重根,则
例如,用牛顿法求方程
x 3 x 1 0.
(3.8)
在 x 1.5 附近的一个根 x *. 设取迭代初值 x0 1.5,用牛顿法公式
xk 1
3 xk xk 1 xk 2 3 xk 1
(3.9)
x3 1.32472.
计算得
x1 1.34783, x2 1.32520,
xk 1 xk f ( xk ) f ( xk ) xk xk 1
(3.11)
其中 (0 1) 称为下山因子,(3.11)即为
xk 1 f ( xk ) xk f ( xk ) ( k 0,1, ),
(择下山因子时从 1 开始,逐次将 减半进行试 算,直到能使下降条件(3.10)成立为止. 若用此法解方程(3.8),当 x0 0.6 时由(3.9)求得
由于
g ( x)
f ( x) f ( x) . 2 [ f ( x)]
假定 x *是 f ( x) 的一个单根,即 f ( x*) 0, f ( x*) 0 , 则由上式知 g ( x*) 0 ,于是依据可以断定, 牛顿法在根 x * 的邻近至少是平方收敛的.
3
又因
ek 1 ekp
例7.3.1 解
用牛顿法解方程
xex 1 0.
(3.4)
这里牛顿公式为
xk 1 xk e x k xk , 1 xk
取迭代初值 x0 0.5 ,迭代结果列于表7-5中.
4
所给方程(3.4)实际上是方程 x e 的等价形式. 若 用不动点迭代到同一精度要迭代28次,可见牛顿法的收敛速 度是很快的.
2k
(3.6)
记
q x0 x0 C , C
整理(3.6)式,得
7
xk
C 2 C
q2
k
1 q
2k
.
对任意 x0 0,总有 q 1,故由上式推知,当 k 时 xk C ,即迭代过程恒收敛. 例7.3.2 求 115. 解 取初值 x0 10,对 C 115 按(3.5)式迭代3次 便得到精度为 10 6 的结果 (见表7-6). 由于公式(3.5)对任意 初值 x0 0 均收敛,并且收 敛的速度很快,因此可取确定 的初值如 x0 1 编成通用程序.
x2 1.36181, x3 1.32628, x4 1.32472,
均能使条件(3.10)
f ( x2 ) 0.1866; f ( x3 ) 0.00667; f ( x4 ) 0.0000086.
x4 即为 x *的近似. 一般情况只要能使条件(3.10)成立, 则可得到 lim f ( xk ) 0 ,从而使 {xk } 收敛.
xk 1
2 xk 2 xk . 4 xk
2 是二重根,
(1) 牛顿法
18
(2) 用(3.13)式
xk 1
2 xk 2 xk . 2 xk 2 xk ( x k 2) xk . 2 xk 2
(3) 用(3.14)式 xk 1
取初值 x0 1.5,计算结果如表7-7.
迭代3次得到的结果 x3 有6位有效数字.
12
但如果改用 x0 0.6 作为迭代初值,则依牛顿法公式 (3.9)迭代一次得
x1 17.9.
这个结果反而比 x0 0.6 更偏离了所求的根 x* 0.32472 . 为了防止迭代发散,对迭代过程再附加一项要求,即 具有单调性:
f ( xk 1 ) f ( xk ) .
表7 6 计算结果 k 0 1 2 3 4 xk 10 10.750000 10.723837 10.723805 10.723805
8
三 简化牛顿法与牛顿下山法
牛顿法的优点 收敛快,
牛顿法的缺点 每步迭代要计算 f ( x ) 及 f ( x ) ,计算量较大 k k 且有时 f ( xk ) 计算较困难, 二是初始近似 附近才能保证收敛, x0只在根x * 一
表7 7 三种方法数值结果 k 1 2 3 xk x1 x2 x3 方法( 1 ) 1.458333333 1.436607143 1.425497619 方法(2) 1.416666667 1.414215686 1.414213562 方法(3 ) 1.411764706 1.414211438 1.414213562
如 x0 给的不合适可能不收敛.
9
为克服这两个缺点,通常可用下述方法. (1) 简化牛顿法,也称平行弦法.
xk 1 xk Cf ( xk )
其迭代公式为 (3.7)
C 0,1 ,.
迭代函数 ( x) x Cf ( x). 若在根 x * 附近成立 ( x) 1 Cf ( x) 1 ,即取 0 Cf ( x) 2,则迭代法(3.7)局部收敛.
满足这项要求的算法称下山法.
(3.10)
将牛顿法与下山法结合起来使用,即在下山法保证函 数值稳定下降的前提下,用牛顿法加快收敛速度. 将牛顿法的计算结果
13
xk 1 xk
f ( xk ) f ( xk )
与前一步的近似值 xk 适当加权平均作为新的改进值
xk 1 xk 1 (1 ) xk ,
只要 f ( xk ) 0仍可用牛顿法(3.2)计算,此时迭代函数
g ( x) x f ( x) f ( x)