matlab实现最速下降法
定义:沿负梯度方向进行搜索的算法(负梯度方向为最速下降方向)

算法步骤:

步0:选取初始点x0,容许误差是e=[0~1],令k=1

步1:计算目标函数的梯度.若 ||gk||<=e,即达到误差要求,立即停止计算,并输出xk作为近似最优解。

步2:取搜索方向为dk=-gk(即负梯度方向)。

步3:利用线搜索技术确定步长k(这里采用Armijo准则来求步长)

步长为k=^mk       是给定的,所以要求出mk

Amrijo准则就是

(1)给定(0~1),(0,0.5),令m=0

(2)若不等式

f(xk+^m*dk)<=f(xk)+*^m*gk'*dk

成立,则令mk=m,Xk+1=xk+^m*dk.停止运算,输出mk得到步长

(3)若不满足上述不等式,则令m=m+1,然后回到第二步。

步4:确定步长后,令Xk+1=Xk+k*dk,k=k+1,转步骤1.

matlab 具体代码如下:

1.主函数

clear all
clc
%利用grad函数求解 minif(x)=100*(x1^2-x2)^2+(x1-1)^2
%此时还要建立两个函数,一个目标函数fun,一个梯度gfun
x0=[-1.2 1]';
[x,val,k]=grad('fun','gfun',x0);
disp(['最优解:x = '])
disp(x)
disp(['此时: f(x) = ',num2str(val)])

2.最速下降法

function [x,val,k] = grad(fun,gfun,x0)
%功能:用最速下降法求解无约束问题 minif(x)
%输入:fun,gfun分别是目标函数和梯度,x0是初始点
%输出:x,val分别是近似最优值和最优值,k是迭代次数
maxk=5000; %最大迭代次数
rho=0.5;
sigma=0.4;
k=0;
e=1e-5; %精度
while(k<maxk)g=feval(gfun,x0); %计算梯度d=-g;if(norm(d)<e),break;end%用Amrijo搜索技术确定步长m=0;mk=0;while(m<20) %最大迭代次数if(feval(fun,x0+rho^m*d)<feval(fun,x0)+sigma*rho^m*g'*d)mk=m;break;else m=m+1;endendx0=x0+d*rho^mk;k=k+1;
end
x=x0;
val=feval(fun,x0);
end

3.目标函数

function f= fun(x)
%目标函数
f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;
end

4.目标函数的梯度

function  g=gfun(x)
%目标函数的梯度
g=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]';
end

5.运行结果

