李豐兵 李向利
【摘要】黃金分割法是一種簡單而實(shí)用的一維搜索算法,是最優(yōu)化方法課程中的一個基本內(nèi)容。在黃金分割法的理論教學(xué)過程中,本文利用Matlab程序設(shè)計(jì)輔助解答了兩個有關(guān)黃金分割法收斂特性的教學(xué)問題,使得課堂講解更加直觀、更加清楚,同時改變了以往枯燥乏味的課堂氣氛,吸引了學(xué)生的注意力,提高了教師的教學(xué)效率。
【關(guān)鍵詞】黃金分割法 ?Matlab 軟件 ?實(shí)驗(yàn)仿真
【中圖分類號】G42 ?【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2019)51-0252-02
1.引言
黃金分割法[1,2,3]又稱為0.618法,是最優(yōu)化算法中一種基本的一維搜索算法,本質(zhì)上是一種用來求解單谷函數(shù)極值的方法,其算法思想是通過迭代的方式逐步縮小搜索區(qū)間,直到極小值點(diǎn)所在的區(qū)間長度滿足所給定精度要求時算法終止迭代,具體步驟如下:
步1:給定初始搜索區(qū)間[a,b],及計(jì)算精度eps>0;
步2:計(jì)算x1=a+0.382(b-a),x2=a+0.618(b-a);
步3:若x2-x1 步4: 若f(x1)≥f(x2),則令a=x1,轉(zhuǎn)步2; 若f(x1) 盡管黃金分割法的算法步驟比較簡單,但在課堂上僅僅依靠理論講解,很多學(xué)生對它的理解還是不夠深入,特別是對黃金分割法的各種收斂性能。本文利用Matlab程序設(shè)計(jì)輔助解答了課堂上碰到的兩個教學(xué)問題:(1)如何結(jié)合實(shí)例介紹黃金分割法的迭代過程以及算法的收斂性能。(2)如何理解算法的精度要求與所需的迭代次數(shù)存在的關(guān)系。 2.實(shí)驗(yàn)仿真分析 為輔助解答上述兩個問題,考慮以下實(shí)例 例:設(shè)f(x)=-(sinx)6tan(1-x)e6x,求f(x) 對于第一個問題,本文利用Matlab程序設(shè)計(jì)分析迭代次數(shù)與最優(yōu)解和最優(yōu)目標(biāo)函數(shù)值的關(guān)系,并由此了解算法的迭代過程以及收斂性能,編寫程序如下: 程序中數(shù)組OPTXV及OPTYV分別用來存儲每次迭代后的最優(yōu)解和最優(yōu)目標(biāo)函數(shù)值,t為迭代次數(shù),輸入?yún)?shù)值設(shè)為a=0,b=1,eps=0.00001,運(yùn)行程序即可得每次迭代后的最優(yōu)解和最優(yōu)目標(biāo)函數(shù)值,如下 OPTXV=0.5, 0.691, 0.80904, 0.88199, 0.92707, 0.89921, 0.91642, 0.90578, 0.91236 0.9083, 0.90578, 0.90734, 0.90638, 0.90578, 0.90615, 0.90592, 0.90606, 0.90598, 0.90603, ? ? ? ?0.906, 0.90602, 0.90601。 OPTYV=-0.13324, -1.3514, -3.5605, -4.9879, -4.9832, -5.1292, -5.1066, -5.1431, -5.1299, -5.1414, -5.1431, -5.1425, -5.143, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431, -5.1431。 為了更直觀地了解黃金分割法的收斂性能,利用Matlab的繪圖函數(shù)plot可以畫出最優(yōu)解和最優(yōu)目標(biāo)函數(shù)值隨迭代次數(shù)的增大的變化曲線圖,如圖1所示。從圖1中可清楚看出,黃金分割法的收斂速度相對于迭代次數(shù)來說,前期收斂較快,后期明顯收斂很慢。 對于第二個問題,為了分析精度要求值與迭代次數(shù)的關(guān)系,分別取精度值eps為:10-10,10-9,10-8,…,10-1,利用Matlab的for循環(huán)語句及調(diào)用黃金分割法的自定義函數(shù)就可以算出每個精度值所需的迭代次數(shù),具體程序如下: 運(yùn)行程序后可得到不同精度值對應(yīng)的迭代次數(shù)為:T = [46,42,37,32,27,22,18,13,8,3]。為了更直觀地分析精度值eps與迭代次數(shù)t的關(guān)系,先對eps取以10為底的對數(shù),然后再利用Matlab的繪圖函數(shù)plot畫出精度值的對數(shù)值與迭代次數(shù)的關(guān)系圖,如圖2所示。 由圖2可清楚看出,精度值的對數(shù)值與迭代次數(shù)幾乎呈線性關(guān)系。 3.結(jié)論 本文利用Matlab程序設(shè)計(jì),針對某一個實(shí)際問題對黃金分割法進(jìn)行了兩個實(shí)驗(yàn)仿真,由仿真結(jié)果及其圖像直觀地展示了黃金分割法的算法特性,再結(jié)合理論講解,使得課堂上學(xué)生學(xué)習(xí)變得更加輕松、更加容易、學(xué)習(xí)效率和學(xué)習(xí)積極性都得到了提高。同時,教師的教學(xué)效果也明顯得到了改善,“教”與“學(xué)”不再是枯燥乏味的事情。 參考文獻(xiàn): [1]何堅(jiān)勇.最優(yōu)化方法[M].北京:清華大學(xué)出版社,2007. [2]馬昌鳳.最優(yōu)化方法及其Matlab程序設(shè)計(jì)[M].北京:科學(xué)出版社,2010. [3]陳寶林.最優(yōu)化理論與算法[M].北京:清華大學(xué)出版社,2005. 作者簡介: 李豐兵(1980.08-),男,苗族,貴州思南人,碩士,中級職稱,研究方向?yàn)閺?fù)雜網(wǎng)絡(luò)及人工智能。