matlab diff函数用法_最优化问题 | 梯度下降法与MATLAB程序实现

  f9f457dfc6c5c66d466e7ecf0fec6f56.png

Building可视库

一起做些更酷的事吧!

关注

梯度下降法又称为最速下降法,是求解无约束优化问题最简单和最古老的方法之一。

大概意思就是:在脑海中想象一下,你站在一座山上,怎么找到最快下山的方法,这时你当然会朝着最陡峭的方向前进,到达一个点后,再次朝着陡峭的方向下山,从而循环这些步骤,到达山脚。

8dfadad89ba1c2ab69d9600be71f01c6.png

图片来自于网络

e0efe1baab18fa996422b01d095b4088.gif

梯度下降法的解题步骤:

step1: 选取初始点x(0),指定计算精度ϵ>0,令k=0;

step2: 计算‖∇f(x(k))‖,若结果小于ϵ,则停止迭代,输出x(k)作为近似最优解,否则step3 ;

step3: 取迭代方向向量dk=−∇f(x(k));

step4: 由线搜索技术确定步长因子λk;

step5: 令x(x+1)=x(k)+λdk, k=k+1 转step1.

MATLAB程序实现:

先介绍几个函数:syms,diff,subs.

syms:定义符号变量的函数.

diff:求偏导数的函数.

subs:用数字/符号替换符号.

norm(A):返回向量A的2范数,也就是欧氏距离

solve:这个命令用来求解符号方程、方程组等.

fe14538134b7d5ae03e9af5033da76e4.png 9833bbf2ece18ebab0f021e432bf4337.png

A:创建函数脚本:steep.m

61518594b83cc52f8134e1f7d67ee82f.png

B:主函数,以求解f=(x1^2)/3+(x2^2)/2为例:计算精度为0.001,起始点(3,2),结果如下:迭代5次,最优解为ender。

2cc8328ac90379f4944ba107a4370bcd.png

梯度下降法的缺点:

靠近极小值可能会"之字形"地下降,出现锯齿状,这时收敛速度会减慢。

最后,这篇推文算是小库Q对《优化与决策》今天上课的内容进行简单的总结和程序扩展,也算是开始对算法理解迈出了一小步,好啦,这里是Building可视库,我们下期再见。

e0efe1baab18fa996422b01d095b4088.gif

拓展阅读:

程序思维 | 结构矩阵分析与MATLAB实现

图文 | 小库Q

 编辑 | 小库Q 

cff4bc345a0968dff3ff455930a70d4b.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值