• 大小: 1KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: Matlab  BFGS  

资源简介

拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。本程序是拟牛顿法-bfgs算法的matlab代码。

资源截图

代码片段和文件信息

function [xvalk]=bfgs(fungfunx0)
%功能:用BFGS算法求解无约束问题:min f(x)
% 输入:x0是初始点,fungfun分别是目标函数及其梯度;
%varargin是输入可变参数变量,简单调用bfgs时可以忽略它,
% 但是其他程序循环调用时将会发挥重要作用
%输出:xval分别是近似最优点和最优值,k是迭代次数。
syms x1 x2;
maxk=500;       %给出最大迭代次数
rho=0.55; sigma=0.4; epsilon=1e-5;      %给出一些常数参数及精度误差
k=0; n=length(x0);
Bk=eye(n);      %Bk=feval(‘Hesse‘x0);
while(k    gk=feval(gfunx0);      %计算精度
    if(norm(gk)        break;
    end                    

评论

共有 条评论