22作业二 用DFP算法求解minf(x)?x1?2x2?2x1x2?4x1,取x0??11?,
T?10?H0???01??。
??一、求解:
g(x)?(2x1?2x2?4,?2x1?4x2)T,g0?(?4,2)T,p0??H0g0?(4,?2)T
(1)求迭代点x1
令?0(?)?f(x0??p0)?40?2?20??3,得?0(?)的极小值点?0?所以得:
1, 4x1?x0??0p0??2,0.5?,g1???1,?2?,TTs0?x1?x0?(1,?0.5),y0?g1?g0?(3,?4).TT
TTH0y0y0H0s0s01?8438???于是,由DFP修正公式有H1?H0? ??TT??y0H0y0y0s0100?3841?下一个搜索方向为p1??H1g1?(2)求迭代点x2
令?1(?)?f(x1??p1)?1?8,6?T 5824??4??5.5,得?1(?)的极小值点?1? 55T于是得:x2?x1??1p1??4,2?,g2?(0,0)T,所以:x??x2?(4,2)T,f???8,
?2?2???xf(x)因Hesse阵G(x)?G??为正定阵,为严格凸函数,所以为整体 ??24???极小点。
二、DFP算法迭代步骤如下:
(1)给定初始点x0,初始矩阵H0(通常取单位阵),计算g0,令k=0,给定控制误差?。
(2)令pk??Hkgk。
(3)由精确一维搜索确定步长?k,f(xk??kpk)?minf(xk??pk)
??0T(4)令xk?1?xk??kpk。 (5)若gk??,则x??xk?1停;
否则令sk?xk?1?xk ,yk?gk?1?gk 。 (6)由DFP修正公式得Hk?1。令k=k+1,转步骤(2)
三、DFP算法matlab程序实现
function [best_x,best_fx,count]=DFP(x0,ess) syms x1x2t;
f=x1*x1+2*x2*x2-2*x1*x2-4*x1;
fx=diff(f,x1);%求表达式f对x1的一阶求导 fy=diff(f,x2);%求表达式f对x2的一阶求导 fi=[fx fy];%构造函数f的梯度函数 %初始点的梯度和函数值
g0=subs(fi,[x1 x2],x0); f0=subs(f,[x1 x2],x0); H0=eye(2); %输出x0,f0,g0 x0 f0 g0 xk=x0; fk=f0; gk=g0; Hk=H0; k=1;
while(norm(gk)>ess)%迭代终止条件||gk||<=ess
disp('************************************************************') disp(['第' num2str(k) '次寻优']) %确定搜索方向 pk=-Hk*gk'; %由步长找到下一点x(k+1) xk=xk+t*pk';
f_t=subs(f,[x1 x2],xk); %构造一元搜索的一元函数φ(t) %由一维搜索找到最优步长 df_t=diff(f_t,t); tk=solve(df_t); if tk~=0
tk=double(tk); else break; end
%计算下一点的函数值和梯度 xk=subs(xk,t,tk) fk=subs(f,[x1 x2],xk) gk0=gk;
gk=subs(fi,[x1 x2],xk) %DPF校正公式,找到修正矩阵 yk=gk-gk0; sk=tk*pk';
Hk=Hk-(Hk*yk'*yk*Hk)/(yk*Hk*yk')+sk'*sk/(yk*sk')%修正公式 k=k+1; end
disp('结果如下:') best_x=xk;%最优点 best_fx=fk;%最优值 count=k-1;
四、程序执行结果
在命令窗口输入以下命令: >> x0=[1 1]; ess=1e-6;
[best_x,best_fx,count]=DFP(x0,ess)
程序运行结果: x0 =
1 1 f0 = -3 g0 =
-4 2
************************************************************ 第1次寻优 xk =
2.0000 0.5000 fk = -5.5000 gk =
-1 -2 Hk =
0.8400 0.3800 0.3800 0.4100
************************************************************ 第2次寻优 xk =
4 2 fk = -8 gk =
0 0 Hk =
1.0000 0.5000 0.5000 0.5000
结果如下:
best_x = 4 2 best_fx = -8 count = 2
可以看到,最优点??(4,2)T,???8,迭代次数2次,与前面结果一致。 xf
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库DFP算法及Matlab程序在线全文阅读。
相关推荐: