1.黄金分割法的基本原理
黄金分割法也称为0.618法,它是按照对称原则选取中间插入点而缩小区间的一种一维搜索方法。这种方法的基本原理如下:
在搜索区间[a,b]内按如下规则对称地取两点x1和x2,即
x1=a+0.382(b-a),x2=a+0.618(b-a)
计算它们的函数值f1=f(x1),f2=f(x2),比较f1与f2的大小,有两种可能:
1)若f1>f2,如图3-4a所示。极小点必在区间[x1,b]内,消去区间[a,x1),令a=x1,产生新区间[a,b],至此,区间收缩了一次。值得注意的是接着在进行第二次区间收缩运算时,新插入的x′1点直接取前一次收缩运算的x2点,f(x′1)=f(x2)。这样可以少找一个新点,省去一次函数值计算时间,这也是黄金分割法的一大优点。
2)若f1≤f2,如图3-4b所示。极小点必在区间[a,x2]内,消去区间(x2,b],令b=x2,产生新区间[a,b],至此,区间收缩了一次。同样接着在进行第二次区间收缩运算时,新插入的x′2点直接取前一次收缩运算的x1点,f(x′2)=f(x1)。这样可以少找一个新点,省去一次函数值计算时间。
当缩短的新区间长度小于或等于某一收敛精度ε,即b-a≤ε时,则取为近似极小点。
2.黄金分割法的区间收缩率及计算步骤
每次缩小所得的新区间长度与缩小前区间长度之比,称为区间收缩率,以λ表示。如图3-5所示,为加快区间收缩应保证区间收缩率不变,因此,必须在搜索区间[a,b]内对称地取计算点x1,x2。设初始区间长度为l,则第一次和第二次收缩得到的新区间长度分别为λl和(1-λ)l。根据收缩率相等的原则,可得
λl∶l=(1-λ)l∶λl
即 λ2+λ-1=0
该方程的正根为λ≈0.618,这就是在区间内按上式规则取两对称点的原因。
综上所述,黄金分割法的计算步骤如下:
1)给定初始区间[a,b]和收敛精度ε。
2)产生中间插入点并计算其函数值。
图3-3 进退法计算框图
x1=a+0.382(b-a),f1=f(x1)
x2=a+0.618(b-a),f2=f(x2)
3)比较函数值f1和f2,确定区间的取舍:若f1≤f2,则产生新区间[a,b]=[a,x2],令b=x2,x2=x1,f2=f1,记N0=0;若f1>f2,则产生新区间[a,b]=[x1,b],令a=x1,x1=x2,f1=f2,记N0=1。
4)收敛判断:当缩短的新区间长度小于或等于某一收敛精度ε,即|b-a|≤ε时,则取为近似极小点,结束一维搜索;否则转5)。
图3-4 黄金分割法区间收缩
a)f1>f2 b)f1≤f2
5)产生新的插入点:若N0=0,则取x1=a+0.382(b-a),f1=f(x1);若N0=1,则取x2=a+0.618(b-a),f2=f(x2),转3)进行新的区间缩小。(www.xing528.com)
黄金分割法的计算框图如图3-6所示。
例3-1 用黄金分割法求函数f(x)=3x3-4x+2的极小值点,给定x0=0,h=1,ε=0.2。
图3-5 取点规则
图3-6 黄金分割法的计算框图
解:(1)确定搜索区间
x1=x0=0,f1=f(x1)=2;x2=x0+h=1,f2=f(x2)=1
由于f1>f2,应加大步长继续向前探测。令
x3=x0+2h=2,f3=f(x3)=18
由f2<f3可知,初始搜索区间已经找到,即[a,b]=[0,2]。
(2)用黄金分割法缩小区间
1)第一次缩小区间。令
x1=0+0.382×(2-0)=0.764,f1=0.282
x2=0+0.618×(2-0)=1.236,f2=2.72
由于f1<f2,故新区间[a,b]=[a,x2]=[0,1.236]。因为b-a=1.236>0.2,所以应该继续缩小区间。
2)第二次缩小区间。令
x2=x1=0.764,f2=f1=0.282
x1=0+0.382×(1.236-0)=0.472,f1=0.317
由于f1>f2,故新区间[a,b]=[x1,b]=[0.472,1.236]。因为b-a=0.764>0.2,所以应该继续缩小区间。
如此继续迭代下去,经过五次区间缩小之后迭代精度满足要求。黄金分割法的搜索过程见表3-1。
表3-1 黄金分割法的搜索过程
因为b-a=0.764-0.584=0.18<0.2,所以得到极小点和极小值。,f∗=0.222
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。