[問題] 如何使用副程式計算過程中的變數存取、 …已回收
目前我寫的副程式是解微分方程,
副程式中應用到許多參數的計算,
請問是否有指令可以在主程式中,
直接存取副程式的計算參數繪圖??
目前兩有個想法,
第一個是將計算結果存在.txt或.xls,
然後再讀取該數據畫圖。
另一個是在主程式中,
直接再寫一次參數計算。
第一個所遇到的問題,
因為是微分方程,
所以存檔會花費相當長的時間,
Excel檔案開出來也是亂碼,
請問有比較好的方式嗎??
最好是可以用某個指令直接將先前的計算結果取出繪圖,
如下列方程式之 VE VC PE PC ,
感激不盡!
程式碼如下:
主程式:
clear all
clc
x0=[300;300;0.0052;0.0025];
ts=0:0.005:250;
tol=1e-4;
options=odeset('RelTol',tol,'AbsTol',[tol,tol,tol,tol]);
[t,x]=ode15s('CaseIII_20100326',ts,x0,options);
副程式:
function dx = CaseIII_20100326(t,x)
%global V0 V1 a Cv Cp VE VC dVE dVC hWE hWC AE AC QEd QCd PE PC thou_E thou_C a b Leng RF_E RF_C D_tube omg t
dx=zeros(4,1);
V0=402;
V1=2010;
Cv=0.717;
Cp=1.004;
omg=1;
R=0.287;
VE=V0+V1*(1+cos(omg*t));
VC=V0+V1*(1+cos(omg*t+pi/2));
dVE= -omg*V1*sin(omg*t);
dVC= -omg*V1*sin(omg*t+pi/2);
hWE=(56.54*((x(1)+120)/((VE)*(10^(-9)))/(x(1)^(1.5))))^(0.8);
hWC=(56.54*((x(2)+120)/((VC)*(10^(-9)))/(x(2)^(1.5))))^(0.8);
AE=(201+(402+2010*(1+cos(t)))*4/16)/(10^9);
AC=(201+(402+2010*(1+cos(t+pi/2)))*4/16)/(10^9);
QEd = hWE*AE*(523-x(1));
QCd = hWC*AC*(298-x(2));
thou_E = x(3)/VE;
thou_C = x(4)/VC;
a = 1.458*10^(-6); % kg/(m*s*K^0.5)
b = 110.4 ; % K
%Vis = a*(T^1.5)/(T+b); % 黏致係數 Viscosity (kg/(m*s))
% Sutherland correlation
Vis_E = a*(x(1)^1.5)/(x(1)+b);
Vis_C = a*(x(2)^1.5)/(x(2)+b);
Leng=0.02; % m
D_tube= 0.002; % m
%RF=Vis*Leng/D_tube^4; % 流體阻力
RF_E=Vis_E.*Leng/D_tube^4;
RF_C=Vis_C.*Leng/D_tube^4;
PE = x(3).*R*x(1)/(VE.*1e-9);
PC = x(4).*R*x(2)/(VC.*1e-9);
if PC >= PE
mEI= thou_C.*(PC-PE)./RF_C;
mEO= 0;
else
mEI= 0;
mEO= thou_E.*(PE-PC)./RF_E;
end
dx(1) = mEI.*(Cp.*x(2)-Cv.*x(1))./x(3)/Cv-mEO.*R*x(1)/x(3)./Cv-R*x(1).*dVE/Cv/VE+hWE.*AE*(523-x(1)) ;
dx(2) = mEO.*(Cp.*x(1)-Cv.*x(2))./x(4)/Cv-mEI.*R*x(2)/x(4)./Cv-R*x(2).*dVC/Cv/VC+hWC.*AC*(298-x(2)) ;
dx(3) = mEI-mEO;
dx(4) =(mEO-mEI) ;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.7.184
※ 編輯: YangJimmy 來自: 122.118.7.184 (04/04 18:34)
推
04/04 21:25, , 1F
04/04 21:25, 1F
→
04/04 21:26, , 2F
04/04 21:26, 2F
→
04/04 21:39, , 3F
04/04 21:39, 3F
→
04/04 23:00, , 4F
04/04 23:00, 4F
推
04/05 00:20, , 5F
04/05 00:20, 5F