求解一道MATLAB的问题,希望有详细的过程和步骤的文字说明已知甲苯胺的饱和蒸汽压计算公式为lgp=23.8296-5.081*lgT其中,p为压力,kPa;T为温度,K.试求甲苯胺的常压沸点.(Matlab以10为底对数函数为log10,用二分法求解,沸点区间[300K,500K],要求误差小于0.05)

问题描述:

求解一道MATLAB的问题,希望有详细的过程和步骤的文字说明
已知甲苯胺的饱和蒸汽压计算公式为
lgp=23.8296-5.081*lgT
其中,p为压力,kPa;T为温度,K.试求甲苯胺的常压沸点.
(Matlab以10为底对数函数为log10,用二分法求解,沸点区间[300K,500K],要求误差小于0.05)

!题目给出的公式是错的!少了一项.
题目要求为:在某温度T(即常压沸点)时,P为101.325kPa,要求T精确到0.05.二分法:T的第一次取值为(T1+T2)/2,即(300+500)/2,判断计算所得P是大于101.325kPa(此时需要将T2更新为400K,T1仍为300K),反之若P小于设定值则将T1更新为新值.
以下为程序:
P0 = 101.325;
T1 = 300;
T2 = 500;
while abs(T2-T1)>0.05
T = (T1+T2)/2
P = 10^(23.8296-3480.3/T-5.081*log10(T));
if P>P0
T2 = T; % update new upper limit
else
T1 = T; % update new lower limit
end
end
历次T输出结果为
T =
400
T =
450
T =
425
T =
412.5000
T =
406.2500
T =
403.1250
T =
404.6875
T =
405.4688
T =
405.8594
T =
406.0547
T =
406.1523
T =
406.1035