牛顿迭代法

合集下载

牛顿迭代法

牛顿迭代法
建立迭代公式
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 牛顿迭代法的收敛性

第三节 牛顿迭代法

第三节 牛顿迭代法
10.4 牛顿迭代法
一 牛顿法及其收敛性
牛顿法是一种线性化方法,其基本思想是将非线性方 程 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)迭代法

研究生数值分析(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’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。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.4 牛顿迭代法
一 牛顿法及其收敛性
牛顿法是一种线性化方法,其基本思想是将非线性方 程 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)
相关文档
最新文档