最优化算法实验报告(附matlab程序).doc
最优化方法MATLAB实验报告FIBONACCI法一、实验目的用MATLAB程序实现一维搜索中用FIBONACC法求解一元单峰函数的极小值问题。二、实验原理(一)、构造FIBONACCI数列设数列,满足条件{}KF1、01F2、1KK则称数列为FIBONACCI数列。{}(二)、迭代过程首先由下面的迭代公式确定出迭代点11,1,,,NKKKKKKNFABANU易验证,用上述迭代公式进行迭代时,第K次迭代的区间长度缩短比率恰好为。故可设迭代次数为N,因此有1NKF11212121233NNNNNFBAABABA若设精度为L,则有第N次迭代得区间长度,即1NLF就是,由此便可确定出迭代次数N。1NBAF1假设第K次迭代时已确定出区间以及试探点,KAB并且。计算试探点处的函数值,有以下两种可能,,KKUABKU(1)若,则令KKFF1111,KKKNKABFFFA计算的值。1KF(2),则令U11211,KKKNKKABFFFA计算的值。1KF又因为第一次迭代确定出了两个迭代点,以后每迭代一次,新增加一个迭代点,这样在迭代N1后便计算完了N个迭代点。因此第N次迭代中,选用第N1次的迭代点以及辨别常数构造和N1N再用同样的方法进行判断(1)、若则令NFNF1NAB(2)、若0,辨别常1AB数0求FIBONACCI数列(K1,2,)若0111,KKFF,停止,输出NNBAL计算及211NBAF1F及,置K111NA1F判断KN是否KKFF是否11211,KKKNKKABFFFA计算1KF1111,KKKNKKBFFFAA计算1KF1N计算、NFNFKK1NFNF是否1NB1NAB输出区间,停止,NAB停止5五、用MATLAB程序实现,并计算一个例题。(程序见附录)例题用FIBONACCI法求解问题2MIN1DEFFXT设初始区间,精度L0001,辨别常数1,,AB01六、实验结果函数图像及迭代点变动图像如下图所示10806040200204060810051152253YT2T1由运行结果看出,迭代进行18次便达到期望的精度,其迭代点序列向量如下A100000236102361023610416404164041640459004853048530495304953049530497704992049920499604996B100001000010000070820708205967052790527905279051160511605054050160501605016050060500605001;R0236102361052790416405279048530459004853050160495305016049926049770499205001049960500105001U023610527907082052790596705279048530501605116050160505405016049920500105006050010500105001最优值存在区间为04996,05001。七、附录算法程序如下1、FIBONACCI算法编程如下FUNCTIONA,B,R,U,FR,FU,NFIBONACCIF,A1,B1,L,E函数功能用FIBONACCI法进行一维搜索,求解单峰函数F的极小值问题;初始条件初始区间为A1,B1,给定精度为L0,辨别常数E0下面构造FIBONACCI数列FTB1A1/LF11F21I1WHILEFIFUNANRNBNBN1ELSEANAN1BNUNEND2、求解函数FUNCTIONYFTYT2T13、函数求解及绘制动态模拟图程序如下A11B11L0001E00001A,B,R,U,FR,FU,NFIBONACCIF,A1,B1,L,EDISP 极小值存在区间为 ANBNFORX100118X1XX2X1001AXIS1,1,0,3设置坐标Y1FX1Y2FX2GRIDONPLOTX1,X2,Y1,Y2, B PAUSE0001HOLDONENDTITLE YT2T1 添加标题GRIDONYZEROS1,NFORI1NPLOTAI,YI, M HOLDONPLOTBI,YI, B HOLDONPLOTRI,YI, GP HOLDONPLOTUI,YI, CP HOLDONPAUSE1END