• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: 拟牛顿法  Matlab  

资源简介

拟牛顿法只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法(Newton's Method)更为有效。

资源截图

代码片段和文件信息

function [xkvalk]=bfgs(x0)
maxk=500;
rho=0.55;
sigma=0.4;epsilon=1.0e-5;
k=0;n=length(x0);x=x0;
Bk=eye(n);%Bk=feval(‘hessen‘x0);
while(k    gk=gfun(x0);
    if(norm(gk)        break;
    end 
   dk=-Bk\gk;
    m=0;mk=0;
    while (m<20)
        newf=fun(x0+rho^m*dk);
        oldf=fun(x0);
        if(newf            mk=m;break;
        end
        m=m+1;
    end
    %BFGS校正
    xk=x0+rho^mk*dk;
    sk=xk-x0;
    yk=gfun(xk)-gk;
    if(yk‘*sk>0)
        Bk=Bk-(Bk*sk*sk‘*Bk)/(sk‘*Bk*sk)+(yk*yk‘)/(yk‘*sk);
    end 
    k=k+1;
    x0=xk;
end 
val=fun(x0);  
end
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        648  2015-06-17 20:08  拟牛顿法\bfgs.m

     文件         57  2015-06-17 20:00  拟牛顿法\fun.m

     文件         83  2015-06-17 20:00  拟牛顿法\gfun.m

     文件         82  2015-06-17 19:37  拟牛顿法\hessen.m

     文件         31  2015-06-17 20:10  拟牛顿法\solve.m

     目录          0  2015-08-13 11:32  拟牛顿法

----------- ---------  ---------- -----  ----

                  901                    6


评论

共有 条评论