MATLAB--水塔流量的估计————————————————————————————————作者:————————————————————————————————日期:水塔水流量的估计摘要:数学建模方法是处理科学理论的一种经典方法,也是解决各类实际问题的常用方法。本文采用曲线拟合的方法,并利用数学软件MATLAB对水塔流量进行计算,计算结果与实际记录基本吻合。关键词:建模,流量,拟合,MATLAB1.问题重述美国某州的各用水管理机构要求各社区提供用水率(以每小时多少加仑计,英制单位下,1加仑=4.54596dm3,美制单位下,1加仑=3.78533dm3)以及每天所用的总用水量,但许多社区并没有测量流入或流出当地水塔的水量的设备,而只能以每小时测量水塔的水位代替,其精度在0.5%以内。更为重要的是,无论什么时候,只要水塔中的水位下降到某一最低水位L时,水泵就启动向水塔重新充水直至某一最高水位H,但也无法得到水泵的供水量的测量数据。因此,在水泵正在工作时,不容易建立水塔中水位与水泵工作时用水量之间的关系。水泵每天向水塔充水一次或两次,每次大约2小时。试估计在任何时候,甚至包括水泵正在工作的时间内从水塔流出的流量ft,并估计一天的总用水量。水塔是一个垂直圆柱体,高为40英尺,直径为57英尺。下表给出了某个小镇某一天的真实数据:表1某小镇某天的水塔水位(1m=3.281英尺)时间(秒)水位(英尺)时间(秒)水位(英尺)时间(秒)水位(英尺)031.7535932水泵工作6853528.42331631.1039332水泵工作7185427.67663530.543943535.507502126.971061929.944331834.4579154水泵工作1393729.554663633.5082649水泵工作1792128.924995332.678596834.752124028.505393631.568995333.892522327.875725430.819327033.402854327.526057430.123228426.976455429.272.问题分析数据的单位转换:表2时间(h)水位(m)时间(h)水位(m)时间(h)水位(m)09.67699.98水泵工作19.048.66200.929.478810.93水泵工作19.968.43341.849.308110.9510.819920.848.22012.959.125312.0310.499822.01水泵工作3.878.986412.9510.210322.96水泵工作4.988.814413.889.957323.8810.59135.908.686414.989.619024.9910.32927.018.520015.909.390425.9110.17987.938.387716.839.18018.978.220117.948.9211流量是单位时间流出的水的体积,由于水塔是正圆柱形,横截面积是常数,在水泵不工作的时段,流量很容易从水位对时间的变化率算出,问题是如何估计水泵供水时段的流量。水泵供水时段的流量只能靠供水时段前后的流量拟合得到,作为用于拟合的原始数据,我们希望水泵不工作的时段流量越准确越好。这些流量大体可由两种方法计算:一是直接对表2中的水位用数值微分算出各时段的流量,用它们拟合其它时刻或连续时间的流量。二是先用表中数据拟合水位-时间函数,求导数即可得到连续时间的流量。一般说来数值微分的精度不高,何况测量记录还是不等距的,数值微分的计算尤其麻烦。下面我们用第二种方法处理。有了任何时刻的流量,就不难计算一天的总用水量。其实,水泵不工作时段的用水量可以由测量记录直接得到,如表2可知从t=0到t=8.97(h)水位下降了9.6769-8.2201=1.4568(m),乘以水塔的截面积就是这一时段的用水量。这个数值可以用来检查拟合的结果。3.模型假设供水时段的假设水泵第1次供水时段为t=9到t=11(h),第2次供水时段为t=20.8到t=23(h)。这是根据最低和最高水位分别是8.2201m和10.8199m及表2的水位测量记录作出的假设。其中前3个时刻取自实测数据(精确到0.01h),最后1个时刻来自每次供水约两小时的已知条件(从记录看,第2次供水时段应在有记录的22.96h之后不久结束)。水泵工作时单位时间的供水量基本为常数,这个常数大于单位时间的平均流量。流量是单位时间流出水的体积,这里假设流量是对时间的连续函数,即thh。为简化处理,不影响问题的解决,假设流量与水泵是工作无关。由于水塔截面积是常数S,为简单起见,计算中将流量定义为单位时间流出的水的高度,即水位对时间变化率的绝对值(水位是下降的),最后给出结果时再乘以S即可。即:水位对时间的变化率(流量):任何时刻的流量:Sthtf4.流量估计4.1拟合水位-时间函数从表2测量记录看,一天有两个供水时段(以下称第1供水时段和第2供水时段)和3个水泵不工作时段(以下称第1用水时段t=0到t=8.97,第2用水时段t=10.95到t=20.48和第3用水时段t=23以后)。对第1、2用水时段的测量数据分别作多项式拟合,得到水位函数thh11和thh22。为使拟合曲线比较光滑,多项式次数不要太高,一般用3~6次。由于第3时段只有3个测量记录,无法对这一时段的水位作出比较好的拟合,可采用外推的办法解决。4.2确定流量-时间函数对于第1、2用水时段,只需将水位函数2,1,ithhii求导数即可,对于两个供水时段的流量,则用供水时段前后(水泵不工作时段)的流量拟合得到,并且将拟合得到的第2供水时段流量外推,将第3用水时段流量包含在第2供水时段内,需要拟合四个流量函数。4.3一天的总用水量总用水量等于两个水泵不工作时段和两个供水时段用水量之和,它们都可以由流量对时间的积分得到。dttdhh)(ttttdthSdtVV005.算法设计与计算结果5.1拟合第1、2时段的水位,并得出流量1第1时段的流速设t、h为已输入的时刻和水位测量记录,实现如下:t=[0,0.92,1.84,2.95,3.87,4.98,5.90,7.01,7.93,8.97,10.95,12.03,12.95,13.88,14.98,15.90,16.83,17.94,19.04,19.96,20.84,23.88,24.99,25.91];h=[9.6769,9.4788,9.3081,9.1253,8.9864,8.8144,8.6864,8.5200,8.3877,8.2201,10.8199,10.4998,10.2103,9.9573,9.6190,9.3904,9.1801,8.9211,8.6620,8.4334,8.2201,10.5913,10.3292,10.1798];f1=polyfit(t(1:10),h(1:10),5);%用5次多项式拟合第1用水时段水位thh11,f1输出5次多项式的系数b1=polyder(f1);%b1输出多项式(系数为f1)导数的系数,给出水位变化率tm1=0:0.01:8.97;%将第一用水时段[0,8.97]细分g1=-polyval(b1,tm1);%g1输出多项式b1在tm1点的函数值(取负后边为正值),即tm1时刻的流量(水位下降的速率)。2第2时段的流速实现如下:f2=polyfit(t(11:21),h(11:21),5);%用5次多项式拟合第2用水时段水位水位thh22,f2输出5次多项式的系数b2=polyder(f2);%b2输出多项式(系数为f2)导数的系数,给出水位变化率tm2=10.95:0.01:20.84;%将第二用水时段[10.95,20.84]细分g2=-polyval(b2,tm2);%g2输出多项式(b2)在tm2点的函数值(取负后边为正值),即tm2时刻的流量(水位下降的速率)第1、2用水时段(水位变化率)曲线图:5.2拟合供水时段的流量1在第1供水时段(t=9~11)之前(即第1用水时段)和之后(第2用水时段)各取几点,其流量已经得到,用它们拟合第1供水时段的流量。为使流量函数在t=9和t=11连续,只取4个点,拟合5次多项式(即曲线必过这4个点)。拟合5次多项式,实现如下:q1=-polyval(b1,[7.93,8.97]);%取第1时段在t=7.93,8.97的流量q2=-polyval(b2,[10.95,12.03]);%取第2时段在t=10.95,12.03的流量dx=[7.93,8.97,10.95,12.03];dy=[q1,q2];%将四个点合并d=polyfit(dx,dy,5);%拟合5次多项式ex=8.97:0.01:10.95;%将第一供水时段[8.97,10.95]细分ey=polyval(d,ex);%ey输出第一供水时段各时刻的流量2在第2供水时段之前取t=20,20.8两点的水流量,在该时刻之后(第3用水时段)仅有3个水位记录,我们用差分得到流量,然后用这4个数值拟合第2供水时段的流量。实现如下:dt3=diff(t(22:24));%最后3个时刻的两两之差dh3=diff(h(22:24));%最后3个水位的两两之差dht3=-dh3/dt3;%t(22)和t(23)的流量(差商代替微商)t3=[19.96,20.84,t(22),t(23)];%取第2供水时段前后各两点a=[-polyval(b2,t3(1:2),dht3)];%求得t3各时刻的流量h=polyfit(t3,a,5);%拟合5次多项式mx=20.84:0.01:24.00;%将第2供水时段和第3用水时段细分my=polyval(h,mx);%my输出第2供水时段(外推至t=24)各时刻的流量第1供水时段,第2供水时段和第3用水时段(水位变化率)曲线图:5.3一天的总用水量的估计第1、2用水时段和第1、2供水时段流量的积分之和,就是一天总用水量。虽然诸时段的流量已表示为多项式函数,积分可以解析的算出,这里仍用数值积分计算。(1)第1用水时间段的用水量:其中积分值h1通过梯形公式计算:计算得出0272.3631v(2)第2用水时间段的用水量:计算得出9356.6472v(3)第1供水时间段的用水量:计算得出3987.10612v(4)第2供水和第3用水时段的用水量计算得出7717.1463v11111101010ShdthSdthSdtVvttttttNkkkNkttttththtdtthdtthhkk111111112)()()()(11022222323232ShdthSdthSdtVvttttttNkkkNkttttththtdtthdtthhkk121212222)()()()(1321212121212112121ShdthSdthSdtVvttttttNkkkNkttttththtdtthdtthhkk11211211212122)()()()(12133333434343ShdthSdthSdtVvttttttNkkkNkttttththtdtthdtthhkk031303332)()()()(10(5)一天总用水量1.126431221vvvvv一天总用水量的曲线图如下:6流量及总用水量的检验6.1用水时段流量的检验方法:计算出的各时刻的流量可用水位记录的数据来检验。用水量V1用第1用水时段水位测量记录中下降高度H1=9.6769-8.2201=1.4568m来计算并检验,在第一用水时段水的实际用量为:V1=S*H1类似地,第二用水时段用去的水的高度H2=10.8199-8.2201=2.