斐波那契法论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]。如下图所示

相关文档
最新文档