MATLAB利用最速梯度下降法求解f(x)函数极小点附讲解

问题描述

利用最速梯度下降法求解:
函数接口:[xstar,fxstar,iter]=SteepDescent(f_name,x0,eps)
其中xstar为最优解,fxstar为最优函数值,iter为迭代次数。
f_name为目标函数值,可取[1,1]’,eps=1e-3,利用0.618法搜索步长。

解题步骤

在步骤三搜索步长因子时,首先需要选择一个初始的搜索空间[a0,b0]。首先判断初始值是在极值点的左边或者右边,根据函数在极值点左侧单调下降,在极值点右侧单调上升。实际上根据步长一定是大于0的条件,alpha初始值直接设置0就可以了,这样搜索区间的左端点a0=0,只要再找到b0就可以了。
寻找b0,此时f0=feval(f_name,xk+a0dk);让a0等长度增加,如a1=a0+iterh0,h0为每次增加的长度,如h0=0.1;iter=1起始。计算f1=feval(f_name,xk+a1*dk);如果f1>f0,则b0=a1;否则iter=iter+1;
注意:为了防止数值误差引起的错误,可以加一个约束条件abs(f1-f0)>eps,a0和b0点处的函数值差异明显。找到初始搜索空间之后利用0.618搜索方法。

MATLAB函数代码

