X(K?1)?X(K)??k[?2f(X(K))]?1?f(X(K))(k?0,1,2,?) (4.6)
式中,?K为牛顿方向的最优步长。这种方法对初始点的选取不再苛刻,从而提高了牛顿法的可靠度。但采用阻尼牛顿法,每次迭代都要进行一维搜索,使收敛速度大大降低。例如,对于例4.6所示的目标函数,取同样的初始点,采用阻尼牛顿法进行迭代,达到同样的精度,要经过25次的迭代,越靠近极小值点收敛速度越慢,使牛顿法收敛速度快的优势损失殆尽。 阻尼牛顿法的迭代过程: 阻尼牛顿法的计算步骤如下:
1)给定初始点X(0),收敛精度ε,并令计算次数k?0; 2)计算X(k)点的梯度?f(X(K))和梯度的模?f(X(k));
3)判断是否满足精度指标?f(X(k))??;若满足,X(k)为最优点,迭代停止,输出最优解X*?X(k)和f(X*)?f(X(k)),否则进行下一步计算;
?(k)5)计算X点的牛顿方向d
?(k)d??[?2f(X(K))]?1?f(X(K)) ?(k)(k)6)以X为出发点,沿d进行一维搜索,求能使函数值下降最多的步长?K,即
?(k)?(k)(k)(k)minf(X??d)?f(X??Kd)
(k)?令X(k?1)?X(k)?(k)??Kd,k=k+1,转到步骤2)。
阻尼牛顿法的程序框图如图4.7所示:
开始 输入X(0) ,ε k?0k(K)?f(X) 及其 计算?f(X(k)) ?f(X(k))??? N Y k?k?1 计算X(k)?(k) 点的牛顿方向d X*?X(k)f(X*)?f(X(k)) ?(k)d??[?2f(X(K))]?1?f(X(K)) 图表 错误!文档中没有指定样式的结束 一维搜索求最优步长?k X(k?1)?X(k)?(k)??Kd 4.7阻尼牛顿法的程序框图
牛顿法的总结
牛顿法和阻尼牛顿法统称为牛顿型方法。这类方法的最大优点是收敛速度快。也就是说,它的迭代次数相对其他方法来说少得多。特别是对于一些性态较好的目标函数,例如二次函数,只需保证求梯度和二阶偏导数矩阵时的精度,不管初始点在何处,均可一步就找出最优点。可是这类方法也有很大的缺点。首先,在每次迭代决定牛顿方向时,都要计算目标函数的一阶导数和二阶导数矩阵及其逆矩阵。这就使计算较为复杂,增加了每次迭代的计算工作量和计算机的存储量。
选用原则和条件: 该方法适用于目标函数具有一阶、二阶偏导数,海森矩阵非奇异,维数不太高的场合。