资源描述:
《机械优化设计实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、机械设计实验报告班级专业:机制10—4班姓名:杨长文学号:5410020104501.黄金分割法的基本思想在实际计算中,最常用的一维搜索试探方法是黄金分割法,又称0.618法。黄金分割法适用于[a,b]区间上的任何单谷函数求极值问题。对函数除要求“单谷”外不作任何要求,甚至可以不连续。因此,这种方法的适用面非常广。黄金分割法也是建立在区间消去法原理基础上的试探方法,即在区间[a,b]内适当插入两点a1,a2并计算其函数值。a1,a2将区间分成三段,应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后再在保留下的区间作同样处理,
2、如此迭代下去,使搜索区间无限缩小,从而求得极小值的近似值。黄金分割法要求插入点a1,a2的位置相对于区间[a,b]两端点具有对称性,即a1=b-λ(b-a)a2=a+λ(b-a)λ为待定常数。λλ2λ(1-λ)aa1a2ba3l-λλl假设保留来区间[a,a2],插入a3使得aa3=λ(1-λ),aa1=λ2则1-λ=λ2λ=0.618可见黄金分割法能使相邻两次搜索区间都具有相同的缩短率0.618,所以黄金分割法又称0.618法。黄金分割法的搜索过程:1)给出初始搜索区间[a,b]及收敛精度ε(ε=0.001),将λ赋以值0.618。2)按坐标点计算a1
3、,a2的值,并计算相应的函数值f(a1),f(a2)。3)根据区间消去法原理缩短搜索区间。为了能用原来的坐标计算公式,须进行区间名称的代换,并在保留区间中计算一个新的试验点及其函数值。4)检查区间是否缩短到足够小和函数值收敛到足够近,如果条件不满足则返回步骤2.5)如果条件满足,则取最后两试验点的平均值作为极小点的函数值。2.黄金分割法的程序框图如图所示开始给定a,b,ελ=0.618a1=b-λ(b-a)y1=f(a1)a2=a+λ(b-a)y2=f(a2)是否y1>=y2?a=a1,a1=a2,y1=y2b=a2,a2=a1,y2=y1a2=a+λ(
4、b-a)a1=b-λ(b-a)y2=f(a2)y1=f(a1)是否
5、(b-a)/b
6、<ε和
7、(y2-y1)/y2
8、<ε?a*=(a+b)/2结束例3-1:对函数f(a)=a2+2a,当给定搜索区间-3≤a≤5时,试用黄金分割法求极小点a*。C语言编程,程序如下:#include#include#defineP0.618doublef(doublea);intmain(){doublea,b,a1,a2,y1,y2,c=0.001;intk=1;a=-3;b=5;a1=b-P*(b-a);a2=a+P*(b-a);y1=f
9、(a1);y2=f(a2);do{if(y1>=y2){a=a1;a1=a2;y1=y2;a2=a+P*(b-a);y2=f(a2);}else{b=a2;a2=a1;y2=y1;a1=b-P*(b-a);y1=f(a1);}k++;}while(fabs((b-a)/b)>=c
10、
11、fabs((y2-y1)/y2)>=c);a=(a+b)/2;printf("用黄金分割法求得极小点:a=%.5lf",a);printf("所得极小点相对应的函数值:y=%.5lf",f(a));printf("该函数所需迭代次数为:%d",k);return0
12、;}doublef(doublea){doubley;y=a*a+2*a;returny;}1.程序运行结果: