当 T 在 [0,12] 范围内时,我必须在 matlab 中用 ode45 求解这个方程:
我想要那个时候:
- T > Tend,开关为0,
- (T < Tin and dT/dt > 0),开关为 1。
我在这里看到了文档,但我不明白怎么做。
clc;
clear all;
close all;
global Q Tamb n swicth
Tamb = 0;
Q = 1000;
n = 1/3;
Ti = 0;
swicth = 1;
T_end = 2000;
maxT = 12;
tspan = [0 maxT];
CI = [Ti];
[TOUT,YOUT] = ode45(@odefun,tspan, CI); <--------- ??
odefun 函数:
function T = odefun(t, Tin)
global Q Tamb n swicth
T = (swicth*Q - (Tin - Tamb)^n);
end
正如我上面所说,我不想将参数传递给函数!也许以前的标题具有误导性,但我认为我的问题很清楚。但是,我尝试更好地解释。Ode45 数值积分我的函数,所以它给了我在时间 t_i ( f(t_i) ) 的函数值,并且对于 [0:12] 中的每个 t_i 重复此操作。我想根据时间 t_i 的函数值来更改时间 t_(i+1) 的积分开关的值。[规则在上面解释]。