DFP算法及Matlab程序

DFP算法及Matlab程序

ID:45679086

大小:51.81 KB

页数:5页

时间:2019-11-16

DFP算法及Matlab程序_第1页
DFP算法及Matlab程序_第2页
DFP算法及Matlab程序_第3页
DFP算法及Matlab程序_第4页
DFP算法及Matlab程序_第5页
资源描述:

《DFP算法及Matlab程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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]=DFP

2、(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、<=essdisp('******

7、******************************************************')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,t,tk)fk=subs(f,

8、[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)程序运行结果:x0=11f0=-3g0=-4

9、2************************************************************第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=-8count=2可以看到,最优点,迭代次数2次,与前面

10、结果一致。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。