文章目录
一、部分题目
2018 年高教社杯全国大学生数学建模竞赛题目
A 题 高温作业专用服装设计
在高温环境下工作时,人们需要穿着专用服装以避免灼伤。专用服装通常由 三层织物材料构成,记为I、II、III 层,其中I 层与外界环境接触,III 层与皮肤 之间还存在空隙,将此空隙记为IV 层。 为设计专用服装,将体内温度控制在37ºC 的假人放置在实验室的高温环境 中,测量假人皮肤外侧的温度。为了降低研发成本、缩短研发周期,请你们利用 数学模型来确定假人皮肤外侧的温度变化情况,并解决以下问题:
请建立数学模型解决以下问题
问题1 专用服装材料的某些参数值由附件1 给出,对环境温度为75ºC、II 层厚 度为6 mm、IV 层厚度为5 mm、工作时间为90 分钟的情形开展实验,测量得到 假人皮肤外侧的温度(见附件2)。建立数学模型,计算温度分布,并生成温度 分布的Excel 文件(文件名为problem1.xlsx)。
问题2 当环境温度为65ºC、IV 层的厚度为5.5 mm 时,确定II 层的最优厚度, 确保工作60 分钟时,假人皮肤外侧温度不超过47ºC,且超过44ºC 的时间不超 过5 分钟。
问题3 当环境温度为80ºC 时,确定II 层和IV 层的最优厚度,确保工作30 分 钟时,假人皮肤外侧温度不超过47ºC,且超过44ºC 的时间不超过5 分钟。
二、部分论文
三、部分Matlab源代码
问题1
1 求解h1h2
cpp
%搜索h1、h2的具体值
%实际操作发现h1敏感度不大,而h2敏感度非常大
%先h1保持不变,搜索出h2=8.374,再保持h2不变,找出h1的具体数值
clc;clear;close all;
% [FJ2,FJ2_text]=xlsread('A.xlsx','附件2');
% T0=FJ2(:,2); %初始各点的温度,T0(1)是0时的温度
% save FJ_2
load FJ_2.mat
%有限差分法,隐式
arg_min=1e6;
L1=0.6;L2=6;L3=3.6;L4=5;
T_en=75;tt=5400;
h2=8.374;
for h1=116:0.01:118
[T]=qiujie(L1,L2,L3,L4,h1,h2,T_en,tt);
TT=[FJ2(:,1),T(end,:)'];%模拟人的温度变化
arg=norm(TT(:,2)-FJ2(:,2))^2;
if arg<arg_min
arg_min=arg;
h_1=h1;
h_2=h2;
TT_2=TT;
end
end
%绘图
figure('Color','w')
plot(1:5401,TT_2(:,2),'b','LineWidth',1.5);
hold on
plot(1:5401,FJ2(:,2),'r:','LineWidth',1.5);
legend('模拟值','实验值')
xlabel('时间(秒)');ylabel('温度(摄氏度)')
2 已知h1h2求解温度分布
cpp
%已知h1、h2,求解温度分布
clc;clear;close all;
load FJ_2.mat
%有限差分法,隐式
L1=0.6;L2=6;L3=3.6;L4=5;
T_en=75;tt=5400;
h1=116.79;h2=8.374;
[T]=qiujie(L1,L2,L3,L4,h1,h2,T_en,tt);
%绘最终温度分布图
figure('Color','w')
x=[0:length(T(:,1))-1]/10;
plot(x,T(:,end)')
hold on
text(L1,T(L1*10+1,end),'|','color','r')
text(L1+L2,T((L1+L2)*10+1,end),'|','color','r')
text(L1+L2+L3,T((L1+L2+L3)*10+1,end),'|','color','r')
text(L1+L2+L3+L4,T((L1+L2+L3+L4)*10+1,end),'|','color','r')
grid on
xlabel('L(mm)');ylabel('T(°)')
%拟合优度计算
SST=norm(FJ2(:,2)-mean(FJ2(:,2)))^2;
SSE=arg_min;
R=1-SSE/SST;
%绘三维温度分布图
t=0:5400;
figure('Color','w')
surf(x,t,T')
shading interp
xlabel('L(mm)');ylabel('t(s)');zlabel('T(°)')
axis([0 15.2 0 5400 35 80 ])
%储存温度分布
xlswrite('problem1.xlsx',T')
问题2
1 求解第二层最佳厚度
cpp
%求解二层的最优厚度
clc;clear;close all;
L1=0.6;L3=3.6;L4=5.5;
h1=116.790;h2=8.374;
T_en=65;tt=3600;
%遍历找到L2
min_L2=25;
for L2=0.6:0.1:25
[T]=qiujie(L1,L2,L3,L4,h1,h2,T_en,tt);
TT=T(end,:);%提取人体表面温度
count=find(TT>44);%找出温度超44°的点
if TT(end,end)<=47&&length(count)<=5*60&&L2<min_L2
min_L2=L2;
T_re=TT;
T_max=TT(end);
pass=length(count);%超出时间
end
end
%绘图,皮肤随时间的温度变化
figure('Color','w')
x=0:tt;
plot(x,T_re,'b-','LineWidth',1.7)
hold on
plot(x,ones(1,length(x))*T_max,'k:','LineWidth',1.5);
xlabel('t(秒)');ylabel('T(摄氏度)')
legend('L2=17.5')
axis([0 tt 35 45])