2010年国赛高教杯数学建模
A题 储油罐的变位识别与罐容表标定
通常加油站都有若干个储存燃油的地下储油罐,并且一般都有与之配套的"油位计量管理系统",采用流量计和油位计来测量进/出油量与罐内油位高度等数据,通过预先标定的罐容表(即罐内油位高度与储油量的对应关系)进行实时计算,以得到罐内油位高度和储油量的变化情况。
许多储油罐在使用一段时间后,由于地基变形等原因,使罐体的位置会发生纵向倾斜和横向偏转等变化(以下称为变位),从而导致罐容表发生改变。按照有关规定,需要定期对罐容表进行重新标定。图1是一种典型的储油罐尺寸及形状示意图,其主体为圆柱体,两端为球冠体。图2是其罐体纵向倾斜变位的示意图,图3是罐体横向偏转变位的截面示意图。
请你们用数学建模方法研究解决储油罐的变位识别与罐容表标定的问题。
(1)为了掌握罐体变位后对罐容表的影响,利用如图4的小椭圆型储油罐(两端平头的椭圆柱体),分别对罐体无变位和倾斜角为=4.10的纵向变位两种情况做了实验,实验数据如附件1所示。请建立数学模型研究罐体变位后对罐容表的影响,并给出罐体变位后油位高度间隔为1cm的罐容表标定值。
(2)对于图1所示的实际储油罐,试建立罐体变位后标定罐容表的数学模型,即罐内储油量与油位高度及变位参数(纵向倾斜角度和横向偏转角度 )之间的一般关系。请利用罐体变位后在进/出油过程中的实际检测数据(附件2),根据你们所建立的数学模型确定变位参数,并给出罐体变位后油位高度间隔为10cm的罐容表标定值。进一步利用附件2中的实际检测数据来分析检验你们模型的正确性与方法的可靠性。
附件1:小椭圆储油罐的实验数据
附件2:实际储油罐的检测数据
整体求解过程概述(摘要)
本文通过对储油罐中油位高度及变位参数之间的不同情形的储油量进行分析并建立相应的数学模型,在该过程中先利用投影法、截面法及微元法得出储油量与油位高度及变位参数的函数关系。再由Matlab编程可知各高度储油量的理论数据,最后分析误差及评价模型的合理性。
对于问题一的任一种情形,我们均建立笛卡尔坐标系,当储油罐无变位时,利用微元法得到体积关于 的公式,当储油罐发生变位时,根据储油罐中油量的多少分成三种情形,就每一类利用微元法得到体积关于 的公式。代人附件1实验数据中的高度得到储油罐中的理论油量 。根据理论油量及实际油量得出误差,判断误差所服从的分布,再利用相对误差进行误差分析并评价模型的合理性。由上述得到储油罐发生变位时体积关于 的公式我们给出了罐体变位后油位高度间隔为1cm的罐容表标定值(即进/出油量与罐内油位高度的表格)。
对于问题二中的储油罐,我们先将问题进行简化考虑,得出了储油罐水平卧放时油量与浮油子高度的函数关系;再考虑储油量与油位高度及变位参数(纵向倾斜角度 和横向偏转角度 )的一般情况,在该过程中,我们进行近似处理,利用投影法和截面法得出了储油量关于油位高度及变位参数的函数关系;并在固定的横向偏转角度 条件下,就纵向倾斜角度 的变化进行分成三类讨论,这三类又可以分成八种情形,得到了每一种情形下实际储油罐罐内储油量与油位高度的函数关系。
在模型的改进中,我们就问题二储油量与油位高度及变位参数的一般情况进行了仔细的考虑,将含油部分的体积分成四个部分,每一个部分将上述所提到的积分方法相结合,得到了各个部分的储油量与油位高度及变位参数的函数关系,从而可得总储油量与油位高度及变位参数的函数关系;并据此利用Matlab编程和实际测量的数据求得 和 值;与此同时我们可以得出在固定 、 值时各高度下的理论储油量;根据理论油量及实际油量得出误差,判断误差所服从的分布再利用相对误差进行误差分析并评价模型的合理性。由上述得到储油罐发生变位时体积关于 的公式我们给出了罐体变位后油位高度间隔为10cm的罐容表标定值。
模型假设:
(1)在储油罐倾斜的情况下,忽略油浮子高度为0时油所占的体积;
(2)在储油罐倾斜的情况下,假设当油浮子高度达到最大后不再进油;
(3)油的挥发速度很慢,忽略因油的挥发而造成储油量的减少;
(4)储油罐的材料为钢体,忽略因渗出油而造成储油量的减少;
(5)储油罐管理妥当,不会因特殊情况而造成储油量的变化。
问题分析:
问题一的分析
当储油罐无变位时,储油罐圆柱体的接地一端为原点,以圆柱体高方向为 轴,建立笛卡尔坐标系,利用微元法得到体积关于 的公式,代人附件1实验数据中的高度得到储油罐中的理论油量 。利用附件1实验数据中得到储油罐中的实际油量,根据理论油量及实际油量就可以得出误差,判断误差所服从的分布,利用相对误差进行误差分析。
当储油罐发生变位时,以储油罐圆柱体的接地一端为原点,圆柱体高方向为 轴,建立笛卡尔坐标系。根据储油罐中油量的多少分成三类,然后就每一类利用微元法得到体积关于 的公式,代人附件1实验数据中的高度得到储油罐中的理论油量 。利用附件1实验数据中得到储油罐中的实际油量,根据理论油量及实际油量就可以得出误差,判断误差所服从的分布,利用相对误差进行误差分析。
由上述得到储油罐发生变位时体积关于 的公式可以给出罐体变位后油位高度间隔为1cm的罐容表标定值(即进/出油量与罐内油位高度的表格)。
问题二的分析
对于实际储油罐,我们首先将问题进行简化考虑,得出了当实际储油罐水平卧放时实际储油罐中油量与浮油子高度的函数关系;
然后我们先考虑实际储油罐罐内储油量与油位高度及变位参数(纵向倾斜角度 和横向偏转角度 )的一般情况,在该过程中,我们进行近似处理,利用投影法和截面法得出了储油量关于油位高度及变位参数的函数关系,再在固定的横向偏转角度 条件下,就纵向倾斜角度 的变化进行分类讨论,一共有三种情形,得到了每一种情形下实际储油罐罐内储油量与油位高度的函数关系。
最后我们先利用附件2中的少量实际数据得出了附件2所处状态下的纵向倾斜角度 和横向偏转角度 ,再利用附件2中给定各高度进行代人,得到实际储油罐理论的储油量,与实际储油量进行比较,求出误差及相对误差。
由上述得到储油罐发生变位时体积关于 的公式可以给出罐体变位后油位高度间隔为10cm的罐容表标定值(即进/出油量与罐内油位高度的表格)。
模型的建立与求解整体论文缩略图
全部论文请见下方" 只会建模 QQ名片" 点击QQ名片即可
部分程序代码:
bash
load jinyou1.txt
load chuyou1.txt
g1=jinyou1(:,2)*10^(-2);
g2=chuyou1(:,2)*10^(-2);
syms a b h l
a=0.89*10;b=0.6*10;l=2.45*10;
V=(a*l/b).*((h-b).*((2.*h.*b-h.^2).^0.5)+b.^2.*asin((h-b)./b)+0.5.*b.^2*pi);
V1=subs(V,h,g1)
V2=subs(V,h,g2)
h1=jinyou1(:,1)+262;
h2=3706.91+262-chuyou1(:,1);
c1=V1-h1
c2=V2-h2
x1=abs(V1-h1)./V1
x2=abs(V2-h2)./V2
plot(g1,V1,'.r',g1,h1,'.c')
xlabel('进油后储油量');
ylabel('罐内油位高度');
title('罐内油位高度随进油后储油量的变化情况')
legend('储油理论量','储油实际量')
grid on
figure(2)
plot(g2,V2,'.r',g2,h2,'.c')
xlabel('出油后储油量');
ylabel('罐内油位高度');
title('罐内油位高度随出油后储油量的变化情况')
legend('储油理论量','储油实际量')
grid on
figure(3)
subplot(2,1,1)
plot(g1,c1,'.b')
xlabel('罐内油位高度');
ylabel('进油后储油量的误差');
title('进油后储油量的误差随罐内油位高度的变化情况')
grid on
subplot(2,1,2)
plot(g2,c2,'.b')
xlabel('罐内油位高度');
ylabel('出油后储油量的误差');
title('出油后储油量的误差随罐内油位高度的变化情况')
grid on
bash
load jinyou2.txt
load chuyou2.txt
g1=jinyou2(:,2)*10^(-2);
g2=chuyou2(:,2)*10^(-2);
syms a b h m a1
a=0.89*10;
b=0.6*10;
a1=0.4*10;
L=2.45*10;
m=4.1*pi/180;
k=(a1*tan(m)/b)-1;
p=(h+a1*tan(m)-b)/b;
q=(h+a1*tan(m)-b-L*tan(m))/b;
V=-((-1/3)*(1-q.^2).^(3/2)+(1-q.^2).^(1/2)+q.*asin(q)+1/3.*(1-p.^2).^(3/2)-(1-p.^2).^(1/2)-p.*asin(p)+pi*(q-p)*0.5).*a*b^2./tan(m)
V1=subs(V,h,g1)
V2=subs(V,h,g2)
h1=jinyou2(:,1)+215;
h2=3299.74+215-chuyou2(:,1);
c1=V1-h1
c2=V2-h2
x1=abs(V1-h1)./V1
x2=abs(V2-h2)./V2
plot(g1,V1,'.r',g1,h1,'.c')
xlabel('倾斜时进油后储油量');
ylabel('罐内油位高度');
title('倾斜时罐内油位高度随进油后储油量的变化情况')
legend('储油理论量','储油实际量')
grid on
figure(2)
plot(g2,V2,'.r',g2,h2,'.c')
xlabel('倾斜时出油后储油量');
ylabel('罐内油位高度');
title('倾斜时罐内油位高度随出油后储油量的变化情况')
legend('储油理论量','储油实际量')
grid on
figure(3)
subplot(2,1,1)
plot(g1,c1,'.b')
xlabel('罐内油位高度');
ylabel('倾斜时进油后储油量的误差');
title('倾斜时进油后储油量的误差随罐内油位高度的变化情况')
grid on
subplot(2,1,2)
plot(g2,c2,'.b')
xlabel('罐内油位高度');
ylabel('倾斜时出油后储油量的误差');
title('倾斜时出油后储油量的误差随罐内油位高度的变化情况')
grid on