[心得] 關於副程式的使用
因為有版友私下寫信給我.對於合併程式m-file的方法
做個解說.
私以為將自己的心得.作為拋磚引玉.
首先.為什麼小弟總是喜歡用副程式來撰寫程式呢?
小弟是讀化工的.研讀部分屬於化工中很特別的一種
程序控制與模擬.而我負責的部份為反應性蒸餾系統.
當我進行蒸餾塔模擬的時候.會有很恐怖的情形.
單板:微分方程式的數目與成分數同外.還得進行溫度對氣體蒸氣壓的影響
若果成分數達到4個.板數達到35個板.那麼方程式數目為
35*4 = 140 條微分方程式 = 變數的數目
三條微方+一條總組成 = DAE (微分代數方程式) 用 ode15s 解題器來解
(若果兩者不相同.那麼解出來就不會是唯一解.在此不討論多重穩態)
還不包含能量平衡方程式(有化學反應還得加入反應熱)
這樣大的程式是很恐怖的.有人說合併挺麻煩.太多看不清.
不過要是一個式子一個式子修改.反而是合併較為容易
而且還得計算熱力學模組(NRTL,WILSON,UNIQUAC,UNIFAC等等).
又得增加一個疊代迴路...那在修改時就很恐怖了....
因為要把數據拿出來畫圖.常用到 " global " (全域變數宣告)
變的很不好改變程式碼
那麼我就想.將程式合併出來不就很好嗎?不過一開始都弄不起來
(那時候很菜.看到 MATHWORK 的檔案交換中心的人寫的東西.都覺得他們是怪物
不知道是怎麼併的.還有人寫成GUI.真是神 @@a.不過現在還是沒改變對他們的
崇拜就是了)
後來成功了.有兩點挺重要的.我就直接進入主題吧
1.使用 % ---------------------- 將副程式分出來
2.使用函數握把 @ .才可以順利求解
範例:function pptex2
握把--> [T,X]=ode45(@test2,[0 10],[0;0])
D=5.2;
m=61;
a0=346.05;
L=10.6;
Po2=8;
Po1=1;
N=(1-0.2.*X(:,2)./a0).^(7)
M=(L-X(:,1)./L).^(-1.4)
xlswrite('T',T,'T')
xlswrite('X',X,'X')
xlswrite('M',M,'M')
xlswrite('N',N,'N')
分隔--> % ------------------------------------------------------------------
function dx=test2(t,x)
D=5.2;
m=61;
a0=346.05;
L=10.6;
Po2=8;
Po1=1;
dx=zeros(2,1);
dx(1)=x(2);
N=(1-0.2*x(2)/a0)^7;
M=(L-x(1)/L)^-1.4;
dx(2)=(pi*D^2/(4*m)*0.1)*((Po2*N)-(Po1*M));
一般利用MATLAB內建的函數使用時.大部分我們在使用的方式是如此的
(這邊指使用數值解方面的解題器.非解析解的)
[OUTPUT,...]=FUNCTIONNAME( ' FILENAME ' ,CONDITION,FACTOR1,...)
^^^ ^^^
在MATLAB中有一個使用指令與上面標記起來的用法類似.但是卻於使用副程式時
為必須條件.我個人使用時是發現.不使用函數握把時.無法使用副程式
(剛開始覺得自己很菜的原因竟然是不會打小老鼠 囧>)
所以請要使用的同好.使用函數握把吧.並且要將程式與程式之間隔開就是了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.160.163
推
09/16 22:48, , 1F
09/16 22:48, 1F
→
09/16 22:48, , 2F
09/16 22:48, 2F
→
09/16 22:49, , 3F
09/16 22:49, 3F
→
09/16 22:49, , 4F
09/16 22:49, 4F
推
09/16 23:18, , 5F
09/16 23:18, 5F
→
09/16 23:18, , 6F
09/16 23:18, 6F
→
09/16 23:19, , 7F
09/16 23:19, 7F
→
09/16 23:20, , 8F
09/16 23:20, 8F
→
09/16 23:20, , 9F
09/16 23:20, 9F
→
09/16 23:21, , 10F
09/16 23:21, 10F
推
09/16 23:54, , 11F
09/16 23:54, 11F
推
09/16 23:56, , 12F
09/16 23:56, 12F
→
09/16 23:57, , 13F
09/16 23:57, 13F
推
09/18 23:14, , 14F
09/18 23:14, 14F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章