题目:分别用最速下降法、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求函数最小值相关推荐

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

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

  2. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解

       第二十一节 牛顿法和L-BFGS求函数最优解 这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS.以下是本节目录.            目录 1-L-BFGS算法简介 2-牛顿法求根 ...

  3. 用模拟退火算法(simulated annealing / SA)求函数最小值

    #用模拟退火算法(simulated annealing / SA)求函数最小值 已知函数 f(x) = (x-1)^2 + 3,是求其在[ -2,2 ]的最小值时刻的解 下面为运用模拟退火算法求解上 ...

  4. 基于遗传算法求函数最小值

    一.遗传算法概述 遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的"物竞天择.适者生存"的演化法则.遗传算法是把问题参数编码为染色体 ...

  5. boost::math模块使用 Brent 方法求函数最小值的示例

    boost::math模块使用 Brent 方法求函数最小值的示例 实现功能 C++实现代码 实现功能 boost::math模块使用 Brent 方法求函数最小值的示例 C++实现代码 #inclu ...

  6. 【Machine Learning 六】梯度下降法(基于Matlab 求函数最小值)

    算法原理 梯度下降法是一个最优化算法,可以用来求一个函数的最小值,最大值等,也常用于人工神经网络中更新各个感知器之间的权值,求出cost function的最小值等,应用广泛.  其原理简单,就求函数 ...

  7. matlab遗传算法求多元函数最小值,matlab遗传算法求函数最小值

    function obj=yichuan(lb,ub,px,pm) %lb,ub为自变量的下界与上界,px为杂交概率,pm为变异概率 popsize=40; %设定种群大小为40 maxgen=500 ...

  8. 黄金分割法求函数最小值

    '测试表达式 x^2+2*x'测试区间[-3 5]' 测试精度e=0.2 '书上最小值x=-1.0255 f=-0.999 Function RESULT(ByVal expression As St ...

  9. 梯度下降求函数最小值C++样例

    强力推荐大家阅读<深度学习的数学>一书,日本作家所写(通俗易懂),可当作课外读物阅读 #include<iostream> #include<cmath> usin ...

  10. 遗传算法求函数最小值(多维)1

     目标函数:  代码: %%实值遗传算法求函数极值%%%% %%%%%初始化参数%%%%% clear all; %清除所有变量 close all; %清图 clc; %清屏 NP=100; %染色 ...

最新文章

  1. Html2excel 1.4.1 发布,Html 转 Excel 工具包
  2. 自己封装JSTL 自定义标签
  3. 2016-11-17试题解题报告
  4. Java监听器用法(三):外部类监听器
  5. hdu 5203(枚举)
  6. 555定时器回差电压计算公式_555时基电路引脚解析
  7. 测试抽象类和模板方法模式
  8. java character类
  9. eclipse 版本 查看
  10. mac 更换默认蓝牙适配器_聊一聊蓝牙名字和地址的来龙去脉
  11. 指针变量本质(四十三)
  12. 高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;
  13. Kernel 日志缓存大小修改
  14. 【论文笔记】Graph U-Nets
  15. debian中直接使用yed.jar
  16. Python 制作个性化形状的云词
  17. ASP.NET Web API实现简单的文件下载与上传
  18. golang 模拟键盘输入
  19. cgb2109-day02
  20. UniPro助力半导体企业之低代码平台篇:高效协同快速响应

热门文章

  1. opencv cv::Mat::convertTo()函数
  2. sodp软件如何导入多个工作面信息_如何批量导入数据到手机通讯录
  3. 《运算放大器权威指南》读书笔记(二)
  4. H264封装为FLV
  5. android 8字体下载,安卓手机字体
  6. 浅谈电子商务网站购物车
  7. 最全计算机基础知识竞赛试题,计算机基础知识竞赛试题.doc
  8. Spring Security系列之基本原理
  9. 【bootcamp问答系统部署】
  10. 常用的jar包下载网站(自用)