您的位置:首页 > 其它

求解极值的数值算法

2017-05-10 08:18 99 查看
           好几个星期没有更新博客了,最近也是考试多,抽不出多少时间,今天在看书的时候看到了详细的求解极值的算法,都是最基本的,就准备写下来当做学习记录。

(一)最速下降法(梯度下降法)

           描述:先给出 f(X)极小值点的X*的一个估计值Xo(称作初始点),然后依次计算出 Xk+1=g(Xk)并且希望点列{ Xk}的极限就是要找的极值点X*。其中g()为迭代格式Xk+1=Xk+aDk,a为搜索步长,Dk为搜索方向。知道,梯度是函数上升最快的方向,那么梯度的反方向就是函数下降最快的方向,所以Dk就是迭代点梯度反方向,这样,依次迭代就可以找到X*。

          原来这就是梯度下降法啊!看起来一点都不难。但是这一问题的核心是,步长怎么选。

          如果步长选大了,可能收敛不了,选小了,又收敛太慢,这就需要来一个计算,找出最合适的步长。

          然后我写一下具体步骤,包括求步长的方法。

          1、给定初始点Xo∈Rn,令k=0;

          2、计算方向 dk= -▽f(Xk);

          3、计算步长ak 使f(Xk+akdk)<=f(Xk+adk),任意a>0;

          4、令Xk+1=Xk+akdk,如果▽f(Xk+1)=O,算法停止,否则重复。

          这个算法看上去简单,这样就会带来一些问题,比如陷入局部最优,而且在极值点附近下降很慢,总的来说,这个算法收敛是比较慢的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法