bfgsi.m

来自「最优化的bfgs算法」· M 代码 · 共 26 行

M
26
字号
function H = bfgsi(H0,dg,dx)% H = bfgsi(H0,dg,dx)% dg is previous change in gradient; dx is previous change in x;% 6/8/93 version that updates inverse hessian instead of hessian% itself.% Copyright by Christopher Sims 1996.  This material may be freely% reproduced and modified.if size(dg,2)>1   dg=dg';endif size(dx,2)>1   dx=dx';endHdg = H0*dg;dgdx = dg'*dx;if (abs(dgdx) >1e-12)   H = H0 + (1+(dg'*Hdg)/dgdx)*(dx*dx')/dgdx - (dx*Hdg'+Hdg*dx')/dgdx;else   disp('bfgs update failed.')   disp(['|dg| = ' num2str(sqrt(dg'*dg)) '|dx| = ' num2str(sqrt(dx'*dx))]);   disp(['dg''*dx = ' num2str(dgdx)])   disp(['|H*dg| = ' num2str(Hdg'*Hdg)])   H=H0;endsave H.dat H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?