演算法第二彈-線性規劃之投資的收益和風險分析及程式碼實現
阿新 • • 發佈:2019-02-02
嘻嘻,當你看到這篇文章的時候,是的,我又更新啦!初學小白的我對於如宇宙黑洞般一樣神祕的演算法,分享給大家一些小小的感受,第二彈!
演算法和數學息息相關,巧妙的邏輯往往建立在數學上,今天結合線性規劃,談談投資中收益與風險等因素的相互關係,為決策者在實際生活中提供參考依據,以及用Matlab實現的方法。學以致用,所以這是一篇實用貼!
題目:
----------------------------------------------------------------------分割線---------------------------------------------------------------------
以下是數學建模過程:
一.符號說明
二.基本假設
三.模型的分析與建立
四.模型簡化
五.模型一的求解
六.結果分析
-------------------------------------------------至此模型的分析就告一段落啦,嘻嘻------------------------------------------------------
單純形法是求解線性規劃問題最常用最有效的演算法之一,此處介紹一種好用的工具,將將-Matlab(可用於演算法開發、資料視覺化、資料分析以及數值計算,此外,還能建立使用者介面以及呼叫其他語言(包括C\C++\Fortran)編寫的程式)
Matlab解法:
“山河平靜遼闊,無一點貪嗔痴愛,而我們匆匆忙忙,都還在路上”---《路上書》//編寫M檔案;將M檔案存檔,並命名為xxx.m;在Matlab指令窗執行xxx即可得所求結果 clc,clear a=0; hold on //實現新的plot命令產生的圖形畫在原來的圖形上 while a<0.05 c=[-0.05,-0.27,-0.19,-0.185,-0.185] //規範化max->min A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])]; b=a*ones(4,1); Aeq=[1,1.01,1.02,1.045,1.065]; //等式約束條件的係數 beq=1; //等式約束條件右邊 LB=zeros(5,1); //變數允許的最低取值 [x,Q]=linprog(c,A,b,Aeq,beq,LB); //線性規劃函式 Q=-Q; //求得最大收益 plot(a,Q,’*r’); //Matlab中繪製二維曲線,其中’*r’表示線型點為加號,顏色為紅色(具體可查“matlab中plot函式全部功能”) a=a+0.001; //以進行迴圈搜尋 end xlabel(‘a’),ylabel(‘Q’) //標註
文藝的say goodbye~~~
下期見❥(^_-)