本来想找一个现成的程序,结果找到的要么不能用,要么没有说明,索性自己编了一个。包括一个主程序和一个子程序。供大家分享

% Main program of steepest.

% 最速下降法主程序

%----------------------These lines only for ploting figures

%(前面几行是为了画图用的,可以不要)

clear

xx=-11:0.2:11; % 图中坐标的起始点

yy=-11:0.2:11;

[X,Y]=meshgrid(xx,yy);

for i=1:111

for j=1:111

y(1)=X(i,j);

y(2)=Y(i,j);

Z(i,j)=f_df(y); % z必须是网格化的数据

end

end

%mesh(X,Y,Z)

contour(X,Y,Z,50)

hold on

%-----------------------------------end for ploting figures

syms x1 x2 f lmda lm

x=[0;10]; % x的初值

xs=[x1; x2]; % 由于在求lmda过程中要用到符号函数的求导,故此定义符号运算的xs

[f0,g]=f_df(x); % 将x的初值代入,得到函数及其梯度的数值

[h, gs]=f_df(xs) % 将xs代入,得到符号表达式h

flag=999. % 用于控制循环

ii=0 % 用于循环计数

x_all=ones(1000,2); % 用于存储每次计算出来的x,如果循环步数超过1000,要增大数组

f_all=ones(1000,1); % 用于存储每次计算出来的f

g_all=ones(1000,2); % 用于存储每次计算出来的gradient

while flag>0.0001 % 当flag<0.01时退出循环

ii=ii+1

p=-g'; % 负梯度方向作为最速下降方向

xs(1)=x(1)+p(1)*lm;

xs(2)=x(2)+p(2)*lm; % 这里的lm实际上是lmda,但现在没有具体数值,只是一个符号

h1=compose(h,xs(1));

h2=compose(h1,xs(2)); % 这两步将f函数写成lmda的符号表达式

dh2=diff(h2,lm); % 对lmda符号函数求导

lmda=solve(dh2); % 用求导求极值的方法确定lmda

x_ini=double(x);

x_all(ii,:)=x_ini(:)';

f_all(ii)=double(f0);

g_all(ii,:)=double(g);

x=x+lmda*p; % 更新x

%--------------------------------------the nex two lines only for plot (这两行也是为画图用的)

x_end=double(x);

plot([x_ini(1),x_end(1)],[x_ini(2),x_end(2)],'-')

%-------------------

[f0,g]=f_df(x); % 更新f0和g

flag=sqrt(g(1)^2+g(2)^2); %已梯度的模作为控制循环的标记

flag=double(flag) %由于上一步是符号参数,不能直接放在while语句中控制,故此进行数值化

end

hold off

% subroution of steepest. Define a binary function and calculate it's gradient

% 最速下降法子程序,定义一个二元函数,并计算其梯度

function [f,df]=f_df(x);

f=5*x(1)^2+x(2)^2+4*x(1)*x(2)-14*x(1)-6*x(2); % for ellipse

df(1)=10*x(1)+4*x(2)-14;

df(2)=2*x(2)+4*x(1)-6;

