单变量函数一维寻优搜索方法.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单变量函数一维寻优搜索方法

设计任务:单变量函数一维寻优搜索方法 第一部分(20%) 第二部分(20%) 第三部分(30%) 第四部分(30%) 报告成绩: 指导教师: 预习报告(20%): 平时成绩(10%): 验收答辩成绩(50%): 设计报告成绩(20%): 总评成绩: 源代码: 1. GUI模块 screen=get(0,Screensize); w=screen(3);h=screen(4); figure(color,[1,1,1],position,[0.2*h,0.2*h,0.5*w,0.3*h],Name,单变量函数,NumberTitle,off,MenuBar,none); hcount=uimenu(gcf,label,count); hmenu1=uimenu(hcount,label,全局搜索,Callback,six); hmenu2=uimenu(hcount,label,二分法,Callback,five); hmenu3=uimenu(hcount,label,黄金分割,Callback,golden); hmenu4=uimenu(hcount,label,FABONONACI,Callback,four); hplot=uimenu(gcf,label,plot); hmenu1=uimenu(hplot,label,误差); hmenu1=uimenu(hplot,label,时间); uimenu(gcf,label,quit,call,close(gcf)); 2. 黄金分割函数模块 tic; a=0;b=1;e=1e-10; a1=b-0.618*(b-a); a2=a+0.618*(b-a); while b-ae y1=8*a1^3-2*a1^2-7*a1+3; y2=8*a2^3-2*a2^2-7*a2+3; if y1y2 a=a1; a1=a2; y1=y2; a2=a+0.618*(b-a); plot(a2,y1,bh) axis([0.6 0.65 -0.25 0.18]); title(黄金分割法); else b=a2; a2=a1; y2=y1; a1=b-0.618*(b-a); plot(a1,y2,bh) axis([0.6 0.65 -0.25 0.18]); title(黄金分割法); end end xmin=(a+b)/2 ymin=8*xmin^3-2*xmin^2-7*xmin+3 t=toc; disp(t=); disp(t); per=(xmin-0.6298)/0.6298 3.fabonnaci法模块 tic; f0=1;f1=1; f=f0+f1; n=2;a=0;b=1; while 1/f1e-10 f0=f1;f1=f;f=f0+f1; n=n+1; end fun=inline(8*x^3-2*x^2-7*x+3,x); for k=1:n-2 t1=b+f1/f*(a-b);t2=a+f1/f*(b-a); if fun(t1)fun(t2) b=t2; else a=t1; end f=f1;f1=f0;f0=f-f1; end if fun(t1)fun(t2) t=t1,y=fun(t1) else t=t2,y=fun(t2) end plot(t,y,r*) axis([0.6 0.65 -0.25 0.18]); title(fabonnaci法); t=toc; disp(用时t=); disp(t); per=(t-0.6298)/0.6298 4.二分法 tic; a=0;b=1;e=1e-10; x0=(a+b)/2; fun=inline(8*x^3-2*x^2-7*x+3,x); f=[8,-2,-7,3]; y=polyval(polyder(f),x0); while b-ae if y0 b=x0; x0=(a+b)/2; y=polyval(polyder(f),x0); elseif y0 a=x0; x0=(a+b)/2; y=polyval(

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档