最速下降法matlab全局最小值_最速下降法+Matlab代码
算法原理
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代码相关推荐
- 最速下降法matlab全局最小值_梯度下降概念
1.梯度概念 (1)从几何意义上讲,就是函数变化最快的地方. 在单变量的函数中,梯度只是导数,其实就是函数在某个给定点的切线的斜率: 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数 ...
- fama matlab源码_用matlab程序做Fama-MacBeth回归的代码
求[100,200]之间第二个能被15整除的整数.(用Matlab程序做) x=100:200;>>n=find(rem(x,15)==0);>>X=x(n(2))很简单的两句 ...
- 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究
公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...
- matlab xlsread参数_利用MATLAB批量完成科研数据处理
利用常用软件批量完成科研数据处理 tags: - MATLAB - 科研软件 相信平时大家都有这种时候,测了一大堆数据,也知道该怎么去处理,但是样品很多,数据量很大,然后对于每个样品去处理的时候都得用 ...
- matlab平行因子_基于MATLAB某客车悬置系统优化与运动仿真
本文对一CNG燃气客车悬置系统建立6阶振动数学模型,基于MATLAB分析振动频率与解耦率并对系统固有频率的配置以及解耦率设计优化程序,运用NX CAE运动仿真校核MATLAB分析结果的准确性,为悬置系 ...
- python代替matlab的工程_替代Matlab的国产软件出现,开发商知乎答疑,称1年内实现100%...
点击上方 "Python人工智能技术" 关注,星标或者置顶 22点24分准时推送,第一时间送达 来自:量子位 报道 | 公众号 QbitAI | 编辑:真经君 码农真经(ID:co ...
- matlab 日期排序_在Matlab中对数据进行排序(Sorting Data in Matlab)
在Matlab中对数据进行排序(Sorting Data in Matlab) 我试图在Matlab中对以下数据进行排序,但没有得到我需要的预期输出. 这是数据: '1B-3A-5A' '1A-3A- ...
- Matlab自适应均线_用MATLAB求移动平均线,不用MOVAVG函数,求MA5,MA10 – MATLAB中文论坛...
移动平均线,简称均线.它是将某一段时间的收盘价之和除以该周期. 比如日线MA5指5天内的收盘价除以5 .请在一张图中用三种不同颜色绘制该股票收盘价数据.5日移动平均MA5.10日移动平均MA10. 时 ...
- matlab 数字识别_在MATLAB中利用神经网络进行分类
在这篇文章中,主要阐述在MATLAB环境下利用神经网络对输入的数字图像进行识别.我们利用一个5*5的矩阵来表示1-5的数据,如下图所示: 基于以上问题,我们构建的神经网络输入层的神经元个数为25个,即 ...
- matlab盒子分形维数_分形维数--matlab
一维曲线分形维数的 matlab 程序 function D=FractalDim(y,cellmax) % 求输入一维信号的计盒分形维数 %y 是一维信号 %cellmax: 方格子的最大边长 , ...
最新文章
- el search 查询排序
- Linux ping 使用教程,linux ping命令的几个简单使用方法
- springMVC各种注解及解释和使用
- ubuntu+touch+android,移动操作系统Ubuntu Touch支持安卓应用
- C++实现String类
- 常用注入 Script 方法
- wordpress二次开发技巧-functions.php篇
- 广东技能大赛软件测试项目,我校喜获2019年全国职业院校技能大赛软件测试赛项二等奖...
- 华为最新解bl解锁码计算工具_黔隆科技刷机教程红米note4X低配版忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- 一些黑苹果四叶草引导常用的kext说明
- windows无法完成格式化怎么办?
- OSPF的6种LSA
- 显卡组超级计算机,NVIDIA发布全新显卡 在家就能拥有超级计算机
- excel设定备选值
- markdown的checkbox综述
- php 手机swf播放器,php获取优酷土豆页面中视频swf播放器地址_PHP教程
- git 与github配置(老师详细版)
- 一度智信电商:教你几招,轻松利用微信给店铺引流
- 装linux系统(和win一起的双系统)
- matlab实验报告四,matlab实验报告4