数值最优化实验一.docVIP

  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文档。上传文档
查看更多
实验一 一、实验目的: 掌握Armijo线性搜索法的思想方法及程序编写。 实验要求: 给出Armijo类线性搜索法的Matlab程序,输出变量应包括算法是否确定满足条件的步长,步长,所需的函数值计算次数,梯度值计算次数,内迭代次数等 实验内容 编写Armijo非精确线性搜索的Matlab程序,并分别求出下面问题的满足Armijo搜索的步长。方向采用最速下降方向 1、Armijio非精确线性搜索的Matlab程序(牛顿修正法) badsc.m文件,如下代码 function[f,df,d]=badsc(n,m,x) fvec=zeros(m,1);J=zeros(m,n); fvec=[x(1)-10^6;x(2)-2*10^(-6);x(1)*x(2)-2]; J=[1 0;0 1;x(2) x(1)]; f=fvec*fvec; df=2*J*fvec; hessian=[2+2*x(2)^2,4*x(1)*x(2)-4;4*x(1)*x(2)-4,2+2*x(1)^2]; d=-inv(hessian)*df; 2、在MATLAB命令窗口中输入以下代码: x=[1;1];n=2;m=3; k=0;%记录迭代次数 w=0.9;p=0.5;a=1;%初始步长 [f,df,d] = badsc(n,m,x); t=d;y=f; temp=w*df*t;xtemp=x+a*t; [f1,df1,d] = badsc(n,m,xtemp); if f1=y+a*temp a=a; k=k+1; else a=w; f1=y+a*temp; k=k+1; end while f1y+a*temp; a=a*p; xtemp=x+a*t; [f1,df1,d] = badsc(n,m,xtemp); k=k+1; end h=a step=k 程序2: function [flag,h,grad,stepsize]=armijo(n,m,x,b) % flag 标记作用,h表示最终的步长,grad表示梯度,stepsize表示迭代次数 % xn=xc+a*d xc已知,a已知,d已知,b已知 % fn=fx+a*sigma*gc*d------armijo型线性收缩公式(2.6) % d是下降方向,b是一个给定的常数且b0 % flag=0: satisfactory xn found; % flog=1: routine failed to locate satisfactory xn sufficiently distinct flag=1;stepsize=0; sigma=10^(-4);%0sigma1 a=1; [fvec,J,grad,hessian,fc,d]=badscb(n,m,x); slope=grad*d; xc=x; while flag==1 xn=xc+a*d; [fvec,J,grad,hessian,fn,d]=badscb(n,m,x); if fn=fc+a*sigma*slope flag=0; else a=b*a;xc=xn;fc=fn; stepsize=stepsize+1;%表示迭代一次 slope=grad*d; end end h=a;%满足结果的步长 实验结果 x = 1 1 h = 0.1125 step = 4 五、讨论: 在上面的Armijo型线性搜索中,试探步按比例b缩小让其逐渐逼近所需的合适步长。 若b(b=ρ)在(0,1)较大,则相邻两次试探步的改变相对较小,此时,需要经过较多次的搜索才能得到结果。 若b值较小,则相邻两次的试探步的改变相对较大,此时,可经过相对较少的试探步得到结果,但获得的步长可能很小。

文档评论(0)

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

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

1亿VIP精品文档

相关文档