斐波那契法论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 方法原理介绍及最优性证明
1.1 斐波纳契法
对于一维搜索,斐波那契数列法【1】
曾作为一种算法而呈现它在计算过程中的最优性,
下面我先介绍一下此算法。
假定f(x)在区间[a,b]上是单峰函数,即f(x)在[a,b]上只有一个极值点x *,若它是极小点,则f(x)在x *左边严格单减,而f(x)在x *右边严格单增。如果我们打算通过某种取点方式只计算n 次函数值,就将f(x)在[a,b]上的近似极小点求出来(严格地讲是把极小点存在的区间长度缩到最小),那么我们可以按照下面的办法即斐波那契(数列)法:
取x 1=a +
F n−2F n (b −a ) ,x 1̃=a +F n−1
F n
(b −a ),计算f (x 1)和f(x 1̃) 若f (x 1)≤f (x 1̃),则置a 1=a ,b 1=x 1̃;若f (x 1)>f (x 1̃),则置a 1=x 1,b 1=b 我们在新区间[a 1,b 1]上仿上面办法插入点x 2=a 1+F
n−3F n−1
(b 1−a 1) ,x 2̃=a 1+
F n−2F n−1
(b 1−a 1),重复上面的做法可得[a 2,b 2],如此做下去。 我有必要指出以下三点:
(1)每迭代一次新区间的长度为原来区间长的
F n−k
F n−k+1
(k =1,2……n −1)
比如第一次迭代,注意到x 1̃−a =
F n−1F n
(b −a ),
b −x 1=b −[
F n−2F n (b −a )+a]=F n −F n−2F n (b −a )=F n−1
F n
(b −a) 结论便是显然的了,对于后面的计算,道理同上。
(2)每迭代一步,区间缩小后保留的点,在下步迭代中还可使用。
在第二步迭代中,必有下面四种情况之一发生x 1=x 2,x 1̃=x 2,x 1=x 2̃,x 1̃=x 2̃ 容易验证:当f (x 1)≤f (x 1̃)时,x 2̃=x 1;当f (x 1)>f (x 1̃)时,x 2=x 1̃。这说明保留的点与新插入的点之一重合,即在第二步迭代中只需计算3个点的值。
类似的,第n-1步迭代只需计算n 个点的函数值,而且容易算出,这是区间[a n-1,b n-1]的长b n−1−a n−1=
F n−1F n
∙F n−2F n−1
∙⋯⋯∙F 1F 2
(b −a )=F 1F n
(b −a )=1
F n
(b −a )
(3)进行n-1步迭代时,x n−1=a n−2+F 0F 2
(b n−2−a n−2) ,x n−1̃=a n−2+F
1
F 2
(b n−2−a n−2)
这样x n−1=x n−1̃=1
2(a n−2+b n−2),这时无法比较函数值f (x n−1)与f (x n−1̃)来确定最后的区间[a n-1,b n-1]。
为此取{x n−1=1
2(a n−2+b n−2)
x n−1̃=x n−1+δ,其中δ是一个很小的正数,这样就可以比较f (x n−1)
与f (x n−1̃)的值以确定最后的区间[a n-1,b n-1],取1
2(a n−1+b n−1)为近似极小点,相应的函数
值为近似极小值。
1.2 斐波那契法最优性证明
对于单峰函数来讲,它是最优的
【2】
。设L n 为某区间的长度:它使按某种取点方式求n
次函数值后,在可能遇到的各种情况下,总能把新区间(又称搜索区间)的长度缩为1,最优取点方式应保证使L n 最大。
设L k 的上确界为u k (k=1,2……,n )。显然,u k 就是计算第k 次函数值总能把搜索区间缩短到1的最大区间长度,由于要计算两次函数值后才能缩短区间,故u 0=u 1=1。
今估计对应于计算n 次函数值的上界u n . 设最初的两个试探点为x 1和x 2(x 1< x 2),则余下来还可以计算n-2次函数值。
极小点可能位于区间[a ,x 1],也可能位于区间[x 1,b]。当极小点位于[a ,x 1]时,我们必须借助于在其中计算n-2次函数值,把该区间缩短为1,故应有x 1−a ≤u n−2。
当极小点位于[x 1,b]上时,除了可再计算n-2次函数值外,还能利用其中已计算的一点x 2处的函数值,所以总共可以利用(n-2)+1=n-1次函数值,故应有b −x 1≤u n−1
于是我们有L n =b −a ≤u n−2+u n−1 , 故u n =u n−2+u n−1
由斐波那契数列取点法及上面的推算,知该算法经n 次函数求值解保证把搜索区间缩为原来的1
F n ,从而它是最优的。
我们有必要说明一点,以上所谓的斐波那契法最优性的证明,是指取点方式为两个试探点的情况下,斐波那契法是最优的。
1.3 黄金分割法
斐波那契法可以衍生到黄金分割法
【3】
,为什么这么说呢,如果我们用斐波那契法以n
个试点来缩短某一区间时,缩短率分别为F n−1
F n
,F n−2F n−1
,⋯⋯,F
1F 2
。我们知道,当n →∞时,
lim
n→∞F n−1
F n
=0.6180339874189848,于是,我们不妨以不变的区间缩短率0.618代替斐波那契
法每次不同的缩短率,就得到黄金分割法,也称0.618法,它可以看成斐波那契法的近似,实现起来较容易。
下面我给出一个直观的说明
【4】
:
为了方便起见,我们把区间长度(试验范围)视为1,即区间[0,1]。如下图所示