最优化方法课程设计斐波那契法分析与实现完整版.docx
- 文档编号:28291680
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:21
- 大小:257.51KB
最优化方法课程设计斐波那契法分析与实现完整版.docx
《最优化方法课程设计斐波那契法分析与实现完整版.docx》由会员分享,可在线阅读,更多相关《最优化方法课程设计斐波那契法分析与实现完整版.docx(21页珍藏版)》请在冰豆网上搜索。
最优化方法课程设计斐波那契法分析与实现完整版
最优化方法
题目:
斐波那契法分析与实现
院系:
信息与计算科学学院
专业:
统计学
姓名学号:
小熊熊***********
指导教师:
大胖胖
日期:
2014年01月10日
摘要
科学的数学化是当代科学发展的一个主要趋势,最优化理论与算法是一个重要的数学分支,它所研究的问题是讨论在众多的方案中什么样的方案最优以及怎样找出最优方案.
一维搜索是指寻求一元函数在某个区间上的最优点的方法.这类方法不仅有实用价值,而且大量多维最优化方法都依赖于一系列的一维最优化.本文就斐波那契法的一维搜索进行了详细的分析,并且成功的用MATLAB实现了斐波那契法求解单峰函数的极小值问题.
斐波那契法的一维搜索过程是建立在一个被称为斐波那契数列的基础上进行的,斐波那契法成功地实现了单峰函数极值范围的缩减.从理论上来说,斐波那契法的精度比黄金分割法要高.但由于斐波那契法要事先知道计算函数值的次数,故相比之下,黄金分割法更为简单一点,它不需要事先知道计算次数,并且当n≥7时,黄金分割法的收敛速率与斐波那契法越来越接近.因此,在实际应用中,常常采用黄金分割法.斐波那契法也是一种区间收缩算法,和黄金分割法不同的是:
黄金分割法每次收缩只改变搜索区间的一个端点,即它是单向收缩法.而斐波那契法同时改变搜索区间的两个端点,是一种双向收缩法.
关键字:
一维搜索斐波那契法单峰函数黄金分割法MATLAB
Abstract
Mathematicalsciencesisamajortrendincontemporaryscientificdevelopment,optimizationtheoryandalgorithmsisanimportantbranchofmathematics,theproblemsitwasdiscussedinnumerousresearchprogramsinthebestofwhatprogramsandhowtofindtheoptimalsolution.
One-dimensionalsearchisthebestmethodofseekingfunctionsofonevariableonthemeritsofacertaininterval.Suchmethodsnotonlyhavepracticalvalue,butalsoalargenumberofmulti-dimensionaloptimizationmethodsrelyonaseriesofone-dimensionaloptimizationarticleonFibonaccitheone-dimensionalsearchmethodcarriedoutadetailedanalysis,andsuccessfulinMATLABFibonaccimethodforsolvingunimodalfunctionminimizationproblem.
Fibonaccimethodofone-dimensionalsearchprocessisbasedontheFibonaccisequenceiscalledaFibonacciconductedon,Fibonaccimethodsuccessfullyachievedaunimodalfunctionextremerangereduction.Theory,Fibonaccimethodaccuracyishigherthanthegoldensectionmethod,butthenumberoftimesduetotheFibonaccimethodtocalculatefunctionvaluestoknowinadvance,sothecontrast,thegoldensectionmethodismoresimply,itdoesnotneedtoknowinadvancethenumberofcalculationsandatthattime,therateofconvergenceofgoldensectionandtheFibonaccimethodgettingcloser,soinpracticalapplications,oftenusingthegoldensectionmethod.Fibonaccimethodisalsoarangecontractionalgorithm,andthegoldensectionmethodthedifferenceis:
goldensectioneachcontractiononlyoneendpointtochangethesearchrangethatitisunidirectionalshrinkagelawFibonaccisearchmethodwhilechangingthetwoendpointsoftherange,isatwo-waycontractionmethod.
Keywords:
one-dimensionalsearch
Fibonaccimethod
unimodalfunction
GoldenSectionfunction
MATLAB
1.前言……………………………………………………………………1
1.1一维搜索………………………………………………………………………1
1.2单峰函数………………………………………………………………………1
1.3单峰函数的性质………………………………………………………………1
2.斐波那契法分析………………………………………………………2
2.1区间缩短率……………………………………………………………………2
2.2斐波那契数列…………………………………………………………………3
2.3斐波那契法原理………………………………………………………………3
2.4斐波那契法与黄金分割法的关系……………………………………………6
3.斐波那契法实现………………………………………………………7
3.1斐波那契算法步骤……………………………………………………………7
3.2斐波那契法的MATLAB程序……………………………………………………8
3.3斐波那契算法举例…………………………………………………………10
4.课程设计总结………………………………………………………12
4.1概述…………………………………………………………………………12
4.2个人心得体会………………………………………………………………12
5.参考文献……………………………………………………………13
1.前言
一维搜索是指寻求一元函数在某区间上的最优值点的方法.这类方法不仅有实用价值,而且大量多维最优化方法都依赖于一系列的一维最优化.
斐波那契法的一维搜索过程是建立在一个被称为斐波那契数列的基础上进行的.从理论上来说,斐波那契法的精度比黄金分割法要高.但由于斐波那契法要事先知道计算函数值的次数,故相比之下,黄金分割法更为简单一点,它不需要事先知道计算次数,并且当n≥7时,黄金分割法的收敛速率与斐波那契法越来越接近.因此,在实际应用中,常常采用黄金分割法.
·1.1一维搜索
很多迭代下降算法具有一个共同点,即得到点xk后,需要按某种规则确定一个方向dk,再从xk出发,沿着方向dk在直线或射线上寻求目标函数的极小点,进而得到xk的后继点xk+1.重复上面的做法,直至求得问题的解.这里所谓求目标
函数在直线上的极小点,称为一维搜索或线性搜索.
·1.2单峰函数
定义1.2.1设f是定义在闭区间[a,b]上的一元实函数,x*是f在[a,b]上的极小
*
点,对∀x1,x2∈[a,b]且x1 f(x1)> f(x2 ),当x*≤x时, 1 f(x2)> f(x1),则称f是闭区间[a,b]上的单峰函数. ·1.3单峰函数的性质 单峰函数具有很重要的性质: 通过计算闭区间[a,b]内两个不同点处的函数值,就能确定一个包含极小点的子区间.这也是斐波那契法的理论基础. 为了后面分析的方便,先证明下面的定理,这个定理是斐波那契方法的理论基础. 定理1.3.1设f是闭区间[a,b]上的单峰函数,x1,x2∈[a,b],且x1 f(x1)> f(x2),则对∀x∈[a,x1],有 f(x)> f(x2);如果 f(x1)≤ f(x2),则对 ∀x∈[x2,b],有f(x)≥ f(x1). 证明: (反证法)先证第一种情形.假设当f(x1)> f(x2)时, ,使得 f( )≤ f(x2 ).(1.3.1.1) 显然x1不是极小点.这时有两种可能性,要么极小点x∈[a,x1),要么x∈(x1,b]. 当 ∈[a,x1)时,根据单峰函数的定义,有 f(x2)>f(x1). (1.3.1.2) 这与假设矛盾. 当 ∈(x1,b]时,根据单峰函数的定义,有 f( )>f(x). 1 (1.3.1.3) 由于假设f(x1)> f(x2),因此(1.3.1.3)式与(1.3.1.1)式相矛盾.综上可知,当 f(x1)> f(x2)时,对∀x∈[a,x1],必有 f(x)> f(x2).(1.3.1.4) 同理可以证明第二种情形. * 证毕.根据上面的定理知: 只需选择两个试探点,就可以将包含极小点的区间缩短. 事实上,如果f(x1)> f(x2),则x ∈[x1,b];如果f(x1)≤ f(x2 ),则x*∈[a,x]. 2 这就是斐波那契法的理论基础. 2.斐波那契法分析 斐波那契法的一维搜索过程是建立在一个被称为斐波那契数列的基础上进行的.在此之前,有必要知道区间缩短率以及斐波那契数列的概念. ·2.1区间缩短率 定义2.1.1在逐次缩短区间时,设 称τk(k=1,2,⋅⋅⋅)为区间缩短率. 对于上面的τk不外乎两种情况,要么τk=c,要么τk≠c(c为常数).第一种 情况就可以引入前面提到的黄金分割法,第二种情况就是下面要分析的斐波那契法. ·2.2斐波那契数列 斐波那契数列是13世纪,由意大利的数学家列昂纳多·斐波那契(LeonardoFibonacci)提出的,当时和兔子的繁殖问题有关,它是一个很重要的数学模型.斐波那契数列,又被称为“黄金分割数列”,它指的是这样的一个数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面两个数的和. 在数学上,斐波那契数列有如下的递归定义: 故,斐波那契数列如表2.2.1所示. 表2.2.1斐波那契数列表 n 0 1 2 3 4 5 6 7 8 9 … Fn 1 1 2 3 5 8 13 21 34 55 … 斐波那契数列的通项公式(又称为“比内公式”)如下: 此时 2.3斐波那契法原理 在定义2.1.1中,若 ,可取 .其中 满足斐波那契数列的递推关系。 斐波那契法成功地实现了单峰函数极值范围的缩减.现设某一单峰函数 在闭区间[a,b]上有一极小点 ,则在此区间内任意取两点 使得 分别计算其函数值可能出现的以下两种情况: (1) (2) 可以看出,只要在闭区间[a,b]内任意取两点a1和b1(a1 值加以比较,就可以把区间[a,b]缩短成[a,b1]或[a1,b].若要继续缩短搜索区间,只需要在前一次区间内再取一点算出其函数值并与f(a1)或f(b1)加以比较即可.因此,计算函数的次数越多,搜索区间就会缩得越小,即区间的缩 短率与函数的计算次数有关.下面分析如何确定试探点. 假设第k次试探前的区间为[ak-1,bk-1],试探点为pk、qk,n为达到预定精度需要计算函数的次数,则有: 现在先证明用(2.3.1)和(2.3.2)计算试探点时,第k次迭代区间长度的缩短率为: 分别考虑一下两种情形: (1) ⑵当f(pk)≤f(qk)时,令ak+1=ak,bk+1=qk; 从上面的结果可以看出,不论哪种情形,区间缩小的比例都是一样的. 利用上述比值,可以计算出经n-1次迭代(k=n-1)所得到的区间长度. 由此可知,只要给定初始区间的长度b1-a1和精度要求ε,就可以求出计算 函数值的次数n.令b-a≤ε,即 ,故可以推出: 故先用(2.3.3)式计算出斐波那契数Fn,再根据Fn确定计算函数值的次数n.由于第一次迭代需计算两个试探点,以后每次计算一个.因此,经过n-1次 迭代就计算完n个试探点.注意,在第n-1次迭代中并没有选择新的试探点.根据 (2.3.1)式和(2.3.2)式,必有 又因为pn-1和qn-1中的一个取自第n-2次迭代中的试探点.为了在第n-1次迭代 中能够缩短不确定区间,可以在第n-2次迭代之后(此时,已确定pn-1=qn-1), 在pn-1的左边或右边取一点令: ·2.4斐波那契法与黄金分割法的关系 斐波那契法也是一种区间收缩算法,和黄金分割法不同的是: 黄金分割法每次收缩只改变搜索区间的一个端点,即它是单向收缩法.而斐波那契法同时改变搜索区间的两个端点,是一种双向收缩法. 可以证明,黄金分割法可作为斐波那契法的极限形式.斐波那契数列的递推关系为 Fk+1=Fk+Fk-1,(2.4.1) 其特征方程为 λ2-λ-1=0,(2.4.2) 解(2.4.2)式,可以得到两个根 (2.4.3) 满足递推关系(2.4.1)的一般解是 (2.4.4) 又因为F0=F1=1,故 因此有: 很明显,这个极限值恰好是黄金分割法中的参数α. 所以,从理论上来说,斐波那契法的精度比黄金分割法要高.斐波那契法的缺点是要事先求出计算函数值的次数.相比之下,黄金分割法来得更简便一点,它不需要事先知道计算次数,而且收敛速率与斐波那契法比较接近,当n≥7时, 有 因此,在实际应用中,一般采用黄金分割法. 3.斐波那契实现 通过对上面的斐波那契法的原理进行分析之后,可以写出斐波那契算法的步骤如下: ·3.1斐波那契算法步骤 用斐波那契法求无约束问题minf(x),x∈R的基本算法步骤如下: ⑴选定初始区间和精度要求ε>0,利用下式 求出计算函数值的次数n.并设δ>0.接着由下式 计算试探点p1和q1.令k=1. ⑵如果f(pk)> ⑶令 f(qk),转⑶;否则转⑷. 若k=n-2,则转⑹;否则转⑸. ⑷令 若k=n-2,则转⑹;否则转⑸. ⑸令k=k+1,转⑵. ⑹令pn=pn-1,qn=pn-1+δ,计算f(pn)和f(qn).若 则令 否则令 停止计算,极小点 ·3.2斐波那契法的MATLAB程序 用MATLAB编写斐波那契法程序如下所示: function[x,minf]=minFBNQ(f,a,b,delta,eps)formatlong; ifnargin==4%输入参数的个数 eps=1.0e-6; end F=ones(2,1);%产生一个2行1列值全为1的矩阵 N=(b-a)/eps;c=F (2)-N;n=2; whilec<0%求出计算函数值的次数n n=n+1; F(n)=F(n-1)+F(n-2); c=F(n)-N; end p=a+F(n-2)*(b-a)/F(n);%p和q为试探点 q=a+F(n-1)*(b-a)/F(n); k=1; while1 fp=subs(f,findsym(f),p);%fp和fq为试探点的函数值 fq=subs(f,findsym(f),q); iffp>fq a=p;%第一种情况,改变区间的左端点 p=q; q=a+F(n-k-1)*(b-a)/F(n-k);%缩短搜索区间 if(k==n-3) break; elsek=k+1; endelse b=q;%第二种情况,改变区间的右端点 q=p; p=a+F(n-k-2)*(b-a)/F(n-k);%缩短搜索区间 if(k==n-3) break; elsek=k+1; end end end ifk==100000disp('未找到最小值! '); x=NaN; minf=NaN;%notanumber! return; end q=p+delta;fp=subs(f,findsym(f),p);fq=subs(f,findsym(f),q);iffp>fq a=p; elseb=p; endx=(a+b)/2;minf=subs(f,findsym(f),x);formatshort; end 调用格式: [x,minf]=minFBNQ(f,a,b,delta,eps).符号说明: x…………目标函数取最小值时的自变量; minf……目标函数的最小值; f…………目标函数; a…………极值区间左端点;b…………极值区间右端点;delta………算法结束参数; eps………精度; ·3.3斐波那契算法举例 现在,用上面的MATLAB程序求解两个一维搜索问题,并进行验证.问题一: 试用斐波那契法求函数f(x)=3x2-12x+10的极小点,要求缩短后的区间不大于初始给定的区间[1,4]的0.05倍. 解: 在MATLAB窗口输入如下命令 >>symsx; >>f=3*x^2-12*x+10; >>[x,minf]=minFBNQ(f,1,4,0.05) 运行结果为 x= 2.0000 minf= -2.0000 >> 下面用数学分析的方法来验证所求结果的正确性: 因为f(x)=3x2-12x+10是二次函数,将其配方后可得f(x)=3(x-2)2-2. 对称轴为直线x=2.由于x=2∈[1,4],抛物线的开口向上,故在顶点处取得极小 值(也是最小值).顶点的纵坐标y=-2即为函数f(x)=3x2-12x+10在区间[1,4] 上的极小点.证毕. 因此,这个结果和用MATLAB求解的结果是一致的.说明了斐波那契法的正确 性. 问题二: 用斐波那契法求解下列问题 minf(x)=2x2-x-1.初始区间为[-1,1],精度要求ε≤0.16. 解: 在MATLAB窗口输入如下命令 >>symsx; >>f=2*x^2-x-1; >>[x,minf]=minFBNQ(f,-1,1,0.16) 运行结果为 x= 0.2500 minf= -1.1250 >> 下面用数学分析的方法验证所求结果的正确性: 二次函数 的对称轴 抛物线的开口向上故在顶点处取得最小值.顶点纵坐标为 即为函数 在区间[-1,1]上的极小点(也是最小点).证毕 所以,跟上一个问题的结论一样,这个结果证明了斐波那契法的正确性. 4.课程设计总结 ·4.1概述最优化理论与算法是一个重要的数学分支,它所研究的问题是讨论在众多的 方案中什么样的方案最优以及怎样找出最优方案.求解最优问题是一个艰难而具有挑战性的过程,最优化方法涵盖了无约束最优化问题、凸集与凸函数、等式约束最优化问题和不等式约束最优化问题等知识点. 本次课程设计的题目是: 斐波那契分析与实现.斐波那契法的一维搜索过程是建立在一个被称为斐波那契数列的基础上进行的,斐波那契法成功地实现了单峰函数极值范围的缩减.从理论上来说,斐波那契法的精度比黄金分割法要高.但由于斐波那契法要事先知道计算函数值的次数,故相比之下,黄金分割法更为简单一点,它不需要事先知道计算次数,并且当n≥7时,黄金分割法的收敛速率与斐波那契法越来越接近.因此,在实际应用中,常常采用黄金分割法.斐波那契法也是一种区间收缩算法,和黄金分割法不同的是: 黄金分割法每次收缩只改变搜索区间的一个端点,即它是单向收缩法.而斐波那契法同时改变搜索区间的两个端点,是一种双向收缩法. ·4.2个人心得体会通过本次课程设计,我知道了一维搜索的概念,深刻理解了单峰函数的定义 和性质.学会了区间缩短率是怎样定义的以及斐波那契数列的定义和性质.在此基础上,我还深刻理解了斐波那契法进行一维搜索的原理,并且知道了一维搜索的斐波那契法与黄金分割法的关系,并进行相关证明和验证,增强了说服力.另外,我成功的实现了斐波那契算法的MATLAB程序并用数学分析的理论方法证明了程序求解的正确性.通过斐波那契的MATLAB实现,让我更加熟悉MATLAB编程了,感觉使用MATLAB软件求解很多数学问题还是很方便的. 5.参考文献 [1]陈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优化 方法 课程设计 分析 实现 完整版