当T在[0,12]范围内时,我必须在matlab中用ode45求解这个等式:
我想要的时候:
我看到文档here,但我无法理解它是如何做到的。
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)处更改用于积分的开关的值。[规则在上面解释]。< / p>