精确线搜索方法.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文档。上传文档
查看更多
精确线搜索方法

实验一 实验项目编号 实验项目名称 精确线搜索方法 实验学时 2 实验日期 2013.10.28 成绩 实验地点 ********* 指导老师 杨扬 一、实验目的、要求 目的:掌握线性搜索中精确线搜索的基本思想,熟悉其中的无导数方法黄金分割法及利用导数信息的逐次插值逼近算法,加强编程能力和编程技巧,能够上机求解单变量函数的最优化问题,同时为解决后面的多变量函数最优化做好基础。 要求:针对给定的实验题目,根据所学的黄金分割算法和逐次插值逼近算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。 二、实验原理 算法详见教材中算法3.2.1,算法3.3.1等。需要写算法 三、实验内容: 1、用0.618法极小化,区间为[-1,1]。 2、用二次插值法求的近似最优解,初始搜索区间为[0,1]。 3、分别用0.618法、三点二次插值法求在区间[0,1]上的极大值。 四、实验过程原始记录(数据、图表、计算等) 三点二次插值法: 主程序: function[k,j,min]= f1(h,a,b,c,e) k=1; A=feval(h,a); B=feval(h,b); C=feval(h,c); while(k=100) d=((b^2-c^2)*A+(c^2-a^2)*B+(a^2-b^2)*C)/(2*((b-c)*A+(c-a)*B+(a-b)*C)); D=feval(h,d); if db if D=B A=B;a=b;b=d;B=D; else c=d;C=D; end if abs(c-a)=e j=d; min=D; return; end else if D=B c=b;b=d;C=B;B=D; else a=d;A=D; end if abs(c-a)=e j=d; min=D; return; end end k=k+1; end 目标函数1 function y= h(t) y=-sin(t)^6*tan(1-t)*exp(30*t); 目标函数2 function y= h(x) y=1-t*exp(-t^2) 0.618法: 主程序: function[min,x]=f(fun,a,b,e) a(1)=a; b(1)=b; k=1; r(1)=a(1)+0.382*(b(1)-a(1));%最初试探点 u(1)=a(1)+0.618*(b(1)-a(1)); while((b(k)-a(k))e) h(k)=feval(fun,r(k));%计算函数在r(n)处的值 g(k)=feval(fun,u(k));%计算函数在u(n)处的值 if h(k)g(k) a(k+1)=r(k);b(k+1)=b(k);r(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1)); else a(k+1)=a(k);b(k+1)=u(k);u(k+1)=r(k);r(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1)); end k=k+1; end x=(b(k)+a(k))/2; min=feval(fun,x);%函数的极值 目标函数1: function y= fun(t) y=-sin(t)^6*tan(1-t)*exp(30*t); 目标函数2: y=exp(-t)+exp(t); 实验结果及分析 三点二次插值法: Max y=sin(x)^6*tan(1-x)*exp(30*x); [k,j,min]= f1(h,0,0.4,1,0.001) k =44 j =0.9707 min =4.1086e+010 Min y=1-t*exp(-t^2); [k,j,min]= f1(h,0,0.5,1,0.001) k = 13 j =0.7071 min = 0.5711 0.617法: Max y=-sin(x)^6*tan(1-x)*exp(30*x); [k,min,x]=f(fun,0,1,0.001) k =16 max= 4.1086e+010 x = 0.9707 Min y=exp(-t)+exp(t); [k,min,x]=f(fun,-1,1,0.01) k =13 min =2.0000 x =-4.6968e-005 分析:根据精确线搜索的换进分割法和逐次插值逼近法编写的matlab程序,比较发现,精度e越小(即接近于0),越接近目标值,迭代次数越大;当精度e

文档评论(0)

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

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

1亿VIP精品文档

相关文档