一、部分题目
2021 年高教社杯全国大学生数学建模竞赛题目
B 题 乙醇偶合制备 C4 烯烃
C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料。 在制备过程中,催化剂组合(即:Co 负载量、Co/SiO2 和 HAP 装料比、乙醇浓度 的组合)与温度对 C4 烯烃的选择性和 C4 烯烃收率将产生影响(名词解释见附录)。 因此通过对催化剂组合设计,探索乙醇催化偶合制备 C4 烯烃的工艺条件具有非常 重要的意义和价值。
某化工实验室针对不同催化剂在不同温度下做了一系列实验,结果如附件 1 和 附件 2 所示。请通过数学建模完成下列问题:
问题1 对附件 1 中每种催化剂组合,分别研究乙醇转化率、C4 烯烃的选择性与温 度的关系,并对附件 2 中 350 度时给定的催化剂组合在一次实验不同时间的测试结 果进行分析。
问题2 探讨不同催化剂组合及温度对乙醇转化率以及 C4 烯烃选择性大小的影响。
问题3 如何选择催化剂组合与温度,使得在相同实验条件下 C4 烯烃收率尽可能 高。若使温度低于 350 度,又如何选择催化剂组合与温度,使得 C4 烯烃收率尽可 能高。
问题4 如果允许再增加 5 次实验,应如何设计,并给出详细理由。
二、部分论文
三、部分源代码
问题1
clear;
X = [20 70 110 163 197 240 273];
YC = [43.5 37.8 36.6 32.7 31.7 29.9 29.9];
YY = [];
a=29.04;
b=18.15;
c=0.01;
for s=1:length(X)
x=X(s);
YY(s) = a + b*exp(-c*x);
end
plot(X, YC, '.', 'Markersize', 20);
hold on;
plot(X, YY, 'linewidth', 2);
xlabel('温度/°C');
ylim([28 46]);
ylabel('乙醇转换率/%');
title('乙醇转换率与温度曲线拟合')
legend('实际值', '拟合曲线');
clear;
X = [20 70 110 163 197 240 273];
YX = [4.23 4.28 4.46 4.63 4.62 4.76 4.68
];
YY = [];
a=-7.95E-8;
b=2.91E-5;
c=-2.76E-4;
d=4.22;
for s=1:length(X)
x=X(s);
YY(s) = a*x^3+b*x^2+c*x+d;
end
plot(X, YX, '.', 'Markersize', 20);
hold on;
plot(X, YY, 'linewidth', 2);
xlabel('温度/°C');
%ylim([28 46]);
ylabel('乙烯选择性');
title('乙烯选择性与温度曲线拟合')
legend('实际值', '拟合曲线');
clear;
X = [20 70 110 163 197 240 273];
YX = [4.23 4.28 4.46 4.63 4.62 4.76 4.68
];
k = 94.98;
a=20;
b =0;
k=1;
a=1;
b=1;
YY = [];
for s=1:length(X)
x=X(s);
f = k/(1+a*exp(-b*x));
YY(s) = f;
end
plot(X, YX, '*');
问题3
clear;
X1 = 190 : 1 : 200; % Co负载量
X2 = 10 : 1 : 20; % HAP质量
X3 = 2 : 0.01 : 3; % 质量比
X4 = 0.3 : 0.01 : 2.1; % 乙醇浓度
X5 = 340 : 1 : 350; % 温度
maxq = 4980.8;
Z_arr = [];
Z_X1 = [];
Z_X2 = [];
Z_X3 = [];
Z_X4 = [];
Z_X5 = [];
n=0;
Index = [];
% x2 负相关
% x1 正相关
for i1=1:length(X1)
x1 = X1(i1);
for i2=1:length(X2)
x2 = X2(i2);
for i3=1:length(X3)
x3 = X3(i3);
for i4=1:length(X4)
x4 = X4(i4);
for i5=1:length(X5)
x5 = X5(i5);
z = 0.018*x5 + 0.035*x1 - 0.039*x2 - 0.19*x3*x3 + 0.007*x2*x4 - ...
0.002*x4*x5 + 0.816*x3 - 8.015;
zz = 5000*exp(z)/(1+exp(z));
if (zz > maxq)
n=n+1;
Z_X1(n) = x1;
Z_X2(n) = x2;
Z_X3(n) = x3;
Z_X4(n) = x4;
Z_X5(n) = x5;
Index(n) = n;
Z_arr(n) = zz;
end
end
end
end
end
end
[maxValue, index] = max(Z_arr);
scatter(Index, Z_arr, 8, 'b');
xlabel('序号');
ylabel('目标值');
title('各个目标值');
Z_X1(index)
Z_X2(index)
Z_X3(index)
Z_X4(index)
Z_X5(index)
clear;
maxq = 4960;
Z_arr = [];
Z_X1 = [];
Z_X2 = [];
Z_X3 = [];
Z_X4 = [];
Z_X5 = [];
n=0;
Index = [];
left1 = 10;
right1 = 200;
mid1 = 0;
left2 = 10;
right2 = 200;
mid2 = 0;
left4 = 0.3;
right4 = 2.1;
mid4 = 0;
left5 = 250;
right5 = 350;
mid5 = 0;
X3 = 0.5 : 0.1 : 5; % 质量比
for i1=1:20
mid1 = right1 - (right1-left1)/2;
x1 = mid1;
left1 = mid1;
mid2 = left2 + (right2-left2)/2;
x2 = mid2;
right2 = mid2;
mid4 = left4 + (right4-left4)/2;
x4 = mid4;
right4 = mid4;
mid5 = right5 - (right5-left5)/2;
x5 = mid5;
left5 = mid5;
for i3=1:length(X3)
x3 = X3(i3);
z = 0.018*x5 + 0.035*x1 - 0.039*x2 - 0.19*x3*x3 + 0.007*x2*x4 - ...
0.002*x4*x5 + 0.816*x3 - 8.015;
zz = 5000*exp(z)/(1+exp(z));
if (zz > maxq)
n=n+1;
Z_X1(n) = x1;
Z_X2(n) = x2;
Z_X3(n) = x3;
Z_X4(n) = x4;
Z_X5(n) = x5;
Index(n) = n;
Z_arr(n) = zz;
end
end
end
[maxValue, index] = max(Z_arr);
scatter(Index, Z_arr, 8, 'b');
xlabel('序号');
ylabel('目标值');
title('各个目标值');
Z_X1(index)
Z_X2(index)
Z_X3(index)
Z_X4(index)
Z_X5(index)