dfp.m
来自「用matlab语言来实现DFP算法」· M 代码 · 共 28 行
M
28 行
function opt=DFP()
%
% DFP算法求无约束优化问题的最小值
%
global x p k H
x=[2 2]'; %初始迭代点
H=eye(2); %初始矩阵H0=E
eps=1e-32; %控制误差
g=dfun(x);
k=0; %迭代次数
while 1
p=-1*H*g;
t_min=fminbnd(@f_search,0,10); %进行一维搜索求t的最小值
temp_x=x;
x=x+t_min*p;
temp_g=g;
g=dfun(x);
if norm(g)<eps %是否满足的要求的精度
opt=x; %求得最优值opt
break;
end
s=x-temp_x;
y=g-temp_g;
H=H-(1/(y'*H*y))*(H*y*y'*H)+(1/(y'*s))*(s*s'); %对H进行修正
k=k+1;
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?