利用MATLAB实现黄金分割法求极值问题 北京理工大学 机械优化设计.docxVIP

  • 33
  • 0
  • 约2.69千字
  • 约 5页
  • 2021-04-03 发布于天津
  • 举报

利用MATLAB实现黄金分割法求极值问题 北京理工大学 机械优化设计.docx

机械优化设计报告(3 机械优化设计报告(3) PAGE PAGE # 利用MATLAB实现黄金分割法求极值问题 姓名:XXX 学号:XXX (北京理工大学机械与车辆学院车辆工程,北京 100081) 黄金分割法的基本思想 黄金分割法(golden section method是优化方法中的经典算法,以算法简单、 效果显著而著称,是许多优化算法的基础。但它只适用于一维区间 [a,b]上的凸 函数。其基本思想是:依照“去坏留好”原则、对称原则以及等比收缩原则,禾 用序列消去原理,通过不断缩小单峰区间长度,即每次迭代都消去一部分无用区 间,使搜索区间不断缩小,来逐步缩小搜索范围,从而不断逼近目标函数极小点 的一种优化方法。该方法对函数没有特殊要求,函数甚至可以是不连续的。 在搜索区间[a b内必须按下述规则对称地取al和a2两点: 印=b叫 b- aa2二a ,a1和a2将区间分成三段,其中入称为区间收缩 率,黄金分割法中 入618,然后计算插入点的函数值。应用函数的单峰性质, 通过函数值大小的比较,删去其中一段,使搜索区间得以缩小。然后再在保留下 来的区间上作同样的处理,如此迭代下去,是搜索区间无限缩小,从而得到极小 点的数值近似解。 黄金分割法程序结构简单,容易理解,但计算效率偏低,较适用于设计变量 少的优化问题中的一维搜索。 迭代过程和算法流程图 2.1迭代过程 给定区间la,b 1,并输入;7; 计算 a1 二b-0.618(b-a),a2 二 a 0.618(b-a); 判断b_as若成立,则迭代终止,到最后一步(7);否则,继续; 若 f(a1)兰 f(a2),转(5),否则转(6); 令 b=a2,a2=a1,a1=b-0.618(b-a),转(3); 令a=a1,a仁a2,a2=a+0.618(b-a),转(3); 得出最优解:x^ (a b) /2, y* = f(x*)。 2.2算法流程图 3.利用MATLAB求解实例 3.1实例 本文以本章课后习题(3.1)为例来练习黄金分割法算法在 MATLAB里的实 现。 用黄金分割法求解f(x) = x(x?2)的近似极小点x及f(x*),a=-3,b = 5, ;=0.01。 程序如下: (1)首先建立函数。建立.m文件,命名为fun_gs.m,文件内容如下: function y=fun_gs(x) y=xA2+2*x; (2)编写迭代程序主体。建立gs.m文件,内容如下: a=-3; b=5; eps=0.01; n=0; i=100; a1= b-0.618*(b-a); a2=a+0.618*(b-a); y1=fun_gs(a1); y2=fun_gs(a2); for k=1:i if (abs(b-a)v=eps) y=fun_gs((b+a)/2); break; else if (y1=y2) y2=fun_gs(a1); b=a2; a2=a1; a1= b-0.618*(b-a); y1=fun_gs(a1); else y仁 fun_gs(a2); a=a1; a仁 a2; a2=a+0.618*(b-a); y2=fun_gs(a2); end n=n+1; end end n;x=(a+b)/2;y; 运行程序,结果为: n=14迭代次数 x* =「1.0013极小值点 y* —1.0000极小值点的函数值 计算结果如图:NameansbepsValue 计算结果如图: Name ans b eps Value Min Max -1.0061 -1.00”. -1,00... -1.0025 -liOOub -l.DO.b. -1,0002 -1-OOmr *1,00.? -1.0000 -1.00.^ -1.00... -0.9966 -0.99?, -0,99.? 0.0100 0.0100 0.0100 100 100 100 15 15 15 14 14 14 -1.0013 -I,OOr. -1.00.., -1.0000 -l.OOub J,00 … -1.0000 -L00f? -1,00.,. -1.0000 -l.DO.j. -l.OO.b. 图3-2计算结果(:-0.01) 3.2实例结果分析 f (x)二x(x 2) =x2 2x的最小值为x b = -2 = T时取得,此时有 2a 2 机械优化设计报告(3 机械优化设计报告(3) PAGE PAGE # 从上述计算结果可以看出,利用 MATLAB实现的黄金分割法,通过14次 迭代可以满足收敛精度要求,并且计算结果和理论结果基本一致,误差为 .:=(-1.0013)-(-1) =0.0013,即求得了函数的全局最优解。当 ;=0.001时,即 收

文档评论(0)

1亿VIP精品文档

相关文档