资源描述:
《DFP算法及Matlab程序教学提纲.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、作业二用DFP算法求解,取,。一、求解:(1)求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为(2)求迭代点x2令,得的极小值点于是得:,所以:,因Hesse阵为正定阵,为严格凸函数,所以为整体极小点。二、DFP算法迭代步骤如下:(1)给定初始点,初始矩阵(通常取单位阵),计算,令k=0,给定控制误差。(2)令。(3)由精确一维搜索确定步长,(4)令。(5)若,则停;否则令,。(6)由DFP修正公式得。令k=k+1,转步骤(2)三、DFP算法matlab程序实现function[best_x,best_fx,count
2、]=DFP(x0,ess)symsx1x2t;f=x1*x1+2*x2*x2-2*x1*x2-4*x1;fx=diff(f,x1);%求表达式f对x1的一阶求导fy=diff(f,x2);%求表达式f对x2的一阶求导fi=[fxfy];%构造函数f的梯度函数%初始点的梯度和函数值g0=subs(fi,[x1x2],x0);f0=subs(f,[x1x2],x0);H0=eye(2);%输出x0,f0,g0x0f0g0xk=x0;fk=f0;gk=g0;Hk=H0;k=1;while(norm(gk)>ess)%迭代终止条件
3、
4、gk
5、
6、<=essdi
7、sp('************************************************************')disp(['第'num2str(k)'次寻优'])%确定搜索方向pk=-Hk*gk';%由步长找到下一点x(k+1)xk=xk+t*pk';f_t=subs(f,[x1x2],xk);%构造一元搜索的一元函数φ(t)%由一维搜索找到最优步长df_t=diff(f_t,t);tk=solve(df_t);iftk~=0tk=double(tk);elsebreak;end%计算下一点的函数值和梯度xk=subs(xk,
8、t,tk)fk=subs(f,[x1x2],xk)gk0=gk;gk=subs(fi,[x1x2],xk)%DPF校正公式,找到修正矩阵yk=gk-gk0;sk=tk*pk';Hk=Hk-(Hk*yk'*yk*Hk)/(yk*Hk*yk')+sk'*sk/(yk*sk')%修正公式k=k+1;enddisp('结果如下:')best_x=xk;%最优点best_fx=fk;%最优值count=k-1;三、程序执行结果在命令窗口输入以下命令:>>x0=[11];ess=1e-6;[best_x,best_fx,count]=DFP(x0,ess)程序
9、运行结果:x0=11f0=-3g0=-42************************************************************第1次寻优xk=2.00000.5000fk=-5.5000gk=-1-2Hk=0.84000.38000.38000.4100************************************************************第2次寻优xk=42fk=-8gk=00Hk=1.00000.50000.50000.5000结果如下:best_x=42best_fx=-8c
10、ount=2可以看到,最优点,迭代次数2次,与前面结果一致。交通安全知识竞赛部分复习题及答案1.行人通过人行横道,要按人行横道灯的指示通行。小明在通过人行横道线前,看到人行横道红灯亮时,应该__B___。A.迅速通过人行横道B.在人行横道线前等待C.缓慢通过人行横道D.绕开人行横道通过 2.在没有施划人行横道的公路上,乘车人从公共汽车下车后横过公路时,您认为下列做法正确的是__C___。A.从车的前方横过道路B.从车的后方横过道路C.车开走后,确认安全通过D.等车开走后,迅速通过3.在设有交通隔离设施的路段,小芳过街时应当___D__。A.直接跨越
11、B.确认安全后跨越C.无车辆通行时跨越D.经人行横道或过街设施通过 4.交通参与者在道路上通行时,应遵循各行其道的原则。小璐步行外出应当在___B__上行走。A.城市快速路B.人行道C.封闭的机动车道D.非机动车道 5.行人在横过道路时,应注意观察道路上通行的车辆。您认为在横过道路时,错误的行为是__A___。A.既不左看,也不右看B.左看、右看、再左看C.左右观察,确定安全D.一站、二看、三通过6.驾驶自行车出行是环保、健康的交通参与方式。在没有非机动车道的道路上,您认为自行车应该在道路的__A___通行。