1

当 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) 的积分开关的值。[规则在上面解释]。

4

0 回答 0