【发布时间】:2013-12-24 02:37:19
【问题描述】:
我正在使用ode45 解决一个简单的ODE:
function dCdt=u_vent(t,C)
if t> 600 && t<= 720
Q=Q2;
elseif t> 1320 && t<= 1440
Q=Q2;
elseif t> 2040 && t<= 2160
Q=Q2;
elseif t> 2760 && t<= 2880
Q=Q2;
elseif t> 3480 && t<= 3600
Q=Q2;
else
Q=Q1;
end
V=100;
C_i=400;
S=100;
dCdt=Q/V*C_i+S/V-Q/V*C(1);
return
我用then来解决:
[t,C]=ode45(@u_vent, [0 1*3600], 400);
我想为Q、0<t<3600 创建一个周期函数,例如图片中的那个,而不使用那些if 语句...有什么想法吗?
【问题讨论】:
-
如果你有 Simulink,那么它很容易以图形方式完成
-
我假设您知道您的系统有解析解?如果你不擅长微分方程,你可以使用Matlab的
dsolve函数:syms Q V C_i S t C(t) C0;dsolve(diff(C,t)==(Q*(C_i-C)+S)/V,C(0)==C0)。
标签: matlab differential-equations numerical-integration