您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 0.618法的matlab实现
实验报告实验题目:0.618法的MATLAB实现学生姓名:学号:实验时间:2013-5-13一.实验名称:0.618法求解单峰函数极小点二.实验目的及要求:1.了解并熟悉0.618法的方法原理,以及它的MATLAB实现.2.运用0.618法解单峰函数的极小点.三.实验内容:1.0.618法方法原理:定理:设f是区间],[ba上的单峰函数,],[,)2()1(baxx,且)2()1(xx.如果)()()2()1(xfxf,则对每一个],[)1(xax,有)()()2(xfxf;如果)()()2()1(xfxf,则对每一个],[)2(bxx,有)()()1(xfxf.根据上述定理,只需选择两个试探点,就可将包含极小点的区间缩短.事实上,必有如果)()()2()1(xfxf,则],[)1(bxx;如果)()()2()1(xfxf,则][)2(xax,.0.618法的基本思想是,根据上述定理,通过取试探点使包含极小点的区间(不确定区间)不断缩短,当区间长度小到一定程度时,区间上各点的函数值均接近极小值,因此任意一点都可作为极小点的近似.0.618法计算试探点的公式:).(618.0),(382.0kkkkkkkkabaaba2.0.618法的算法步骤:①置初始区间],[11ba及精度要求0L,计算试探点1和1,计算函数值)(1f和)(1f.计算公式是).(618.0),(382.011111111abaaba令1k.②若Labkk,则停止计算.否则,当)()(kkff时,转步骤③;当)()(kkff时,转步骤④.③置kka1,kkbb1,kk1,)(618.01111kkkkaba,计算函数值)(1kf,转步骤⑤.④置kkaa1,kkb1,kk1,)(382.01111kkkkaba,计算函数值)(1kf,转步骤⑤.⑤置1:kk,返回步骤②.四.实验流程图及其MATLAB实现:1.流程图:置初始区间],[11ba及精度要求0L计算试探点1和1计算函数值)(1f和)(1f置kka1,kkbb1,kk1)(618.01111kkkkaba计算函数值)(1kf)()(kkff置kkaa1,kkb1,kk1)(382.01111kkkkaba计算函数值)(1kfLabkk置1:kk)(5.0kkbax开始YNYN2.代码及数值算例:(1)程序源代码:function[x,k]=GSe(f,a,b,delta)%0.618法求解单峰函数极小点f=inline(f);N=10000;fork=1:Nm=a+0.382*(b-a);n=a+0.618*(b-a);iff(m)f(n)a=m;m=n;elseb=n;n=m;endifabs(b-a)deltax=0.5*(b+a);break;endend(2)数值算例:12def)(min2xxxf,初始区间]1,1[],[11ba,精度16.0L.(i)键入命令:[x,k]=GSe('2*x^2-x-1',-1,1,0.16)(ii)运行结果:x=0.2229k=6五.总结:0.618法(黄金分割法)适用于单峰函数,故应先确定目标函数的单峰区间,方可进行迭代计算.但单峰区间不是很明显就能确定,故可用进退法寻找并确定单峰区间.六.参考文献:陈宝林编著《最优化理论与算法》清华大学出版社2005年10月第2版
本文标题:0.618法的matlab实现
链接地址:https://www.777doc.com/doc-5467318 .html