最速下降法matlab全局最小值_matlab实现最速下降法和dfp求函数最小值
题目:分别用最速下降法、DFP法求解问题:
1、
2、
1取初始点,通过Matlab编程实现求解过程。
1公用函数如下:
1、functionf= fun( X )
%所求问题目标函数
f=X(1)^2-10*cos(2*pi*X(1))+10+X(2)^2-10*cos(2*pi*X(2))+10+X(3)^2-10*cos(2*pi*X(3))+10;
end
2、functiong= gfun( X )
%所求问题目标函数梯度
g=[2*X(1)+20*pi*sin(2*pi*X(1)),2*X(2)+20*pi*sin(2*pi*X(2)),2*X(3)+20*pi*sin(2*pi*X(3))];
end
3、functionHe = Hess( X )
%所求问题目标函数Hesse矩阵
n=length(X);
He=zeros(n,n);
He=[2+40*pi*pi*cos(X(1)),0,0;
0,2+40*pi*pi*cos(X(2)),0;
0,0,2+40*pi*pi*cos(X(3))];
end
解法一:最速下降法
function[ x,val,k ] = grad( fun,gfun,x0 )
%功能:用最速下降法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
while(k
g=feval(gfun,x0);%计算梯度
d=-g;%计算搜索方向
if(norm(d)
break;
end
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*d)
mk=m;break;
end
m=m+1;
end
x0=x0+rho^mk*d;
k=k+1;
end
x=x0;
val=feval(fun,x0);
end
解法二:DFP法
function[ x,val,k ] = dfp( fun,gfun,x0 )
%功能:用DFP法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
n=length(x0);
Hk=inv(feval('Hess',x0));
while(k
gk=feval(gfun,x0);
if(norm(gk)
break;
end
dk=-Hk*gk';
dk=dk';
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*dk)
mk=m;break;
end
m=m+1;
end
%DFP校正
x=x0+rho^mk*dk;
sk=x-x0;
yk=feval(gfun,x)-gk;
if(sk'*yk>0)
Hk=Hk-(((Hk*yk')*yk)*Hk)/(yk*Hk*yk')+(sk'*sk)/(sk*yk');
end
k=k+1;
x0=x;
end
val=feval(fun,x0);
end
2取初始点,通过Matlab编程实现求解过程。
1公用函数如下:
1、functionf= fun( X )
%所求问题目标函数
f=X(1)^2/4000-cos(X(1)/sqrt(1))+1+X(2)^2/4000-cos(X(2)/sqrt(2))+1+X(3)^2/4000-cos(X(3)/sqrt(3))+1;
end
2、functiong= gfun( X )
%所求问题目标函数梯度
g=[X(1)/2000+sin(X(1)/sqrt(1))/sqrt(1),X(2)/2000+sin(X(2)/sqrt(2))/sqrt(2),X(3)/2000+sin(X(3)/sqrt(3))/sqrt(3)]
end
3、functionHe = Hess( X )
%所求问题目标函数Hesse矩阵
n=length(X);
He=zeros(n,n);
He=[1/2000+cos(X(1)),0,0;
0,1/2000+cos(X(2))/2,0;
0,0,cos(X(3)/3)];
end
解法一:最速下降法
function[ x,val,k ] = grad( fun,gfun,x0 )
%功能:用最速下降法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
while(k
g=feval(gfun,x0);%计算梯度
d=-g;%计算搜索方向
if(norm(d)
break;
end
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*d)
mk=m;break;
end
m=m+1;
end
x0=x0+rho^mk*d;
k=k+1;
end
x=x0;
val=feval(fun,x0);
end
2.1.
2.2解法二:DFP法
function[ x,val,k ] = dfp( fun,gfun,x0 )
%功能:用DFP法求无约束问题最小值
%输入:x0是初始点,fun和gfun分别是目标函数和梯度
%输出:x、val分别是最优点和最优值,k是迭代次数
maxk=5000;%最大迭代次数
rho=0.5;sigma=0.4;
k=0;eps=10e-6;
n=length(x0);
Hk=inv(feval('Hess',x0));
while(k
gk=feval(gfun,x0);
if(norm(gk)
break;
end
dk=-Hk*gk';
dk=dk';
m=0;mk=0;
while(m<20)
if(feval(fun,x0+rho^m*dk)
mk=m;break;
end
m=m+1;
end
%DFP校正
x=x0+rho^mk*dk;
sk=x-x0;
yk=feval(gfun,x)-gk;
if(sk'*yk>0)
Hk=Hk-(((Hk*yk')*yk)*Hk)/(yk*Hk*yk')+(sk'*sk)/(sk*yk');
end
k=k+1;
x0=x;
end
val=feval(fun,x0);
end
最速下降法matlab全局最小值_matlab实现最速下降法和dfp求函数最小值相关推荐
- 最速下降法matlab全局最小值_梯度下降概念
1.梯度概念 (1)从几何意义上讲,就是函数变化最快的地方. 在单变量的函数中,梯度只是导数,其实就是函数在某个给定点的切线的斜率: 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数 ...
- 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解
第二十一节 牛顿法和L-BFGS求函数最优解 这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS.以下是本节目录. 目录 1-L-BFGS算法简介 2-牛顿法求根 ...
- 用模拟退火算法(simulated annealing / SA)求函数最小值
#用模拟退火算法(simulated annealing / SA)求函数最小值 已知函数 f(x) = (x-1)^2 + 3,是求其在[ -2,2 ]的最小值时刻的解 下面为运用模拟退火算法求解上 ...
- 基于遗传算法求函数最小值
一.遗传算法概述 遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的"物竞天择.适者生存"的演化法则.遗传算法是把问题参数编码为染色体 ...
- boost::math模块使用 Brent 方法求函数最小值的示例
boost::math模块使用 Brent 方法求函数最小值的示例 实现功能 C++实现代码 实现功能 boost::math模块使用 Brent 方法求函数最小值的示例 C++实现代码 #inclu ...
- 【Machine Learning 六】梯度下降法(基于Matlab 求函数最小值)
算法原理 梯度下降法是一个最优化算法,可以用来求一个函数的最小值,最大值等,也常用于人工神经网络中更新各个感知器之间的权值,求出cost function的最小值等,应用广泛. 其原理简单,就求函数 ...
- matlab遗传算法求多元函数最小值,matlab遗传算法求函数最小值
function obj=yichuan(lb,ub,px,pm) %lb,ub为自变量的下界与上界,px为杂交概率,pm为变异概率 popsize=40; %设定种群大小为40 maxgen=500 ...
- 黄金分割法求函数最小值
'测试表达式 x^2+2*x'测试区间[-3 5]' 测试精度e=0.2 '书上最小值x=-1.0255 f=-0.999 Function RESULT(ByVal expression As St ...
- 梯度下降求函数最小值C++样例
强力推荐大家阅读<深度学习的数学>一书,日本作家所写(通俗易懂),可当作课外读物阅读 #include<iostream> #include<cmath> usin ...
- 遗传算法求函数最小值(多维)1
目标函数: 代码: %%实值遗传算法求函数极值%%%% %%%%%初始化参数%%%%% clear all; %清除所有变量 close all; %清图 clc; %清屏 NP=100; %染色 ...
最新文章
- Html2excel 1.4.1 发布,Html 转 Excel 工具包
- 自己封装JSTL 自定义标签
- 2016-11-17试题解题报告
- Java监听器用法(三):外部类监听器
- hdu 5203(枚举)
- 555定时器回差电压计算公式_555时基电路引脚解析
- 测试抽象类和模板方法模式
- java character类
- eclipse 版本 查看
- mac 更换默认蓝牙适配器_聊一聊蓝牙名字和地址的来龙去脉
- 指针变量本质(四十三)
- 高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;
- Kernel 日志缓存大小修改
- 【论文笔记】Graph U-Nets
- debian中直接使用yed.jar
- Python 制作个性化形状的云词
- ASP.NET Web API实现简单的文件下载与上传
- golang 模拟键盘输入
- cgb2109-day02
- UniPro助力半导体企业之低代码平台篇:高效协同快速响应