// SteepDescent_script.m
%脚本文件,调用函数接口
[xstar,fxstar,iter] = SteepDescent(@Myexam1,[1,1]',1e-3)
// SteepDescentt.m
function [xstar,fxstar,iter] = SteepDescent(f_name,x0,eps)
%函数文件
iter=0;%初始化迭代次数
[~,g]=Myexam1(x0);%初始梯度
x=x0;
dk=-g;%确定当前搜索方向
while norm(g)>eps  %未达到精度要求iter=iter+1;[b] = Trial(@Myexam1,x,dk,1,0.1,eps);%确定搜索区间,左端为0,只需计算出右端b,a0取1,h取0.1[lamda]=S618(@Myexam1,x,dk,[0,b],eps);%0.618搜索x_0=x;x=x_0+lamda*dk;[~,g]=Myexam1(x);dk=-g; s1 =sqrt((x - x_0)'*(x - x_0));if s1 <= epsbreak;end
end
xstar=x;
[fxstar,~]=Myexam1(xstar);
end
// Myexam1.m
function [f,g]=Myexam1(x)
%%%%调用[f,g] = feval(f_name,xk);
f=x(1)^2+2*x(2)^2;
g=[2*x(1);4*x(2)];
end
// Trial.m
function [b] = Trial(f_k,xk,dk,a0,h0,eps)
%确定区间右端点
f0 = feval(f_k,xk+a0*dk);% 计算初始点函数值
a1 = a0 + h0;
f1 = feval(f_k,xk+a1*dk);
%防止数值误差引起的错误,加入约束条件abs(f1-f0)>eps
while abs(f1-f0)<epsa1 = a1 + h0;f1 = feval(f_k,xk+a1*dk);
end
b=a1;
%让a1等长度增加,h0=0.1,如果找到f1>f0,退出
while f1<=f0a1=a1+ h0;f1=feval(f_k,xk+a1*dk);
end
b=a1;
end
// S618.m
function [x] = S618(f_name,xk,dk,range,e)
%0.618搜索确定lamda的极小点
% xk: 当前搜索点
% dk: 当前搜索方向
% e: 精度要求
a = range(1);b = range(2);
flag = 0;%设置一个退出标志
while flag==0u = a+0.382*(b-a); v = a+0.618*(b-a);m = feval(f_name,xk+u*dk); n = feval(f_name,xk+v*dk);if m>n %区间变成[u,b]if b-u<e %区间大小满足要求x = v; flag = 1;else    %更改区间,继续迭代a = u;flag = 0;endelse  %区间变成[a,v]if v-a<e  %区间大小满足要求x = u; flag = 1;else     %更改区间,继续迭代b=v;flag = 0;endend
end

运行结果

MATLAB利用最速梯度下降法求解f(x)函数极小点相关推荐

  1. ML之UliR:利用非线性回归,梯度下降法(迭代十万次)求出学习参数θ,进而求得Cost函数最优值

    ML之UliR:利用非线性回归,梯度下降法(迭代十万次)求出学习参数θ,进而求得Cost函数最优值 目录 输出结果 代码设计 输出结果 更新-- 代码设计 import numpy as np imp ...

  2. 梯度下降法求解多元线性回归 — NumPy

    梯度下降法求解多元线性回归问题 使用梯度下降法求解一元线性回归的方法也可以被推广到求解多元线性回归问题. 这是多元线性回归的模型: 其中的 X 和 W 都是 m+1 维的向量. 下图为它的损失函数: ...

  3. 深度学习基础之-2.2用梯度下降法求解w,b

    用梯度下降法求解w,b. 预设函数 Hypothesis Function z=wx+bz = wx+bz=wx+b 损失函数 Loss Function J(w,b)=12(z−y)2J(w,b) ...

  4. 梯度下降法求解线性回归

    梯度下降法求解线性回归 通过梯度下降法求解简单的一元线性回归 分别通过梯度下降算法和sklearn的线性回归模型(即基于最小二乘法)解决简单的一元线性回归实际案例,通过结果对比两个算法的优缺. 通过最 ...

  5. 利用梯度下降法求解一元线性回归和多元线性回归

    文章目录 原理以及公式 [1]一元线性回归问题 [2]多元线性回归问题 [3]学习率 [4]流程分析(一元线性回归) [5]流程分析(多元线性回归) 归一化原理以及每种归一化适用的场合 一元线性回归代 ...

  6. 【统计学习】随机梯度下降法求解感知机模型

    1. 感知机学习模型 感知机是一个二分类的线性分类问题,求解是使误分类点到超平面距离总和的损失函数最小化问题.采用的是随机梯度下降法,首先任意选取一个超平面w0和b0,然后用梯度下降法不断地极小化目标 ...

  7. 梯度下降法求解方程的极值

    1.方法一: 利用梯度下降算法求解y=x^2的极值. 注意:此种方法,除了x的更新之外,还有一点需要注意,那就迭代停止的条件.可以设置一个阈值a,比较x更新前后的y的差的绝对值与阈值a的大小,即Δy与 ...

  8. 【转】利用泰勒公式推导梯度下降法

    原作者: 红色石头 | 来自: AI有道 梯度下降 算法的公式非常简单,"沿着梯度的反方向(坡度最陡)"是我们日常经验得到的,其本质的原因到底是什么呢?为什么局部下降最快的方向就是 ...

  9. python实现牛顿法和梯度下降法求解对率回归_最优化问题中,牛顿法为什么比梯度下降法求解需要的迭代次数更少?...

    多图预警 本文讲你肯定能懂的机器学习多维极值求解,主要讲梯度下降和牛顿法的区别应该能够完美的回答题主的问题 事先说明 本文面向学习过高等数学统计学和线性代数基础知识的本科生,并假设读者拥有基本的矩阵运 ...

  10. 单变量线性回归中的梯度下降法求解代价函数的最小值

    1. 什么是代价函数 在线性回归中我们有一个像这样的训练集,m代表了训练样本的数量,比如 m = 47.而我们的假设函数, 也就是用来进行预测的函数,是这样的线性函数形式, 则代价函数可以表示为: 我 ...

最新文章

  1. 中国AI论文普遍水?机器学习教父Tom Mitchell的回答是……
  2. 26岁已经是“双一流”高校博导!读博期间也曾两次想要退学......
  3. 源码 移植_FreeModbus移植总结
  4. 异步请求中jetty处理ServletRequestListener的坑
  5. 转账给张三,钱却被李四收到,如何狙击凶险的 App 漏洞?——专访娜迦CTO玩命...
  6. 【5岁小孩对唱情歌 超萌超可爱】
  7. 九度OJ1451题-信封错装
  8. 不宜佩带佛像,宜佩带佛号、咒语
  9. 采用运放构成的串联稳压电源及可调恒流源电路图
  10. java微信获取素材列表_微信公众号开发之获取素材列表并保存
  11. 什么是mysql联合主键_什么是联合主键
  12. ERROR 2005 (HY000): Unknown MySQL server host 'locahost' (2)解决
  13. Fuchsia 系统的编译和探索
  14. Daily Growing 的歌词
  15. Android12之OpenSL ES中Realize实例化AudioManager(十二)
  16. 2023年2022年Cfa一级考纲变化分析
  17. PEP8中文翻译(转)
  18. 2021.07.17【R语言】丨扩增子课程学习——α多样性简介
  19. js 获取当前城市名称以及天气预报
  20. Python爬虫新手入门教学:爬取前程无忧招聘信息

热门文章

  1. 比赛打不好怎么办——怎么制定NOI赛制的考试策略
  2. 一款非常强大的vlc多媒体视频播放器:VLC Media Player for mac
  3. Mybatis-Plus 的BaseMapper用法
  4. FLINK提交任务的两种方式
  5. win10重置计算机网络设置,win10网络重置后,win10网络重置怎么恢复
  6. 重置计算机的网络配置是什么意思,电脑怎么重置网络设置 win10网络重置后连不上网怎么办...
  7. 51单片机蓝牙遥控风扇期末设计报告
  8. umount target is busy
  9. 《绝区零》首测遭破解,面临资源泄露风险
  10. 【Social listening实操】从社交媒体传播和文本挖掘角度解读《欢乐颂2》