李豐兵
摘 ?要:MATLAB是一款功能十分強大、應用最為廣泛的數(shù)學軟件,該文探討MATLAB軟件在《最優(yōu)化方法》課程教學中的一些應用。通過3個具體的教學案例,該文詳細地介紹了如何利用MATLAB軟件的程序設計,輔助傳統(tǒng)教學模式,解決《最優(yōu)化方法》課程中的教學難點,如何把抽象的問題具體化、復雜的問題簡單化,提高學生的學習積極性及教師的授課效率。
關鍵詞:MATLAB ?最優(yōu)化方法 ?教學模式
中圖分類號:TN911 ? 文獻標識碼:A ? ? ? ? ? ?文章編號:1672-3791(2019)05(b)-0113-03
Abstract: MATLAB is a powerful and widely-used mathematical software. This paper discusses the application of MATLAB software in the teaching of "Optimizing Method". Through three specific teaching cases, this paper introduces in detail how to use the program design of MATLAB software to assist the traditional teaching mode to solve the teaching difficulties in the course of "Optimizing Method", how to concretize abstract problems and simplify complex problems, and how to improve students learning enthusiasm and teachers ?teaching efficiency.
Key Words: MATLAB; Optimization method; Teaching mode
《最優(yōu)化方法》是筆者學校部分專業(yè)本科生及研究生的專業(yè)必修課程,以介紹各種優(yōu)化算法[1,2]為主要目的,內(nèi)容相對較為抽象。在傳統(tǒng)的教學模式條件下,上課教師僅僅依靠理論分析、證明,難以講清楚課程中的一些抽象問題,學生學習較為困難,老師上課效率低下。MATLAB[3]作為一款功能十分強大的數(shù)學應用軟件,程序設計較為簡單,特別適合于相關科技工作者做算法設計、數(shù)值計算、數(shù)據(jù)處理及可視化等方面的應用。利用MATLAB軟件輔助理論教學,可以解決《最優(yōu)化方法》課程教學過程中碰到的部分教學難點,使得課堂教學變得輕松、簡單。限于篇幅,該文以如下3個教學案例進行說明:(1)黃金分割法收斂性能分析;(2)斐波那契數(shù)列的計算;(3)函數(shù)圖像繪制。
1 ?3個應用案例介紹
1.1 黃金分割法收斂性能分析
黃金分割法又稱為0.618法,是最優(yōu)化算法中一種基本的一維搜索算法,本質(zhì)上是一種用來求解單谷函數(shù)極值的方法,其算法思想是通過迭代的方式逐步縮小搜索區(qū)間,直到極小值點所在的區(qū)間長度滿足所給定精度要求時算法終止迭代。在教學過程中,黃金分割法的收斂性能分析是一個教學難點,主要的問題有2個:(1)如何描述黃金分割法的收斂過程及收斂速度問題;(2)為什么黃金分割系數(shù)tau是0.618,而不是其他的數(shù)值。僅僅靠理論講解缺乏說服力,學生難以理解。該文利用MATLAB程序設計輔助理論教學可以解決這一問題,以如下問題為例說明。
例1:設,求。
為輔助理論教學解答上述兩個問題,分別取黃金分割系數(shù)tau的值為:0.618,0.75,0.85,通過編寫相應程序計算出每次迭代后的最優(yōu)點及總的迭代次數(shù),具體程序如下。
function[OPTXV,t]=f_0618_2(a,b,eps,tau)
OPTXV=[];t=1;
while1
x1=a+tau*(b-a); ?x2=a+(1-tau)*(b-a);
optx=0.5*(x1+x2); OPTXV(t)=optx;
if x2-x1 break else t=t+1; if f(x1)>=f(x2) a=x1; else b=x2; end end end end 程序中數(shù)組OPTXV用來存儲每次迭代后的最優(yōu)解,t為迭代次數(shù),輸入?yún)?shù)值設為a=0,b=1,eps=0.01,運行程序即可算出OPTXV,t的值。為了更直觀地了解黃金分割法的收斂性能,利用MATLAB的繪圖函數(shù)plot可以畫出最優(yōu)解與迭代次數(shù)的變化關系曲線圖,如圖1所示。從圖1中可清楚看出:(1)黃金分割法的收斂速度相對于迭代次數(shù)來說,前期收斂較快,后期明顯收斂很慢;(2)黃金分割系數(shù)tau的值為0.618時算法收斂最快,其他兩種情況算法收斂顯著較慢,實際迭代次數(shù)分別為:8,15,28。 1.2 斐波那契數(shù)列的計算 在斐波那契算法的教學過程中,由算法迭代精度值eps計算出相應的斐波那契數(shù)列是一個教學難點內(nèi)容,傳統(tǒng)的教學方法靠手動計算比較困難,教學效率低下。利用MATLAB程序設計輔助理論教學可以解決這個問題,并且教學效果良好。同樣以例1為例,首先需要利用條件(1)計算斐波那契數(shù)列的最后一項。 公式中[a1,b1],為初始區(qū)間,eps為精度值,F(xiàn)n為斐波那契數(shù)列的最后一項。算出Fn之后再根據(jù)斐波那契數(shù)列的性質(zhì)算出整個斐波那契數(shù)列。整個計算過程可以利用MATLAB軟件編寫相應程序來完成,具體程序如下。 a1=0;b1=1;eps=0.001; F(1)=1;F(2)=1; k=3; while 1 F(k)=F(k-1)+F(k-2); if F(k)>=((b1-a1)/eps) break else k=k+1; end end 運行程序可得滿足條件的斐波那契數(shù)列:1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597。 1.3 函數(shù)圖像繪制 在無約束優(yōu)化及約束優(yōu)化算法的教學過程中,分析目標函數(shù)的極值分布情況及算法的迭代過程是一個教學難點內(nèi)容,傳統(tǒng)的教學模式僅靠理論分析及手工作圖的方法幾乎很難把這個問題講解清楚,以至于學生難以理解,授課效率極其低下。MATLAB軟件圖形繪制功能非常強大,利用MATLAB內(nèi)部繪圖命令可以畫出各種函數(shù)的圖像。因此,在優(yōu)化算法的教學過程中,利用MATLAB軟件畫出目標函數(shù)的圖像,輔助理論教學,對學生理解函數(shù)性態(tài)及理解算法的迭代過程特別有幫助。 例2:畫出函數(shù)在矩形區(qū)域D:-2≤x≤2,-2≤y≤3上的圖像。 利用MATLAB的繪圖函數(shù)contour及contour3可以分別畫出函數(shù)的二維等值線圖和三維等值線圖,相應的程序如下。 [X,Y]=meshgrid(-2:.1:2,-2:.1:3); Z=X.*exp(-X.^2-Y.^2); [C,h]=contour(X,Y,Z); set(h,'ShowText','on','TextStep',get(h,'LevelStep')*1) colormap cool xlabel('x'); ylabel('y'); figure contour3(X,Y,Z,30) surface(X,Y,Z,'EdgeColor',[.8 .8 .8],'FaceColor','none') view(-15,25) colormap cool xlabel('x'); ylabel('y'); zlabel('z'); 運行程序可得圖2和圖3圖像。 從圖2和圖3都可以看出函數(shù)在矩形區(qū)域D:-2≤x≤2,-2≤y≤3上存在一個極大值和一個極小值,只不過圖3更加直觀。在分析優(yōu)化算法迭代過程時候,在圖2上面進行分析,結(jié)合相關理論,就頗為方便。 2 ?結(jié)語 利用MATLAB程序設計,輔助理論教學,改善了《最優(yōu)化方法》課程傳統(tǒng)教學模式的不足。在實際的教學過程中,利用這種新的教學方法取得了良好的教學效果,改變了以往枯燥乏味、抽象的理論教學模式,吸引了學生的注意力,提高了學生的學習興趣及學習效率,使得“教”與“學”不再是枯燥乏味的事情。 參考文獻 [1] 馬昌鳳.最優(yōu)化方法及其Matlab程序設計[M].北京:科學出版社,2010. [2] 陳寶林.最優(yōu)化理論與算法[M].北京:清華大學出版社,2005. [3] 劉帥奇,李會雅,趙杰.MATLAB程序設計基礎與應用[M].北京:清華大學出版社,2016.