最速下降法

一、解决的问题

最速下降法解决的问题是无约束优化问题,比如求如下最小值:min f(x)

其中函数f:R^{n}\rightarrow R

二、最速梯度下降法

Step1:设置初始点x_{0},给定终止误差\varepsilon >0,最大迭代次数N

Step2:for k = 0 to N-1

                  计算p_{k}=-\triangledown f(x_{k})

                  若\left \| \triangledown f(x_{k}) \right \| \leqslant \varepsilon,结束,输出x_{k};否则,继续

                  一维搜索,求t_{k},使得f(x_{k}+t_{k}p_{k}) = min f(x_{k}+tp_{k})

                  x_{k+1}=x_{k}+t_{k}p_{k}

三、例子

求二次函数f(\mathbf{x})=\frac{1}{2}\mathbf{x}^{T}\mathbf{A}\mathbf{x}+\mathbf{b}^{T}\mathbf{x}+c的最小值,其中A为正定矩阵。

梯度:\triangledown f(\mathbf{x})=\mathbf{A} \mathbf{x}+\boldsymbol{b}

负梯度:\mathbf{p}_{k}=-\triangledown f(\mathbf{x}_{k})

迭代公式:\mathbf{x}_{k+1}=\mathbf{x}_{k}+t_{k}\mathbf{p}_{k}

其中,t_{k}通过min f(\mathbf{x}_{k}+t\mathbf{p}_{k})求得:t_{k}=\frac{\mathbf{p}_{k}^{T}\mathbf{p}_{k}}{\mathbf{p}_{k}^{T}\mathbf{A}\mathbf{p}_{k}}

四、代码

% 最速下降法---目标函数是凸函数时,获得的解是全局解
% 最速下降法---基于一阶导数的迭代方法,以当前位置的负梯度方向作为搜索方向
% 最速下降法---越接近目标值,步长越小,前进越慢
% 最速下降法---解决的问题是无约束优化问题

function x = descent(A,b,x,ep,n)
% A:正定矩阵  b:向量  c:标量  x:初始向量  ep:停止误差  n:最大迭代次数
% 求二次函数f(x)=(1/2)x'*A*x+b'x+c的最小值,A为正定矩阵
for i = 0 : n-1
    p = -A * x - b;
    if (p' * p <= ep)
       break;
    end
    t = (p' * p) / (p' * A * p);
    x = x + t * p;
end

% A = [2,1;1,2];
% b = [1;2];
% x = [0;0];
% ep = 0.00001;
% n = 1000;
% y = descent(A,b,x,ep,n);  % [0;-1]

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值