MATLAB水塔流量的估计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
水塔水流量的估计
摘要:数学建模方法是处理科学理论的一种经典方法,也是解决各类实际问题的常用方法。本文采用曲线拟合的方法,并利用数学软件MATLAB对水塔流量进行计算,计算结果与实际记录基本吻合。
关键词:建模,流量,拟合,MATLAB
1.问题重述
美国某州的各用水管理机构要求各社区提供用水率(以每小时多少加仑计,英制单位下,1加仑=,美制单位下,1加仑=)以及每天所用的总用水量,但许多社区并没有测量流入或流出当地水塔的水量的设备,而只能以每小时测量水塔的水位代替,其精度在%以内。更为重要的是,无论什么时候,只要水塔中的水位下降到某一最低水位L时,水泵就启动向水塔重新充水直至某一最高水位H,但也无法得到水泵的供水量的测量数据。因此,在水泵正在工作时,不容易建立水塔中水位与水泵工作时用水量之间的关系。水泵每天向水塔充水一次或两次,每次大约2小时。试估计在任何时候,甚至包括水泵正在工作的时间内从水塔流出的流量()
f t,并估计一天的总用水量。水塔是一个垂直圆柱体,高为40英尺,直径为57英尺。
下表给出了某个小镇某一天的真实数据:
表1
2.问题分析
数据的单位转换:
流量是单位时间流出的水的体积,由于水塔是正圆柱形,横截面积是常数,在水泵不工作的时段,流量很容易从水位对时间的变化率算出,问题是如何估计水泵供水时段的流量。水泵供水时段的流量只能靠供水时段前后的流量拟合得到,作为用于拟合的原始数据,我们希望水泵不工作的时段流量越准确越好。这些流量大体可由两种方法计算: 一是直接对表2中的水位用数值微分算出各时段的流量,用它们拟合其它时刻或连续时间的流量。二是先用表中数据拟合水位-时间函数,求导数即可得到连续时间的流量。
一般说来数值微分的精度不高,何况测量记录还是不等距的,数值微分的计算尤其麻烦。下面我们用第二种方法处理。
有了任何时刻的流量,就不难计算一天的总用水量。其实,水泵不工作时段的用水量可以由测量记录直接得到,如表2可知从t=0到t=(h)水位下降了(m),乘以水塔的截面积就是这一时段的用水量。这个数值可以用来检查拟合的结果。
3.模型假设
供水时段的假设
水泵第1次供水时段为t=9到t=11(h),第2次供水时段为t=到t=23(h)。这是根据最低和最高水位分别是和及表2的水位测量记录作出的假设。其中前3个时刻取自实测数据(精确到),最后1个时刻来自每次供水约两小时的已知条件(从记录看,第2次供水时段应在有记录的之后不久结束)。水泵工作时单位时间的供水量基本为常数,这个常数大于单位时间的平均流量。流量是单位时间流出水的体积,这里假设
流量是对时间的连续函数,即()t h h =。为简化处理,不影响问题的解决,假设流量与水泵是工作无关。
由于水塔截面积是常数S ,为简单起见,计算中将流量定义为单位时间流出的水的高度,即水位对时间变化率的绝对值(水位是下降的),最后给出结果时再乘以S 即可。即:
水位对时间的变化率(流量): 任何时刻的流量: ()()S t h t f ⋅'=
4.流量估计
拟合水位-时间函数
从表2 测量记录看,一天有两个供水时段(以下称第1供水时段和第2供水时段)和3个水泵不工作时段(以下称第1用水时段t=0到t=,第2用水时段t=到t=和第3用水时段t=23以后)。对第1、2用水时段的测量数据分别作多项式拟合,得到水位函数()t h h 11=和()t h h 22=。为使拟合曲线比较光滑,多项式次数不要太高,一般用3~6次。由于第3时段只有3个测量记录,无法对这一时段的水位作出比较好的拟合,可采用外推的办法解决。 确定流量-时间函数
对于第1、2用水时段,只需将水位函数()2,1,==i t h h i i 求导数即可,对于两个供水时段的流量,则用供水时段前后(水泵不工作时段)的流量拟合得到,并且将拟合得到的第2供水时段流量外推,将第3用水时段流量包含在第2供水时段内,需要拟合四个流量函数。 一天的总用水量
总用水量等于两个水泵不工作时段和两个供水时段用水量之和,它们都可以由流量对时间的积分得到。
5.算法设计与计算结果
dt
t dh h )
(=
'⎰⎰'-='=t
t t t dt
h S dt V V 0
拟合第1、2时段的水位,并得出流量 1第1时段的流速
设t 、h 为已输入的时刻和水位测量记录,实现如下: t=[0,,,,,,,,,,,,,,,,,,,,,,,]; h=[ ,,,,,,,,,,,,,,,,,,,,,,,];
f1=polyfit(t(1:10),h(1:10),5); %用5次多项式拟合第1用水时段水位()t h h 11=,f1输出5次多项式的系数
b1=polyder(f1); % b1输出多项式(系数为f1)导数的系数,给出水位变化率 tm1=0::; %将第一用水时段[0 , ]细分
g1=-polyval(b1,tm1); %g1输出多项式b1在tm1点的函数值(取负后边为正值),即tm1时刻的流量(水位下降的速率)。 2第2时段的流速 实现如下:
f2=polyfit(t(11:21),h(11:21),5); %用5次多项式拟合第2用水时段水位水位()t h h 22=,f2输出5次多项式的系数
b2=polyder(f2); %b2输出多项式(系数为f2)导数的系数,给出水位变化率 tm2=::; %将第二用水时段[ , ]细分
g2=-polyval(b2,tm2); %g2输出多项式(b2)在tm2点的函数值(取负后边为正值),即tm2时刻的流量(水位下降的速率)
第1、2用水时段(水位变化率)曲线图:
拟合供水时段的流量
1
在第1供水时段(t = 9~11)之前(即第1用水时段)和之后(第2用水时段)各取几点,其流量已经得到,用它们拟合第1供水时段的流量。为使流量函数在t =9 和t =11连续,只取4个点,拟合5次多项式(即曲线必过这4个点)。拟合5次多项式,实现如下:
q1=-polyval(b1,[,]); %取第1时段在t=,的流量
q2=-polyval(b2,[,]); %取第2时段在t=,的流量
dx=[,,,];
dy=[q1,q2]; %将四个点合并
d=polyfit(dx,dy,5) ; %拟合5次多项式
ex=::; %将第一供水时段[,]细分
ey=polyval(d,ex); %ey输出第一供水时段各时刻的流量
2