DFP算法及Matlab程序.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DFP算法及Matlab程序

作业二 用DFP算法求解,取,。一、求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因Hesse阵为正定阵,为严格凸函数,所以为整体 极小点。二、DFP算法迭代步骤如下:(1)给定初始点,初始矩阵(通常取单位阵),计算,令k=0,给定控制误差。(2)令。(3)由精确一维搜索确定步长,(4)令。(5)若,则停; 否则令 , 。(6)由DFP修正公式得。令k=k+1,转步骤(2)DFP算法matlab程序实现function [best_x,best_fx,count]=DFP(x0,ess)syms x1 x2 t;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,g0x0f0g0xk=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;enddisp(结果如下:) 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 1f0 = -3g0 = -4 2************************************************************第1次寻优xk = 2.0000 0.5000fk = -5.5000gk = -1 -2Hk = 0.8400 0.3800 0.3800 0.4100************************************************************第2次寻优xk = 4 2fk = -8gk = 0 0Hk = 1.0000 0.5000 0.5000 0.5000结果如下:best_x = 4 2best_fx = -8count = 2可以看到,最优点,迭代次数2次,与前面结果一致。

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档