机械设计实验报告
班级专业: 机制 10—4 班
姓名: 杨长文 学号:541002010450
1. 黄金分割法的基本思想
在实际计算中,最常用的一维搜索试探方法是黄金分割法,又称0.618法。 黄金分割法适用于[a,b]区间上的任何单谷函数求极值问题。对函数除要求“单谷”外不作任何要求,甚至可以不连续。因此,这种方法的适用面非常广。 黄金分割法也是建立在区间消去法原理基础上的试探方法,即在区间[a,b]内适当插入两点a1,a2并计算其函数值。a1,a2将区间分成三段,应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后再在保留下的区间作同样处理,如此迭代下去,使搜索区间无限缩小,从而求得极小值的近似值。
黄金分割法要求插入点a1,a2的位置相对于区间[a,b]两端点具有对称性,即 a1=b-λ(b-a) a2=a+λ(b-a) λ为待定常数。
λ λ2 λ(1-λ) a a1 a2 b a3 l-λ λ
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,a2的值,并计算相应的函数值f(a1),f(a2)。
3) 根据区间消去法原理缩短搜索区间。为了能用原来的坐标计算公式,须
进行区间名称的代换,并在保留区间中计算一个新的试验点及其函数值。 4) 检查区间是否缩短到足够小和函数值收敛到足够近,如果条件不满足则
返回步骤2.
5) 如果条件满足,则取最后两试验点的平均值作为极小点的函数值。
2. 黄金分割法的程序框图如图所示
开始 给定a,b,ε λ=0.618 a1=b-λ(b-a) y1=f(a1) a2=a+λ(b-a) y2=f(a2) 是 否 y1>=y2 ? a=a1,a1=a2,y1=y2 b=a2,a2=a1,y2=y1 a2=a+λ(b-a) a1=b-λ(b-a) y2=f(a2) y1=f(a1) 是 否 |(b-a) /b|<ε和|(y2-y1)/y2|<ε? a*=(a+b)/2 结束
例3-1:
对函数f(a)= a2+2a,当给定搜索区间-3≤a≤5时,试用黄金分割法求极小点a*。
C语言编程,程序如下: #include
double f(double a) { double y; y=a*a+2*a; return y; }
3. 程序运行结果: