推导牛顿迭代法
- 格式:doc
- 大小:20.00 KB
- 文档页数:1
一、引言在数值计算中,求解非线性方程是一项常见的任务。
牛顿迭代法是一种常用且有效的方法,它通过不断逼近函数的零点来求解方程。
而在MATLAB中,我们可以利用其强大的数值计算功能来实现牛顿迭代法,快速求解各种非线性方程。
二、牛顿迭代法原理与公式推导1. 牛顿迭代法原理牛顿迭代法是一种利用函数的导数信息不断逼近零点的方法。
其核心思想是利用当前点的切线与x轴的交点来更新下一次迭代的值,直至逼近方程的根。
2. 公式推导与迭代过程假设要求解方程f(x)=0,在初始值x0附近进行迭代。
根据泰勒展开,对f(x)进行一阶泰勒展开可得:f(x) ≈ f(x0) + f'(x0)(x - x0)令f(x)≈0,则有:x = x0 - f(x0)/f'(x0)将x带入f(x)的表达式中,即得到下一次迭代的值x1:x1 = x0 - f(x0)/f'(x0)重复以上过程,直至达到精度要求或者迭代次数上限。
三、MATLAB中的牛顿迭代法实现1. 编写函数在MATLAB中,我们可以编写一个函数来实现牛顿迭代法。
需要定义原方程f(x)的表达式,然后计算其一阶导数f'(x)的表达式。
按照上述推导的迭代公式,编写循环语句进行迭代计算,直至满足精度要求或者达到最大迭代次数。
2. 调用函数求解方程在编写好牛顿迭代法的函数之后,可以通过在MATLAB命令窗口中调用该函数来求解具体的方程。
传入初始值、精度要求和最大迭代次数等参数,即可得到方程的近似根。
四、牛顿迭代法在工程实践中的应用1. 求解非线性方程在工程领域,很多问题都可以转化为非线性方程的求解问题,比如电路分析、控制系统设计等。
利用牛顿迭代法可以高效地求解这些复杂方程,为工程实践提供了重要的数值计算手段。
2. 优化问题的求解除了求解非线性方程外,牛顿迭代法还可以应用于优化问题的求解。
通过求解目标函数的导数等于0的方程,可以找到函数的极值点,从而解决各种优化问题。
牛顿迭代法(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矩阵的负特征值仍然相对接近零,效果就会很好。
迭代法-⽜顿迭代法迭代法在程序设计中也是⼀种常见的递推⽅法,即:给定⼀个原始值,按照某个规则计算⼀个新的值,然后将这个计算出的新值作为新的变量值带⼊规则中进⾏下⼀步计算,在满⾜某种条件后返回最后的计算结果;⽜顿迭代法是⽤于多项式⽅程求解根的⽅法,在只有笔和纸的年代,这个⽅法给了⼈们⼀个⽆限逼近多项式⽅程真实解的重要思路,⽜顿也太⽜了.....求解f(x)=0的解,⽤⽜顿迭代法步骤如下:1、在y=f(x)这个函数上任取⼀点(x0,f(x0)),在这个点上做曲线y=f(x)的切线L,可以计算出切线L的表达式为y=f(x0)+f~(x0)(x-x0),这⾥f~(x0)表⽰L在点(x0,f(x0))处的斜率2、得出了切线L的表达式,我们就可以计算出L与X轴相交点的值x1=x0-f(x0)/f~(x0),此时x1要⽐x0更接近f(x)曲线与x轴相交点的真实值3、将刚才得出的x1带⼊到f(x)函数中,得到点(x1,f(x1)),再在点(x1,f(x1))出做曲线f(x)的切线,同样会得到新的切线的表达式:y=f(x1)+f~(x1)(x-x1),将得出的切线与X周相交,同样会得到相交点的值x2=x1-f(x1)/f~(x1)4、重复以上计算,会得出⼀个计算规则:,这个是真实值的n+1次近似值。
可以如下图近似表⽰。
根据以上描述,设计⼀个求解X~2-C=0的正根的⽅程,X~2表⽰X的平⽅,先得出迭代公式:;设计代码如下:public static void main(String[] args){System.out.println(calculate(2.0,2.0,0,1e-15));System.out.println(calculate(2.0,1e-15));}public static double calculate(double c,double x,double y,double precision){y=(x+c/x)/2;if(Math.abs(x-y)>precision){x=y;y=(x+c/x)/2;return calculate(c,x,y,precision);}return x;}public static double calculate(double c,double precision){double x=c,y=(x+c/x)/2;while(Math.abs(x-y)>precision){x=y;y=(x+c/x)/2;}return 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。
⽜顿法与梯度下降法数学公式推导过程
迭代更新数学公式推导过程
1、⽜顿法
⾸先对于有n个变量的函数的⼀阶导数为:
其次对于其⼆阶导数为:
之后关于⽬标函数的包含⼆阶导数的泰勒展开式为:
这时将看成的函数,则根据函数的最⼩值性质,当偏导数等于0时出取得,从⽽得到,所以,根据等式的特点得到,只有两者都取0时才能使等式等于0,所以得:
(最⼩值)
故⽜顿法的迭代公式为:
2、梯度下降法
在开始推导之前,来介绍⼀下⼀个概念:梯度(当前函数位置的导数),同时它也表⽰某⼀函数在该点处的⽅向导数沿着该⽅向取得较⼤值。
梯度:
之后这⾥给出⼀阶泰勒展开式
由于都是⽮量,则也是⽮量,则根据⽮量与向量的关系,这时我们可以⽤⼀个单位向量V(下⼀步将要变化的⽅向)与标量的乘积来表⽰:,⽽
便是我们所说的步进长度。
这时表达式为:
⼜由我们的⽬的出发,所以可以我们希望通过这个迭代变化使⽐⼩,以此达到最⼩值。
所以由公式,当梯度⽅向与成反⽅向时,能最⼤程度的朝着局部下降的⽅向变化,使取得最⼤值。
根据与的数学关系,这时可以得出与的计算关系:(⼀般情况,单位向量都是正向的)
与
(由于是标量,可以把它与步进长度合到⼀起)
故梯度下降法的迭代公式为:。
牛顿公式推导牛顿公式是被广泛应用于机器学习和人工智能领域的统计方法。
牛顿公式的基本思想是,通过迭代对数据进行函数拟合,以最大化目标函数,获得模型的拟合参数,从而解决回归问题。
本文将介绍关于牛顿公式的基本原理,以及如何使用牛顿公式来解决回归问题。
一、牛顿公式的基本原理牛顿公式是一种迭代算法,它依赖于一系列迭代式更新公式,以便对数据进行函数拟合。
牛顿公式的基本思想是,每次迭代更新,都令目标函数变得更接近真实函数,从而使训练误差尽可能地小化。
首先,假设我们想要拟合的函数是$f(x)$,那么我们需要求$f(x)$的最小值,用来最大化目标函数。
因此,我们可以使用梯度下降法来实现目标函数的最小值。
梯度下降法的基本思想是,每次迭代都令残差变得更接近零,从而更新模型参数,最终获得最优参数。
在牛顿公式中,我们使用牛顿迭代式来更新模型参数。
牛顿迭代式是梯度下降法的一种变形,它引入了牛顿阶段,在每次迭代更新中,先求出残差的二阶导数,然后根据当前参数和二阶导数更新模型参数。
牛顿迭代式的优点在于,它可以更快地收敛到最优参数,而且收敛精度更高。
二、牛顿公式的应用牛顿公式可以被广泛应用于机器学习和人工智能领域,其中,最常用于计算回归模型的参数,以解决回归问题。
首先,假设我们想要使用牛顿公式解决一个回归问题,那么我们需要先计算出特征矩阵$X$和目标值矩阵$y$,其中,$X$是训练数据的输入特征,$y$是训练数据的输出目标值。
然后,我们需要定义一个目标函数$hat{f}$,用于描述我们想要拟合的函数。
接下来,我们就可以使用牛顿公式进行参数拟合了。
首先,我们对目标函数$hat{f}$求导,得到当前的梯度函数$abla hat{f}$,然后求出梯度函数的一阶和二阶导数,并根据这些导数,更新模型参数。
最后,迭代更新模型参数,直到收敛到最优参数,从而获得解决回归问题的模型。
总之,牛顿公式在解决回归问题上是非常有效的。
它可以有效地拟合数据,收敛速度快,收敛精度高,且可以使用少量的内存来实现。
7-18-19-代数方程的牛顿迭代法牛顿迭代法(Newton's method)是一种用于数值求解代数方程的迭代方法,通常用于找到方程的根。
它的基本思想是通过不断逼近方程的根,直到满足某个精度要求。
下面是使用牛顿迭代法求解代数方程的一般步骤:
假设要求解方程 f(x) = 0。
1. 选择一个初始猜测值 x₀,通常选择接近根的值。
2. 计算 f(x₀) 和 f'(x₀),其中 f'(x₀) 是 f(x) 的导数。
3. 计算下一个近似根的值:x₁ = x₀ - f(x₀) / f'(x₀)。
4. 重复步骤 2 和 3,直到满足停止条件,如达到指定精度或经过一定数量的迭代。
数学表示为: xᵢ₊₁ = xᵢ - f(xᵢ) / f'(xᵢ)
这个迭代过程将不断逼近方程的根,直到满足精度要求。
下面是一个示例,假设要解方程f(x) = x² - 4 = 0,其中我们知道根是 x = 2。
我们使用牛顿迭代法来逼近这个根:
1. 初始猜测值 x₀ = 3。
2. 计算 f(x₀) = 3² - 4 = 5 和 f'(x₀) = 2 * 3 = 6。
3. 计算下一个近似根:x₁ = 3 - 5 / 6 = 2.1667。
4. 重复步骤 2 和 3,直到达到所需的精度或迭代次数。
不断迭代,最终我们会得到x ≈ 2,它是方程的根。
请注意,牛顿迭代法的有效性和收敛性取决于初始猜测值的选择,以及方程 f(x) 和它的导数 f'(x) 的性质。
有时可能需要多次尝试不同的初始猜测值来确保收敛到正确的根。
牛顿法是一种用于求解方程的数值解法。
其基本思想是通过迭代的方式,不断逼近方程的根。
下面是牛顿法的推导过程:假设当前迭代的解为x,则根据泰勒展开式,方程f(x) 在点x 处的近似值为:f(x) ≈ f(x0) + f'(x0)(x - x0)其中,x0 为初始点,f'(x0) 为方程在点x0 处的导数值。
将上式带入求解方程f(x) = 0 的条件,得到:f(x0) + f'(x0)(x - x0) = 0化简得:x = x0 - f(x0) / f'(x0)这就是牛顿法的关键步骤——牛顿迭代公式。
迭代过程:选取初始点x0,计算x1 = x0 - f(x0) / f'(x0)。
若|x1 - x0| < ε(ε 为指定的精度),则停止迭代,认为x1 是方程的近似根。
否则,令x0 = x1,重复步骤1。
例如,求解方程f(x) = x² - 3x + 2 = 0 的根,则可以采用如下步骤:选取初始点x0,计算x1 = x0 - f(x0) / f'(x0)。
例如,设x0 = 1,则x1 = x0 - f(x0) / f'(x0) = 1 - (1² - 3 × 1 + 2) / (2 × 1) = 1 - (-2) / 2 = 3 / 2。
判断迭代是否结束。
若|x1 - x0| < ε,则停止迭代,认为x1 是方程的近似根;否则,令x0 = x1,重复步骤1。
以上是牛顿法的推导过程。
在实际应用中,可以根据需要设定合适的初始点x0 和精度ε,进行迭代求解方程的根。
推导⽜顿迭代法推导⽜顿迭代法⽜顿法是⽅程求根的⼀个有⼒⽅法,常常能快速求出其他⽅法求不出或者难以求出的解。
假定有⼀个函数y=f(x),⽅程f(x)=0在x = r 处有⼀个根,对于此根,我们先估计⼀个初始值Xo(可以是猜测的)。
我们现在来得到⼀个更好的估计值X1。
为此x=Xo处作该曲线的切线,并将其延长与x 轴相交。
切线与x轴的交点通常很接近r ,我们⽤它作为下⼀个估计值X1,求出X1后,⽤X1代替Xo。
重复上述过程,在x=X1处作曲线的另⼀条切线,并将其延长⾄与x轴相交,⽤切线的x轴截距作为下⼀个近似值X2……这样继续下去,所得出的这个x轴截距的序列通常迅速接近根r 。
现在再让我们从代数⾓度看上述过程,我们知道,在初始值Xo处,切线的斜率是f'(x),切线⽅程为:y - f(x0) = f '(x0)(x – x0) 在此切线与x轴相交处,有y=0 ,x=x1,因⽽有:0 - f(x0) = f '(x0)(x1 – x0)只要f '(xo)不为0,可解出x1,得:f(x0)x1 = x0 —----------f '(x0)重复该过程,可得下⼀近似值为:f(x1)x2 = x1—----------f '(x1)总结n = 0,1,2,……的情形得出下述结果:⽜顿迭代法:只要f '(xn) ≠0,则有f(Xn)X(n+1) = X(n) —----------f '(Xn)注意:⽜顿法也有不成功的时候,若f(x)⽆根,则,序列不收敛。
另外,⼀些函数图像可能形成随即序列,这就需要其他的辅助条件。
附注:f ' (x)表⽰函数f(x)的导函数,f '(xo)则表⽰函数f (x)在x = xo处的导数。
§2.3-牛顿(Newton)法及其变形2.3 牛顿(Newton )法及其变形一、Newton 迭代方法● 牛顿迭代法计算公式的推导过程设*x 是()0f x =的根,()f x 在*x 的邻域内具有二阶连续导数,在*x 的邻域内取一点0x ,使0()0f x '≠,则()f x 在*x 的邻域内连续,将它在0x 点二阶Taylor展开得又()0f x =,则有故()0f x =的近似解000()()f x x x f x ≈-',记0100()()f x x x f x =-' 类似,在点1x 处Taylor 展开,可得:111()()f x x x f x ≈-',记1211()()f x x x f x =-' 依次往下做,可得一般的迭代格式:上述迭代格式称为求()0f x =的解的牛顿迭代法。
● 几何意义在点00(,())x f x 处作()f x 的切线,交x 轴于一点,求该点的横坐标。
此切线方程为当0y =时,得000()()f x x x f x =-',正是1x 的值。
类似地,在点(,())k k x f x 作函数()f x 的切线,交 x 轴于一点,切线方程为当0y =时,得()()k k k f x x x f x =-',正是1k x +的值。
所以,牛顿迭代法又称为切线求根法。
例6用牛顿迭代法求方程x x e -=在0.5x =附近的根。
解.将原方程化为()0x f x x e -=-=,则牛顿迭代格式为取00.5x =,迭代得与上一节例2-4相比,牛顿法的收敛速度快。
与埃特金法相当.注意:牛顿法的几何意义说明了,迭代初值0x 必须足够接近*x ,否则可能不收敛或收敛与其它的根。
牛顿迭代法的流程图二、Newton 迭代法的变形牛顿法的优点:收敛速度快。
牛顿法的缺点:每次迭代要计算一次导数值'()k f x ,当()f x 表达式复杂或无明显表达式时求解困难。
3.⽜顿迭代法求解⽅程的根⽜顿迭代法求解⽅程的根引题:⽤⽜顿迭代法求下列⽅程在值等于x 附近的根:2x 3−4x 2+3x −6=02x3−4x2+3x −6=0输⼊:输⼊x 。
输出:⽅程在值等于x 附近的根,占1⾏。
输⼊⽰例:1.5输出实例:21. ⽜顿迭代公式推导设多项式f (x )f(x),设r 是f (x )f(x)的根。
选取x 0x0作为r 的初始近似值。
过点x 0,f x 0(x0,f(x0))做曲线y =f (x )y =f(x)的切线L 。
得L :y =f x 0+f ′x 0x −x 0y =f(x0)+f ′(x0)(x −x0)则L 与x 轴交点的横坐标为 x 1=x 0−f x 0f ′x 0x1=x0−f ′(x0)f(x0),那么称x 1x1为r 的⼀次近似值。
过点x 1,f x 1(x1,f(x1))做曲线y =f (x )y =f(x)的切线,并求该切线与x 轴交点的横坐标x 2=x 1−f x 1f ′x 1x2=x1−f ′(x1)f(x1),称x 2x2为r 的⼆次近似值。
重复以上过程,得r 的近似值序列。
其中,x n +1=x n −f x n f ′x nxn+1=xn −f ′(xn )f(xn )称为r 的n+1次近似值。
所以,x n +1=x n −f x n f ′x nxn+1=xn −f ′(xn )f(xn )即为⽜顿迭代公式。
2. ⽜顿迭代公式核⼼思想核⼼思想:使⽤泰勒级数的线性项近似计算函数f (x )=0f(x)=0的根。
把f (x )f(x)在点x 0x0的某领域内展开成泰勒级数,取其线性部分(即泰勒展开的前两项),并令其等于0。
泰勒级数展开式:f x =f x 0+f ′x 0x −x 0+f ′′x 0x −x 0)22!+…+f (n )x 0x −x 0)n n !+R n x f(x)=f(x0)+f ′(x0)(x −x0)+2!f ′′(x0)(x−x0)2+…+n!f(n)(x0)(x−x0)n +Rn (x)线性部分:f x =f x 0+f ′x 0x −x 0f(x)=f(x0)+f ′(x0)(x −x0)令其为0,并以此作为⾮线性⽅程f (x )=0f(x)=0的近似⽅程,即切线⽅程,得到公式:x =x 0−f (x )f ′x x =x0−f ′(x)f(x)将其推⼴,即可以得到⽜顿迭代公式:x n +1=x n −f x n f ′x n xn+1=xn −f ′(xn )f(xn )#include <iostream>#include <cmath>using namespace std;double f(double x)//函数{return 2*pow(x,3)-4*pow(x,2)+3*x-6;}double f1(double x)//导函数{return 6*pow(x,2)-8*x+3;}(())()()()()()(())()()()()()()()()()()()(()(()()()()()()()()int main(){float x;cin >> x;do{x = x - f(x)/f1(x);}while( f(x)>1e-5 || f(x)<-(1e+5) );//控制精度,逼近处理cout << x << endl;}Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js。
§3.4 牛顿迭代法牛顿迭代法也称为牛顿-拉夫森(Newton-Raphson)迭代法,它是数值分析中最重要的方法之一,它不仅适用于方程或方程组的求解,还常用于微分方程和积分方程求解。
3.4.1 牛顿迭代法用迭代法解非线性方程时,如何构造迭代函数是非常重要的,那么怎样构造的迭代函数才能保证迭代法收敛呢?牛顿迭代法就是常用的方法之一,其迭代格式的来源大概有以下几种方式: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 -=+ 公式(3.4.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 -=+。
§3 牛顿(Newton )迭代方法一、Newton 迭代方法的计算公式牛顿迭代法计算公式的推导过程本节所讨论的是:0)(=x f 。
设*x 是0)(=x f 的根,)(x f 在*x 的邻域内具有二阶连续导数,在*x 的邻域内取一点0x ,使0)(0≠'x f ,将它在0x 点二阶Taylor 展开得:()2()()()()()00002!f f x f x f x x x x x ξ'''≈+-+-))(()(000x x x f x f -'+≈又0)(=x f ,则有:0))(()(000≈-'+x x x f x f⇒0)(=x f 的近似解)()(000x f x f x x '-≈,记)()(0001x f x f x x '-=类似,在点1x 处Taylor 展开,可得:)()(111x f x f x x '-≈,记:)()(1112x f x f x x '-=依次往下做,可得一般的迭代格式:),1,0(,)()(1Λ='-=+n x f x f x x n n n n上述迭代格式称为求0)(=x f 的解的牛顿迭代法。
几何意义在点))(,(00x f x 处作)(x f 的切线,交x轴于一点,求该点的横坐标。
此切线方程为:))(()(000x x x f x f y -'=-,当0=y 时,得:)()(000x f x f x x '-=,正是1x 的值。
依次类推,在点))(,(n n x f x 作函数)(x f 的切线,交x 轴于一点,切线方程为:))(()(n n n x x x f x f y -'=-,当0=y 时,得:)()(n n n x f x f x x '-=,正是1+n x 的值。
∴ 牛顿迭代法又称为切线求根法。
迭代法收敛的条件与收敛速度(针对单根而言)定理:设**()0,()0f x f x '=≠,且)(x f 在*x 的邻域内具有二阶连续导数,则由牛顿迭代法产生的迭代序列),1,0(,)()(1Λ='-=+n x f x f x x n n n n局部收敛于*x ,且为平方收敛。
推导牛顿迭代法
牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的解。
假定有一个函数y=f(x),方程f(x)=0在x = r 处有一个根,对于此根,我们先估计一个初始值Xo(可以是猜测的)。
我们现在来得到一个更好的估计值X1。
为此x=Xo处作该曲线的切线,并将其延长与x 轴相交。
切线与x轴的交点通常很接近r ,我们用它作为下一个估计值X1,求出X1后,用X1代替Xo。
重复上述过程,在x=X1处作曲线的另一条切线,并将其延长至与x轴相交,用切线的x轴截距作为下一个近似值X2……这样继续下去,所得出的这个x轴截距的序列通常迅速接近根r 。
现在再让我们从代数角度看上述过程,我们知道,在初始值Xo处,切线的斜率是f'(x),切线方程为:
y - f(x0) = f '(x0)(x – x0) 在此切线与x轴相交处,有y=0 ,x=x1,因而有:
0 - f(x0) = f '(x0)(x1 – x0)
只要f '(xo)不为0,可解出x1,得:
f(x0)
x1 = x0 —----------
f '(x0)
重复该过程,可得下一近似值为:
f(x1)
x2 = x1—----------
f '(x1)
总结n = 0,1,2,……的情形得出下述结果:
牛顿迭代法:只要f '(xn) ≠0,则有
f(Xn)
X(n+1) = X(n) —----------
f '(Xn)
注意:牛顿法也有不成功的时候,若f(x)无根,则,序列不收敛。
另外,一些函数图像可能形成随即序列,这就需要其他的辅助条件。
附注:f ' (x)表示函数f(x)的导函数,f '(xo)则表示函数f (x)在x = xo处的导数。