matlab实现最速下降法相关推荐

  1. 共轭梯度下降法matlab,用matlab实现最速下降法,牛顿法和共轭梯度法求解实例

    用matlab实现最速下降法,牛顿法和共轭梯度法求解实例 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验的题目和要求 1.所属 ...

  2. 用共轭梯度法求极小值matlab,用MATLAB实现最速下降法_牛顿法和共轭梯度法求解实例——张小强.doc...

    机电产品优化设计 课程设计报告 姓 名 :张 小 强 学 号 :201222080633 学 院 :机械电子工程学院 实验的题目和要求 一.课程名称:最优化设计方法 二.实验日期:2013年6月27日 ...

  3. 利用 MATLAB 编程实现最速下降法求解无约束最优化问题

    本文章包含以下内容 1.画出最速下降法的算法流程图: 2.MATLAB 编写用数值微分法的梯度计算函数(函数式 M 文件): 3.MATLAB 编写最速下降法求解无约束优化问题的函数,要求采用黄金分割 ...

  4. matlab共轭梯度法_优化算法之牛顿法

    牛顿法(Newton's method)是一种在实数域和复数域上近似求解方程的方法,,它使用函数f(x)的泰勒级数的前面几项来寻找方程f(y)=0的根. 牛顿法最初由艾萨克·牛顿在<Method ...

  5. 0.618方法matlab流程图,0.618法的matlab实现

    (3)从上述计算结果可以看出,利用 MATLAB 实现的黄金分割法,通过 14 次 迭代可以满足收敛精度要求,并且计算结果和理论结果基本一致,误差为 (1.0013) (1) 0....... 暂无评 ...

  6. MATLAB最速下降法求解函数极小值

    MATLAB最速下降法求解函数极小值 1.题目 2.matlab代码 2.1主函数 2.2调用函数 2.3运行结果 3.分析 写在前面:最速下降法求解函数极小值的理论部分已经写在上一篇文章中,这篇文章 ...

  7. matlab线性搜索确定步长,使用非精最速下降法确线搜索armijo算法确定步长的.doc...

    使用非精最速下降法确线搜索armijo算法确定步长的.doc 数学与计算科学学院实验报告实验项目名称使用非精确线搜索ARMIJO算法确定步长的最速下降法所属课程名称最优化方法实验类型算法编程实验日期2 ...

  8. 最优解matlab机械大作业,最速下降法求最优解西安电子科技大学matlab结课大作业...

    07112016.最速下降法求最优解 六. 结果评价 本次测试分别从两组不同的初始搜索位置,两组不同 a,b,c,d 值出发, 两两比较可得结论:测试用例 abcd 为某些特定值时,不同初始搜索位置可 ...

  9. MATLAB无约束多维极值——最速下降法

    一.算法原理 1.首先了解一个概念,什么式无约束最优化. 无约束优化问题就是在x∈R^n的范围内,找到一点x*,使得f(x*)<f(x)对于任意x∈R^n都成立.点x*就是全局最优解. 其一般形 ...

  10. 最优化算法与matlab应用3:最速下降法

    最优化算法与matlab应用3:最速下降法 最速下降法是一种沿着N维目标函数的负梯度方向搜索最小值的方法. (1)算法原理 函数的负梯度表示如下: 搜索步长可调整ak,通常记为 (第k次迭代的步长). ...

最新文章

  1. 解决:”ssh-keygen 不是内部或外部命令“ 的问题
  2. 要活多久才能赚回你交的养老金
  3. python3入门基础语法总结_Python基础语法总结
  4. 一个最简单的用SAP UI5实现的live search demo,完整代码只有55行
  5. WinHand.cpp Line 199 错误 WinHand.cpp Line 218 错误
  6. vue 筛选组件_记一个复杂组件(Filter)的从设计到开发
  7. oracle通信通道的文件结尾_ORA-03113:通信通道的文件结尾解决
  8. 【ZOJ - 3212 】K-Nice (构造)
  9. 【评分】个人作业——软件工程实践总结作业
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_2_Stream流中的常用方法_forEach...
  11. linux mint自动登录,Linux Mint 19.2新功能/新特性介绍,包含Cinnamon、MATE、Xfce版本
  12. C语言——恶搞之关机代码
  13. android手机 ipad 同屏,iphone和ipad
  14. html+JS+Jquery实现视频/图片上传并预览
  15. 腾讯云轻量8核16G服务器18M带宽CPU流量性能测评
  16. JS 原生自动加载的大数据表格探索
  17. 一文了解GPU并行计算CUDA
  18. 抄书——泛函分析讲义(上册)张恭庆——1.3列紧集
  19. Linux-Ubuntu中Google浏览器更新和桌面重启
  20. 刘强东对京东零售动刀:提醒打工仔,要立新功不吃老本

热门文章

  1. PATHLOSS.4.0 无线电设计软件
  2. 软件测试缺陷报告分析,测试报告中的缺陷分析和测试结论应该怎么写?
  3. Abaqus2020帮助文件无法搜索问题
  4. 电源模块的选择、国内外知名电源模块厂家排名及厂家优势特点汇总
  5. PMP扫盲篇2 | PMP报名、缴费、考试那些事儿~~
  6. 实施ERP管理系统的流程有哪些
  7. Mac使用RDC远程连接Windows并传输文件
  8. QGIS 3.0 使用教程
  9. CV学习笔记-BP神经网络代码Python实例
  10. .NET Remoting 配置文件方式