DFP方法
1.迭代步骤
2.matlab代码
%DFP搜索最优解
clc;
clear;
Q = cell(100,1);
Q{1,1} = [2,0;0,4];
x = cell(100,1);
x{1,1} = [0;0];
H = cell(100,1);
H{1,1} = [1,0;0,1];
g = cell(100,1);
g{1,1} = [-2;0];
p = cell(100,1);
p{1,1} = -g{1,1};
lam = cell(100,1);
lam{1,1} = -(g{1,1}'*p{1,1})/(p{1,1}'*Q{1,1}*p{1,1});
s = cell(100,1);
y = cell(100,1);
for i = 2:11
x{i,1} = x{i-1,1} + lam{i-1,1}*p{i-1,1};
tmp = x{i,1};
x1 = tmp(1);
x2 = tmp(2);
Q{i,1} = [24*x1+2-8*x2,-8*x1;-8*x1,4];
g{i,1} = [8*x1^3+(2-8*x2)*x1-2;4*x2-4*x1^2];
s{i-1,1} = x{i,1} - x{i-1,1};
y{i-1,1} = g{i,1} - g{i-1,1};
H{i,1} = H{i-1} - (H{i-1,1}*y{i-1,1}*y{i-1,1}'*H{i-1,1})/(y{i-1,1}'*H{i-1,1}*y{i-1,1}) + (s{i-1,1}*s{i-1,1}')/(s{i-1,1}'*y{i-1,1});
p{i,1} = -H{i}*g{i};
lam{i,1} = -(g{i,1}'*p{i,1})/(p{i,1}'*Q{i,1}*p{i,1});
end