求解极值的数值算法
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,算法停止,否则重复。
这个算法看上去简单,这样就会带来一些问题,比如陷入局部最优,而且在极值点附近下降很慢,总的来说,这个算法收敛是比较慢的。
(一)最速下降法(梯度下降法)
描述:先给出 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,算法停止,否则重复。
这个算法看上去简单,这样就会带来一些问题,比如陷入局部最优,而且在极值点附近下降很慢,总的来说,这个算法收敛是比较慢的。
相关文章推荐
- 亚像素数值极值检测算法总结
- 数值算法阶数与求解精度的介绍
- 管道摩擦系数数值求解的基础算法研究
- paper 8:支持向量机系列五:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法。
- 【算法详解】求解数值的整数次方
- 【Unity】UIScrollView 求当前页数的算法求解
- 数值计算方法 求解初值问题(伪代码 c/c++ python)
- 数值计算方法与算法:C语言实现利用Gauss消元法解方程组
- hihocoder 1142 三分求极值【三分算法 模板应用】
- 基于网格的遗传算法求函数极值
- mser 最大稳定极值区域(文字区域定位)算法 附完整C代码
- N的阶乘——多位数对单位数的乘法——数值超高超大的算法
- 在VisualStudio2005中求解实对称矩阵特征值算法包调查
- 五子棋终结者的算法求解过程
- 经典算法(1)——8皇后问题求解(回溯法)
- 同余定理在算法求解中的应用
- 数据结构——算法之(001)(在一个数组中找出重复数值)
- 学习凸包(一):暴力算法求解
- 【经典算法】——KMP,深入讲解next数组的求解
- 二分算法——求解方程的根