楊 柳
(陜西國際商貿學院 基礎課部,西安 712046)
Matlab是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及數值計算的高級技術計算語言,為數值計算提供了解決方案。它有高效的數值計算,又有圖形處理功能為用戶的提供了便利。Matlab中包含大量的算法,直接調用,可以快速得到近似解或者圖解?,F代化計算必須與科學計算機相結合,否則對學科的研究就只停留在大型的計算上。
經濟學中,數學模型和計算機的應用是對某些經濟問題分析的基礎[1],只有得到模型的解或模型的圖像,才能更好地分析經濟活動體現的問題。模型求解的過程中,數值解往往比準確解更容易得到,也能更好地反饋經濟活動的變化過程,利用計算機求解模型是數值計算的有效方法。
在宏觀經濟運行過程中,運輸問題、配料問題、合理下料問題等線性規(guī)劃問題比較常見,線性規(guī)劃問題是運籌學的重要分支,廣泛應用于軍事作戰(zhàn)、經濟分析、經營管理和工程技術等方面,為合理地利用有限的人力、物力、財力等資源做出最優(yōu)的決策,提供科學的依據。運籌學中,對線性規(guī)劃問題的求解方式有三種,包括圖解法、單純形法、計算機求解。其中,圖解法是變量只有兩個的情況下,在直角坐標系中畫出可行域,找目標函數的最優(yōu)解;單純形法適用于任意變量,但需要把線性規(guī)劃問題轉化為標準的形式;計算機求解課采用Matlab軟件、lingo軟件或者Excel表格。利用圖表法求解過程煩瑣,且只能有兩個變量,多個變量則不能使用,單純形法的求解速度較慢,需要對單純形法的步驟很清晰,計算能力要求較高。而宏觀經濟學中,模型越趨向于非線性,計算方法與非線性模型的數值計算緊密相連,隨著計算機技術的成熟,非線性模型的求解已經不受限制,并且大規(guī)模的運算也能夠實現。Matlab工具箱提供了非線性模型的求解方法,無論是提高求解速度的方法,或者是提高數值解精度的方法,在軟件中都有涉及。
宏觀經濟的最優(yōu)化問題是指在決策管理中,通過協調有限的資源,達到最佳的經濟效果,最大限度地滿足人們的需求。最優(yōu)化問題最基本的是線性規(guī)劃問題,線性規(guī)劃是經濟計劃最優(yōu)化的基本方法之一,是進行科學管理的一種數學方法,在經濟管理、交通運輸、工農業(yè)生產等經濟活動中,提高經濟效果是人們的要求。而提高經濟效果一般通過兩種途徑:一是技術方面的改進,例如改善生產工藝,使用新設備和新型原材料;二是生產組織與計劃的改進,即合理安排人力物力資源。線性規(guī)劃所研究的是:在一定條件下,合理安排資源,使經濟效果達到最好。規(guī)劃問題,即求線性目標函數在線性約束條件下的最大值或最小值的問題[2]。
Matlab為規(guī)劃問題(線性規(guī)劃和非線性規(guī)劃)提供了求解的工具箱。求線性規(guī)劃問題的最優(yōu)解有兩種方法,一種方法是使用linprog命令,另一種是使用optimtool工具箱。一般情況下,linprog 命令的調用格式為[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub,x0)。其中,f表示目標函數中各個變量前面的系數向量,如果是求最小值問題,那么f就是各個變量的系數,如果是求最大值問題,那么f就是各個變量的系數的相反數;A和b分別表示不等式約束A*x<=b中的矩陣A和向量b;Aeq和beq表示等式約束Aeq*x=beq中的矩陣Aeq和向量beq。
例如,某工廠要用三種原料1、2、3混合調配出三種不同規(guī)格的產品甲、乙、丙,已知產品的規(guī)格要求及單價為:甲產品需要原材料1不少于50%,原材料2不超過25%,每千克售價50元;乙產品需要原材料1不少于25%,原材料2不超過50%,每千克售價35元;丙產品對原材料沒有限制,每千克售價25元。每天能供應的原料數量及原料單價為:原材料1每天最多供應100千克,每千克65元;原材料2每天最多供應100千克,每千克25元;原材料3每天最多供應100千克,每千克35元。問:該廠應如何安排生產,使利潤收入為最大?
解:設xi,j表示第i(i=1,2,3,1=甲,2=乙,3=丙)種產品中原料j(j=1,2,3)的含量。如,x1,2就表示甲產品中第2種原材料的含量。
max z=-15x11+25x12+15x13-30x21+10x22-40x31-10x33
S.t.
0.5x11-0.5x12-0.5x13≥0
-0.25x11+0.75x12-0.25x13≤0
0.75x21-0.25x22-0.25x23≥0
-0.5x21+0.5x22-0.5x23≤0
x11+x21+x31≤100
x12+x22+x32≤100
x13+x23+x33≤60
xij≥0,i=1,2,3;j=1,2,3
Matlab求解程序為:
>>f=[15,-25,-15,30,-10,0,40,0,10];
>>A=[-0.5,0.5,0.5,0,0,0,0,0,0;-0.25,0.75,-0.25,0,0,0,0,0,0;0,0,0,-0.75,0.25,0.25,0,0,0;0,0,0,-0.5,0.5,-0.5,0,0,0;1,0,0,1,0,0,1,0,0;0,1,0,0,1,0,0,1,0;0,0,1,0,0,1,0,0,1];
>>B=[0,0,0,0,100,100,60];
>>lb=zeros(9,1);
>>[x,fval]=linprog(f,A,B,[],[],lb)
Optimization terminated.
x=
100.0000
50.0000
50.0000
0.0000
0.0000
0.0000
0.0000
25.00000.0000
fval=
-500.0000
結果分析:由于求的是最大值,在MATLAB的標準形式中,需要把最大值的目標函數兩邊取負號,轉變?yōu)榍笞钚≈档男问?,因此結果中的-500是添加負號之后的最小值。因此,本題收入的最大值為500元,安排的生產方案是:甲產品中第一種原材料的含量為100千克,甲產品中的第二種原材料的含量為50千克,甲產品中的第三種原材料含量為50千克,丙產品中的第二中原材料含量為25千克。
美國經濟學家列昂惕夫提出的投入產出模型是對經濟學系統中產品的投入及產出之間關系的考察,也是對經濟預測和制定經濟政策及措施的依據的數學模型。由于社會分工的不同,可以分為若干個經濟部門,每個經濟部門的活動可以分為投入和產出兩方面,通過投入產出模型可以描述短期的投入產出的經濟聯系,是一個相對靜態(tài)的模型[3]。
假設 n 個能夠生產產品的部門,令 x=(x1,x2,…,xn)T為產出向量,y=(y1,y2,…,yn)T是最終需求向量,A 為消耗系數矩陣,則列昂惕夫投入產出模型為x=Ax+y,整理得x=(I-A)-1y,大部分實際問題中I-A是可逆矩陣,產出量轉化為矩陣的乘法,若A與y已知,則可求出對應的產量x。Matlab實現:在命令窗口中輸入投入產出表,求出消耗系數矩陣A,輸入最終需求向量y,根據x=(I-A)-1y求出相應的產出向量x。
投入產出模型可以分析各部門在生產實際中所占的比例,調整產業(yè)結構,也能研究各部門運轉的內在聯系及之間的影響。并且在某一產品價格變動的過程中,可以了解對整個生產活動的影響,從而為最終的生產提供科學的規(guī)劃[4]。
宏觀經濟發(fā)展的趨勢是越來越多地使用數學和統計工具,利用數學模型來表述經濟理論,好的模型要能夠正確證明自已的想法、數學符號與語言解釋能夠緊密聯系、經濟變量要有意義且與實際數據能夠較為緊密地對應。將Matlab運用于經濟模型的求解過程,一方面可以提高計算的速度,另一方面可以把抽象的模型轉化為數值解與圖形,從圖形觀察和理解經濟活動,化復雜為簡單,化抽象為具體,有利于提高感性的認知,加強對經濟模型的直觀認識,對抽象的定理及經濟活動的理解。