算法原理

to-do

Matlab代码

clc; clear;

f = @(x) x(1).^2+2*x(1)*x(2)+3*x(2).^2; %待求函数,x1,x2,x3...

% f = @(x) x(1).^2+2*x(2).^2;

paraNum = 2; %函数参数的个数,x1,x2,x3...的个数

x0 = [3,3]; %初始值

tol = 1e-5; %迭代容忍度

flag = inf; %结束条件

error = []; %函数变化

while flag > tol

p = g(f,x0,paraNum); %列向量

f2 = @(a) f(x0-a*p');

buChang = argmin(f2); %求步长,line search:argmin function

x1 = x0-buChang*p';

flag = norm(x1-x0);

error = [error,flag];

x0 = x1;

end

plot(0:length(error)-1,error)

function [f_grad] = g(f,x0,paraNum)

temp = sym('x',[1,paraNum]);

f1=f(temp);

Z = gradient(f1);

f_grad = double(subs(Z,temp,x0));

end

function [x] = argmin(f)

%求步长

t = 0;

options = optimset('Display','off');

[x,~] = fminunc(f,t,options);

end

代码问题

Matlab符号运算,耗时

最速下降法的步长使用line-search,耗时

代码改进

clc; clear;

f = @(x) x(1).^2+2*x(1)*x(2)+3*x(2).^2; %待求函数,x1,x2,x3...

% f = @(x) x(1).^2+2*x(2).^2;

paraNum = 2; %函数参数的个数,x1,x2,x3...的个数

x0 = [3,3]; %初始值

tol = 1e-3; %迭代容忍度

flag = inf; %结束条件

error = []; %函数变化

while flag > tol

% for i =1:1

p = g(f,x0,paraNum); %列向量

if norm(p) < tol

buChang = 0;

else

buChang = argmin(f,x0,p,paraNum); %求步长,line search:argmin function

end

x1 = x0-buChang.*p';

flag = norm(x1-x0);

error = [error,flag];

x0 = x1;

end

plot(0:length(error)-1,error)

function [f_grad] = g(f,x0,paraNum)

temp = sym('x',[1,paraNum]);

f1=f(temp);

Z = gradient(f1);

f_grad = double(subs(Z,temp,x0));

end

% function [x] = argmin(f,paraNum)

% %求步长

% t = zeros(1,paraNum);

% options = optimset('Display','off');

% [x,~] = fminunc(f,t,options);

% end

function [x] = argmin(f,x0,p,num)

% 求步长

% for i=1:paraNum

% syms(['x',num2str(i)]);

% end

temp = sym('x',[1,num]);

f1=f(x0 - temp.*p');

for i = 1:num

temp(i) = diff(f1,temp(i));

end

jieGuo = solve(temp);

jieGuo = struct2cell(jieGuo);

x = zeros(1,num);

for i = 1:num

x(i) = double(jieGuo{i});

end

end

最速下降法matlab全局最小值_最速下降法+Matlab代码相关推荐

  1. 最速下降法matlab全局最小值_梯度下降概念

    1.梯度概念 (1)从几何意义上讲,就是函数变化最快的地方. 在单变量的函数中,梯度只是导数,其实就是函数在某个给定点的切线的斜率: 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数 ...

  2. fama matlab源码_用matlab程序做Fama-MacBeth回归的代码

    求[100,200]之间第二个能被15整除的整数.(用Matlab程序做) x=100:200;>>n=find(rem(x,15)==0);>>X=x(n(2))很简单的两句 ...

  3. 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究

    公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...

  4. matlab xlsread参数_利用MATLAB批量完成科研数据处理

    利用常用软件批量完成科研数据处理 tags: - MATLAB - 科研软件 相信平时大家都有这种时候,测了一大堆数据,也知道该怎么去处理,但是样品很多,数据量很大,然后对于每个样品去处理的时候都得用 ...

  5. matlab平行因子_基于MATLAB某客车悬置系统优化与运动仿真

    本文对一CNG燃气客车悬置系统建立6阶振动数学模型,基于MATLAB分析振动频率与解耦率并对系统固有频率的配置以及解耦率设计优化程序,运用NX CAE运动仿真校核MATLAB分析结果的准确性,为悬置系 ...

  6. python代替matlab的工程_替代Matlab的国产软件出现,开发商知乎答疑,称1年内实现100%...

    点击上方 "Python人工智能技术" 关注,星标或者置顶 22点24分准时推送,第一时间送达 来自:量子位 报道 | 公众号 QbitAI | 编辑:真经君 码农真经(ID:co ...

  7. matlab 日期排序_在Matlab中对数据进行排序(Sorting Data in Matlab)

    在Matlab中对数据进行排序(Sorting Data in Matlab) 我试图在Matlab中对以下数据进行排序,但没有得到我需要的预期输出. 这是数据: '1B-3A-5A' '1A-3A- ...

  8. Matlab自适应均线_用MATLAB求移动平均线,不用MOVAVG函数,求MA5,MA10 – MATLAB中文论坛...

    移动平均线,简称均线.它是将某一段时间的收盘价之和除以该周期. 比如日线MA5指5天内的收盘价除以5 .请在一张图中用三种不同颜色绘制该股票收盘价数据.5日移动平均MA5.10日移动平均MA10. 时 ...

  9. matlab 数字识别_在MATLAB中利用神经网络进行分类

    在这篇文章中,主要阐述在MATLAB环境下利用神经网络对输入的数字图像进行识别.我们利用一个5*5的矩阵来表示1-5的数据,如下图所示: 基于以上问题,我们构建的神经网络输入层的神经元个数为25个,即 ...

  10. matlab盒子分形维数_分形维数--matlab

    一维曲线分形维数的 matlab 程序 function D=FractalDim(y,cellmax) % 求输入一维信号的计盒分形维数 %y 是一维信号 %cellmax: 方格子的最大边长 , ...

最新文章

  1. el search 查询排序
  2. Linux ping 使用教程,linux ping命令的几个简单使用方法
  3. springMVC各种注解及解释和使用
  4. ubuntu+touch+android,移动操作系统Ubuntu Touch支持安卓应用
  5. C++实现String类
  6. 常用注入 Script 方法
  7. wordpress二次开发技巧-functions.php篇
  8. 广东技能大赛软件测试项目,我校喜获2019年全国职业院校技能大赛软件测试赛项二等奖...
  9. 华为最新解bl解锁码计算工具_黔隆科技刷机教程红米note4X低配版忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  10. 一些黑苹果四叶草引导常用的kext说明
  11. windows无法完成格式化怎么办?
  12. OSPF的6种LSA
  13. 显卡组超级计算机,NVIDIA发布全新显卡 在家就能拥有超级计算机
  14. excel设定备选值
  15. markdown的checkbox综述
  16. php 手机swf播放器,php获取优酷土豆页面中视频swf播放器地址_PHP教程
  17. git 与github配置(老师详细版)
  18. 一度智信电商:教你几招,轻松利用微信给店铺引流
  19. 装linux系统(和win一起的双系统)
  20. matlab实验报告四,matlab实验报告4

热门文章

  1. Java中this的应用
  2. 【微信小程序】三分钟学会小程序的列表渲染
  3. 魔百和服务器网站,【当贝市场】魔百盒首页诊断显示网络异常解决办法
  4. 《计算机网络 自顶向下方法》答案(第七章)
  5. layer.prompt输入框改成laydate时间控件
  6. oracle 启动报错03113,oracle数据库无法启动,总报ora-03113错误
  7. php 生成会员卡号,PHP实现生成唯一会员卡号
  8. 夜间红外图像行人检测学习笔记
  9. Latex 爬过的坑(4)——Latex中插入Emoji
  10. VS2019下载地址和安装教程(图解)