已知室内空气等效热容110000、墙体等效热容18600000000,建筑面积为80平方米,8:00-21:00电价为0.56,21:00-8:00电价为0.32,室内空气和墙体内侧的等效热阻分别为0.0012、墙体外侧和室外空气的等效热阻0.0093,室内温度、墙体温度、室外温度,电采暖设备制热功率,电采暖设备的额定功率,S(t)为电采暖设备的开关状态,温度在18-22摄氏度内波动,用matlab2021房间温变过程的集总参数常微分方程的解,并求出不同室外温度(0,-5,-10,-15,-20,-25,-30)下,平均升温时长(min),平均降温时长,周期,平均占空比,日用电量,日平均用电功率和日用电成本程序,并写出程序运行结果
时间: 2023-10-08 11:14:27 浏览: 38
很抱歉,作为一个AI语言模型,我并不具备运行Matlab程序的能力,但我可以给出集总参数常微分方程的解和方程的代码实现。需要注意的是,这里的方程及代码实现仅供参考,具体实现可能需要根据实际情况进行调整。
假设室内温度为 $T_a$,墙体温度为 $T_w$,室外温度为 $T_e$,电采暖设备制热功率为 $P$,室内空气等效热容为 $C_a$,墙体等效热容为 $C_w$,房间面积为 $S$,室内空气和墙体内侧的等效热阻为 $R_i$,墙体外侧和室外空气的等效热阻为 $R_o$,则集总参数常微分方程可以表示为:
$$C_a\frac{dT_a}{dt}=\frac{1}{R_i}(T_w-T_a)+\frac{1}{R_o}(T_e-T_a)+PS(t)$$
$$C_w\frac{dT_w}{dt}=\frac{1}{R_i}(T_a-T_w)$$
其中 $S(t)$ 为电采暖设备的开关状态,当 $S(t)=1$ 时,电采暖设备工作,产生制热功率 $P$,当 $S(t)=0$ 时,电采暖设备不工作,不产生制热功率。
根据题目中给出的数据,可以列出如下的Matlab程序代码实现:
```matlab
% 常数定义
Ca = 110000; % 室内空气等效热容
Cw = 18600000000; % 墙体等效热容
S = 80; % 建筑面积
Ri = 0.0012; % 室内空气和墙体内侧的等效热阻
Ro = 0.0093; % 墙体外侧和室外空气的等效热阻
Tmin = 18; % 最低温度
Tmax = 22; % 最高温度
Pmax = 2000; % 电采暖设备额定功率
P = 0; % 电采暖设备实际功率
% 时间定义
t_start = 0; % 开始时间
t_end = 24*60*60; % 结束时间
dt = 60; % 时间步长
% 温度定义
Ta_start = 20; % 初始室内温度
Tw_start = 10; % 初始墙体温度
Te = [-30, -25, -20, -15, -10, -5, 0]; % 室外温度
% 开关状态定义
S_start = 0; % 初始状态为关闭
S_end = 1; % 终止状态为打开
% 计算时间序列
t = t_start:dt:t_end;
% 计算电价序列
price = zeros(size(t));
price(t < 8*60*60) = 0.32;
price(t >= 8*60*60 & t < 21*60*60) = 0.56;
price(t >= 21*60*60) = 0.32;
% 计算温度序列
Ta = zeros(size(t));
Tw = zeros(size(t));
S = zeros(size(t));
Ta(1) = Ta_start;
Tw(1) = Tw_start;
S(1) = S_start;
for i = 2:length(t)
% 计算电采暖设备实际功率
if (Ta(i-1) < Tmax && S(i-1) == 0)
P = Pmax;
elseif (Ta(i-1) > Tmin && S(i-1) == 1)
P = Pmax;
else
P = 0;
end
% 计算室内温度和墙体温度
dTa = (Tw(i-1) - Ta(i-1))/Ri + (Te(1) - Ta(i-1))/Ro + P/Ca;
dTw = (Ta(i-1) - Tw(i-1))/Ri;
Ta(i) = Ta(i-1) + dTa*dt;
Tw(i) = Tw(i-1) + dTw*dt;
% 计算开关状态
if (Ta(i) < Tmin)
S(i) = S_end;
elseif (Ta(i) > Tmax)
S(i) = S_start;
else
S(i) = S(i-1);
end
end
% 计算不同室外温度下的平均升温时长、平均降温时长、周期、平均占空比、日用电量、日平均用电功率和日用电成本
for i = 1:length(Te)
% 计算温度波动
delta_T = Ta - (Tmin + Tmax)/2;
delta_T(Ta < Tmin | Ta > Tmax) = 0;
T_wave = abs(2*delta_T./(Tmax - Tmin));
% 计算平均升温时长
t_rise = 0;
count_rise = 0;
for j = 1:length(t)
if (T_wave(j) > 0)
count_rise = count_rise + 1;
if (count_rise == 1)
t_start_rise = t(j);
end
else
if (count_rise > 0)
t_rise = t_rise + (t(j) - t_start_rise);
count_rise = 0;
end
end
end
if (count_rise > 0)
t_rise = t_rise + (t_end - t_start_rise);
end
t_rise_avg(i) = t_rise/count_rise/60;
% 计算平均降温时长
t_fall = 0;
count_fall = 0;
for j = 1:length(t)
if (T_wave(j) > 0)
if (count_fall > 0)
t_fall = t_fall + (t(j) - t_start_fall);
count_fall = 0;
end
else
count_fall = count_fall + 1;
if (count_fall == 1)
t_start_fall = t(j);
end
end
end
if (count_fall > 0)
t_fall = t_fall + (t_end - t_start_fall);
end
t_fall_avg(i) = t_fall/count_fall/60;
% 计算周期和平均占空比
T_wave(T_wave == 0) = NaN;
[pks,locs] = findpeaks(T_wave);
period = mean(diff(locs))*dt/60;
duty_cycle = mean(T_wave(~isnan(T_wave)))*100;
% 计算日用电量、日平均用电功率和日用电成本
energy = sum(price.*P/1000/60)*24;
power_avg = mean(P)*24/1000;
cost = energy*price(end);
% 打印结果
fprintf('室外温度:%d℃\n', Te(i));
fprintf('平均升温时长:%fmin\n', t_rise_avg(i));
fprintf('平均降温时长:%fmin\n', t_fall_avg(i));
fprintf('周期:%fmin\n', period);
fprintf('平均占空比:%f%%\n', duty_cycle);
fprintf('日用电量:%fkWh\n', energy);
fprintf('日平均用电功率:%fkW\n', power_avg);
fprintf('日用电成本:%f元\n\n', cost);
end
```
需要注意的是,该代码实现中使用了Matlab中的findpeaks函数来查找温度波动的峰值,因此需要确保Matlab版本支持该函数。如果不支持,可以采用其他方法来查找峰值。此外,该代码实现中没有考虑电采暖设备的启动时间和停止时间,如果需要考虑,可以在计算电采暖设备实际功率时进行相应的修改。