matlab最速下降法例子,matlab 最速下降法 steepest descent (实例并附有详细说明)相关推荐

  1. matlab ode45例子,matlab的ode45

    matlab ode45 解微分方程在用 odesolver(ode45, od... 在控制系统仿真中,常用的求微分方程数值解的函 数是ode23和ode45. 2 1. ode23 在MATLAB ...

  2. matlab曲面拟合例子,matlab曲线曲面拟合讲解及实例

    三维曲线(非线性)拟合步骤 1 设定目标函数. (M函数书写)% 可以是任意的 例如: function f=mydata(a,data) %y的值目标函数值 或者是第三维的,a=[a(1) ,a(2 ...

  3. matlab fminimax 例子,Matlab应用实例(8)—fminimax

    说明:fminimax用来求最小的最大值,比如城市建设消防站点时,考虑到最主要的因素是到最远的地方的用时(可换算为距离)最小,比如A方案到6个区域的用时为(1,1,1,1,1,12),B方案到6个区域 ...

  4. matlab运算例子,MATLAB基本数学运算例子:

    基本数学运算例子: 55+4 ans= 59 100/2 ans= 50 100\2 ans= 0.02 sin(90) ans= 0.8940 sin(pi/2) ans= 1.000 abs(-1 ...

  5. newff matlab使用例子,matlab神經網絡newff函數的用法

    設[P,T]是訓練樣本,[X,Y]是測試樣本: net=newrb(P,T,err_goal,spread); %建立網絡 q=sim(net,p); e=q-T; plot(p,q); %畫訓練誤差 ...

  6. matlab 积分 例子,[Matlab]使用arrayfun对矩阵表达式积分的例子

    最近学习了matlab中arrayfun函数的使用,可以进行"任意资料型别上的向量化运算",对关于这方面的资料比较少,最早的中文资料见于一台湾论坛上对的翻译,后来在simwe.振动 ...

  7. matlab meshgrid例子,MATLAB简单三维曲线曲面绘制——meshgrid函数 ← MATLAB讨论组 ......

    三维曲线和曲面的绘制在实际中经常用到,MATLAB正式由于其强大的绘图功能,在工程和科学界已经广泛使用.这里演示一下,怎样根据离散点数据绘制三维曲线或者曲面. 绘制三维图形,首先,需要XY平面的网格数 ...

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

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

  9. Python实现最速下降法(The steepest descent method)详细案例

    文章目录 最速下降法(The steepest descent method) 最速下降法的原理 Python实现最速下降法实例 `sympy`包中用到的函数 构建符号变量和符号函数 对符号函数求导 ...

  10. 最速下降法steepest descent详细解释

    ----------------------先闲聊几句------------------------------------ [1]首次提出了梯度下降法和最速下降法,既然柯西写出来了,所以这两个算法 ...

最新文章

  1. linux c 指针 内存 泄漏几种情况
  2. 三星电子网络营销重拳出击芯片制造力求“差异化”取胜智能手机市场
  3. vue 本地环境API代理设置和解决跨域
  4. 设计模式 命令模式 实例_根据您的命令-命令设计模式
  5. native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理
  6. eclipse怎样创建并运行java项目
  7. git常用操作命令大全
  8. 4月18日云栖精选夜读 | 阿里靠什么支撑 EB 级计算力?
  9. Copy-and-swap
  10. QVector、QList、QLinkedList 类
  11. 三态门三个状态vhdl_人防门施工方案
  12. 苹果手机键盘html代码大全,iPhone拨号键盘中的*和#有什么作用 iPhone特殊代码分享...
  13. C语言malloc函数详解
  14. 计算机怎么硬盘重做系统,如何对新的硬盘安装系统进行分区并重新安装系统计算机分区教程...
  15. 时间显示(模拟时钟)
  16. CIP数据核字号查询
  17. pandas基础操作大全之数据合并
  18. 博客园有一段时间登不上
  19. C语言练习题之标准电话号码(MOOC)
  20. cocos2dx 3.10版本的AssetsManager问题

热门文章

  1. HTML制作简单的个人简历网页
  2. android 下的虚拟机下载地址,Android x86 虚拟机镜像下介绍及下载
  3. MapInfo MIF/MID文件格式描述
  4. osgb转json_cesuim加载倾斜摄影OSGB三维数据
  5. 开票服务器管理系统默认密码,税控盘初始密码和口令是多少-百旺税控盘初始密码和口令-牛账网...
  6. vs应用程序无法正常启动
  7. python将utf8转换成中文_基于python2如何将txt内utf-8转换成中文
  8. FileResponse django下载文件问题
  9. I2S/PCM协议及TDM模式详解
  10. android屏幕共享及远程控制,android屏幕共享及远程控制原理