牛顿迭代法看不懂正常吗

发布网友

我来回答

2个回答

热心网友

正常。


问题解决

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量

在可以用迭代算法解决的问题中,至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。

对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析得出可用来结束迭代过程的条件。

以上内容参考:百度百科-牛顿迭代法



热心网友

很多的迭代都是基于函数泰勒线性展开的近似,牛顿迭代也不例外。对于一维的迭代就不多说,很多都是基于切线达的一阶近似,对于一维迭代有几种经典的迭代方法:试探法、黄金分割法(golden section method),Fibonacci法(比较喜欢这种方法,嗯,可能是高中时候斐波那契数列的题目做多了,对这种方法有天然的亲切感)、二分法;此外一些插值方法在编程的时候应用比较多,还有一些得精确的搜索方法也不错,Goldstein、Armijo、以及Wolfe-Powell等方法也不错。
对于牛顿迭代的话,我个人比较喜欢它在*迭代的应用,其优点是很明显的,一旦迭代收敛,其收敛速度是二阶的,而且具有二次终止性。牛顿方法的缺点也是很明显的,在一次迭代过程中,可能会出现函数值上升的情况,影响了迭代速度,而且初值的选择比较重要,很多时候会收敛到鞍点或者不收敛,对于编程方面来说,牛顿*迭代要计算黑塞矩阵(hesse),其计算量比较大。
针对以上缺点,关于牛顿迭代的改进也有很多。Gauss-Newton(高斯-牛顿)迭代在做二阶导数的时候忽略了残差梯度平方项,也就省去了计算黑塞矩阵的步骤,仅仅利用一阶梯度就可以计算二阶梯度,只要计算雅可比矩阵就可以了。此外在解决迭代过程中出现的矩阵奇异或者病态的情况,Levenberg-Marquardt方法有很大的改进。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com