上一课我们介绍了算法模式中的分治法,这一课继续介绍迭代法,我们一般在求解一个问题的时候,都是使用明确的方法或计算公式,带入已知量,一次性求得问题的解。但是如果用计算机解决这些问题,常常因为各种原因无法直接求解,比如求解一元高次方程的问题。针对这种情况,人们提出了很多迭代法来近似求解这类问题,比较常见的有梯度法、最小二乘法和牛顿迭代法,只要问题的解是可收敛的(或者是局部可收敛的),都可以使用迭代法求解。数学意义上的迭代法是一种不断用变量的旧值递推新值的过程,其对应的迭代算法也是用计算机解决问题的一种基本方法。
迭代法和递推法的关系
迭代法一般用于求解数学问题,比如求解一元高次方程、线性和非线性方程组和曲线拟合等问题。迭代的基本点就是迭代公式,一般也理解为递推公式,这常常让人对迭代法和递推法产生混淆,认为这两个概念是等同的。事实上,这两个概念还是有点差异的,迭代法作为很多数学问题的求解算法,是解决数学问题的一种常用的算法模式,可以独立构成解决问题的算法。递推法作为一种设计算法的常用思想,没有固定的算法实现模式,通常是与其他算法模式配合形成算法实现。比如线性动态规划问题,一般都有明确的子问题最优解递推公式,递推思想常常作为算法实现的一部分融入到动态规划算法的实现中。
对于迭代法,还有一种更广泛的观点,就是所有使用了迭代思想的算法实现&#