大学力学论坛

 找回密码
 注册
查看: 5244|回复: 3

水塔问题建模解答

[复制链接]
发表于 2008-12-3 18:49:05 | 显示全部楼层 |阅读模式
2.4估计水塔的水流量
1)
1)     问题的提出

美国某州的各用水管理机构要求各社区提供以每小时多少加仑计的用水率以及每天所用的总用水量.但许多社区并没有测量流入或流出当地水塔的水量的设备,他们只能代之以每小时测量水塔中的水位,其精度在0.5%以内.更为重要的是,无论什么时候,只要水塔中的水位下降到某一最低水位L时,水泵就启动向水塔重新充水直到某一最高水位H,但也无法得到水泵的供水量的测量数据.因此,在水泵正在工作时,人们不容易建立水塔中水位与水泵工作时的用水量之间的关系.水泵每天向水塔充水一次或两次,每次大约二小时.试估计在任何时候,甚至包括水泵正在工作的时间内,水从水塔流出的流量 ,并估计一天的总用水量.表1给出了某个小镇某一天的真实数据.(本题为美国大学生数学建模竞赛(MCM)1991年问题A)

表1.某小镇某天的水塔水位
时间(秒)
水位(0.01英尺)
时间(秒)
水位(0.01英尺)
时间(秒)
水位(0.01英尺)
0
3175
35932
水泵工作
68535
2842
3316
3110
39332
水泵工作
71854
2767
6635
3054
39435
3550
75021
2697
10619
2994
43318
3445
79154
水泵工作
13937
2947
46636
3350
82649
水泵工作
17921
2892
49953
3260
85968
3475
21240
2850
53936
3167
89953
3397
25223
2797
57254
3087
93270
3340
28543
2752
60574
3012


32284
2697
64554
2927



表1给出了从第一次测量开始的以秒为单位的时刻,以及该时刻的高度单位为百分之一英尺的水塔中水位的测量值,例如3316秒后,水塔中的水位达到31.10英尺.水塔是一个垂直圆形柱体,高为40英尺,直径为57英尺.通常当水塔的水位降到约27.00英尺时,水泵就向水塔重新充水,而当水塔的水位升到约35.50英尺时水泵停止工作。
2)
2  模型假设

为建模的需要,给出如下假设:
(1)影响水从水塔中流出的流量的唯一因素是公众对水的传统要求.因为表1给出的数据没有提及任何其他的影响因素,我们假定所给数据反映了有代表性的一天,而不包括任何特殊情况,如自然灾害、火灾、水塔溢水、水塔漏水等对水的特殊要求.
(2)水塔中的水位不影响水流量的大小,气候条件、温度变化等也不影响水流量.因为物理学的Torricelli定律指出:水塔的最大水流量与水位高度的平方根成正比,由表中数据有 ,说明最高水位和最底水位的两个流量几乎相等.

(3)
水泵工作起止时间由它的水位决定,每次充水时间大约为两个小时.水泵工作性能效率总是一定的,没有工作时需维修、使用次数多影响使用效率问题,水泵充水量远大于水塔水流量.
(4)表中的时间数据准确在一秒以内
(5)水塔的水流量与水泵状态独立,并不因水泵工作而增加或减少水流量的大小.
(6)水塔的水流量曲线可以用一条光滑的曲线来逼近.这时,水流量曲线的两阶导数是连续的.
3)符号约定及说明
h :水塔中水位的高度,是时间的函数,单位为英尺
V :水塔中水的体积,是时间的函数,单位为加仑
t :时间,单位为小时
f :水塔水流量,是时间的函数,单位为加仑/小时
p :水泵工作时充水的水流量,是时间的函数,单位为加仑/小时
4)问题分析与建模
给出的问题需要通过给定的一组数据来解决,可以想到应通过对所给的数据进行插值或拟合来建模.本题可以分成三个步骤:
(1)
(1)   由所给数据得到在各数据点处的水流量。(数值转换)
(2)
(2)   找出一个水从水塔流出的水流量的光滑拟合逼近
(3)
(3)   处理水泵工作时的充水水量以及一天该小镇公众的总用水量,同时也重建了水泵工作时所缺的数据.
1所给数据的处理
把表1所给的数据作为时间的函数画成散点图1.



图1.时间与水位的关系图

从图1可以看出,要想获得一个好的水流量的光滑拟合,首先要解决如何描述水塔充水期间的水流量的行为,特别是水泵的起止工作时间问题。为此,我们先分析一下水泵充水期间的观察数据,要解决两个问题:一是两次充水准确的起始时间和停止时间,如果无法得到准确时间的话,以哪一时刻作为起止时间比较合理;二是充水期间的水流量如何描述.从所给的数据自然无法知道水泵开始和停止的准确时间,考虑两次充水期间的数据情况。

第一次充水期间的数据有:
32284(秒)
26.97(英尺)

35932(
秒)
水泵工作

39332(
秒)
水泵工作

39435(
秒)
35.50(英尺)
因为在39435秒时水位为35.50英尺,它是水位停止工作的水位,因此可以考虑39435为水泵停止工作的时间,为找出水泵开始工作的时间,注意到在32284秒时水位为26.97英尺 ,接近27.00英尺,而时间差39435-32284=71519(秒)»1.99小时,由水泵每次充水要大约2小时可知,可以考虑在32284秒为水泵开始工作的时间.
对第二次充水期间的数据.有数据为:
75021(秒)
26.97(英尺)

79154(
秒)
水泵工作

82649(
秒)
水泵工作

85968(
秒)
34.75(英尺)

因为在75021秒时的水位26.97英尺,接近27.00英尺,可以假设75021秒后水泵开始工作的时间.但如果说在85968秒时水位34.75英尺也接近水泵停止工作的35.50英尺,并选择85968秒是水位停止工作的时间就有些勉强,考察对应的时间差有:
85968-75021=10947(秒)»3.04小时
这个时间差不符和水泵每次充水要大约2小时的假定,因此选择85968秒是水位停止工作的时间不合适。如果选择其前面的时间会怎样呢?考察时间差有;
82649-75021=7628(秒)»2.12小时
这个时间差符和水泵每次充水要大约2小时的假定.由此可以选择82649秒为水泵第二次充水停止时间,并且此时水位可以取为35.50英尺.这样我们不仅确定了水泵的起止工作时间,而且还额外获得一个新增数据,即第二次充水期间的数据变为:
75021(秒)
26.97(英尺)

79154(
秒)
水泵工作

82649(
秒)
35.50英尺

85968(
秒)
34.75(英尺)

2水流量曲线的拟合
表1给出的是水位与时间的关系,而题目要求我们求出的是水流量与时间的关系。利用水塔是高为40英尺,直径为57英尺的垂直圆形柱体,和体积单位的换算关系:1立方英尺=7.48133加仑,我们可以先将表1的数据转化为水塔中水的体积与时间的关系,然后再转化为水流量与时间的关系.表2是转换后水的体积与时间的数据、图2是对应的散点图。






表2.时间与体积的关系


时间t
(小时)
体积V
(加仑)

时间t
(小时)
体积V
(加仑)

时间t
(小时)
体积V
(加仑)
0
606125
9.9811
working
19.0375
542554
0.9211
593717
10.9256
working
19.9594
528236
1.8431
583026
10.9542
677715
20.8392
514872
2.9497
571571
12.0328
657670
22.015
working
3.8714
562599
12.9544
639534
22.9581
677715
4.9781
552099
13.8758
622352
23.8800
663397
5.9000
544081
14.9822
604598
24.9869
648506
7.0064
533963
15.9039
589325
25.9083
637625
7.9286
525372
16.8261
575008


8.9678
514872
17.9317
558781




图2.时间与体积的关系图
因为流量与体积有关系 ,如果采用插值方法来获得流量函数的近似函数f(t),有如下两种方法可以做到:
1.
1  由数据点集(tk,Vk)获得流量函数的数据点集(tk,f(xk)),然后再利用插值方法可以直接求出流量函数的近似函数f(t)
2.
2  由数据点集(tk,Vk)先获得水体积的近似函数V(t),然后对V(t)求导得到

下面采用第一种方法来求出流量函数的近似函数f(t).为获得获得流量函数的数据点集(tk,f(xk)),这里采用差商的方法。注意到所给数据被水泵充水两次分割成三组,如果去掉水泵工作时间的不确定数据,还有25个数据点,假设这些数据点对应的时间分别为:t0,t1,…,t24。那么这三组对应的数据分别为:

第一组:t0,t1,…,t9

第二组:t10,t1,…,t20

第三组:t21,t22,t23,t24
为减少计算误差,对每一组数据,分别采用不同的公式来计算每一组数据点的水流量,具体为:
1)对处于中间的数据,采用中心差商公式

(1)

2)对每组前两个数据点,采用向前差商公式来计算



(2)
3)对于每组最后二个数据,采用向后差商公式计算:

(3)

计算结果见表3和图3

表3.时间与流量的关系

时间
(小时)

流量
(加仑/小时)

时间
(小时)

流量
(加仑/小时)

时间
(小时)

流量
(加仑/小时)
0
14405
9.9811
working
19.0375
16653
0.9211
11180
10.9256
working
19.9594
14496
1.8431
10063
10.9542
19469
20.8392
14648
2.9497
11012
12.0328
20196
22.015
working
3.8714
8797
12.9544
18941
22.9581
15225
4.9781
9992
13.8758
15903
23.8800
15264
5.9000
8124
14.9822
18055
24.9869
13708
7.0064
10160
15.9039
15646
25.9083
9633
7.9286
8488
16.8261
13741


8.9678
11018
17.9317
14962

















图3.时间与流量的关系


因为三次样条插值具有很好的逼近特性,这里采用三次样条插值来得到水流量的近似函数f(t)。为给出样条插值函数所需的边界条件,我们用如上向前和向后的差商公式(2)和(3)得出两个边界条件

用数学软件编程可以得到水流量的估计函数模型f(t)。它的函数图形见图4.






图4.水流流量拟合曲线

3.水泵充水期间的水流量处理

由于水泵充水期间的水流量单用已知的数据是无法得出的,这里用两次充水期间的平均水流量来处理此事。
第一次充水期间

充满水的水体积DV1=677715-514872=162843(加仑)

充水时间Dt1=10.9542-8.9678=1.9864(小时)
则第一次充水期间的水泵平均水流量为
(加仑/小时)
第二次充水期间

充满水的水体积DV2=677715-514872=162843(加仑)

充水时间Dt2=22.9581-20.8392=2.1189(小时)
则第二次充水期间的水泵平均水流量为
(加仑/小时)
采用两次充水期间的平均水流量作为水泵充水期间的水流量可以尽量减少误差,这样水泵充水期间的水流量为

(加仑/小时)

5) 模型求解

1.
估计该镇一天的总用水量

用水流量插值曲线f(t)在24小时的时间区间上积分即可以求出该镇在一天的总用水量。考虑到插值函数受端点边界条件的影响,我们用在[0.9211,24.9211]时间区间积分作为该镇在一天的总用水量,有

(加仑)
因此,可以得到该镇在一天的总用水量约为334088加仑。
下面从两个方面来检验所得该镇在一天的总用水量的计算结果。
检验1. 用所得水流量函数检验

利用所给数据的时间在[0,25.9083]的特点,在其上任取24小时的时间段做积分,有


(加仑)
(加仑)

它们相差约1%。
检验2:利用给定的数据检验

我们把非充水期间的用水量用已知数据尽量算出,其余部分用数值积分计算。取[0,24]时间区间,有:

第一次充水前用水量为:

v1=606125-514872=91253(
加仑)
第一次充水后,第二次充水前用水量为:

v2=677715-514872=162843(
加仑)

第一次充水期间用水量为:
(加仑)

第二次充水期间用水量为:
(加仑)
在[22.9581,23.88]
期间用水量

v3=677715-663397=14318(加仑)
在[23.88,24]
期间用水量

(加仑)
于是,得到一天的总用水量为
v1+v2+v3+31027+31906+1829=333176
与 相差约0.3%。这个结果说明插值曲线f(t)是相当精确的
6) 误差分析

下面估计所得模型算出一天总用水量的误差。因为水位观测值的误差在0.5%以内,由圆柱体积公式V=pr2h可以知道,对应水体积的误差也在0.5%以内,根据转换水体积的数值,有水体积误差约在2574~3389加仑之间,这与一天的用水量相比是微不足道的。为分析一天总用水量的误差,由于直接从构造公式中计算误差不方便,下面采用直接由所得水体积数表来分析误差。记Vp1,Vp2为两次充水期间的用水量, Vt 表示t时刻的水体积,则一天用水总量可以如下计算:
V=V0 - V8.9678+ Vp1+ V10.9542 - V20.8392+
Vp2 + V22.9581 - V23.88+ V[23.88 , 24]
(4)

其中V[23.88 , 24]是时间区间[23.88,24]的用水量。
因为(4)式中V0
、 V8.9678 、 V10.9542
、V20.8392
、 V22.9581
、 V23.88 的误差为0.5%,我们只需估计Vp1 、 Vp2
、 V[23.88 , 24]的误差。由于直接用样条函数来估计Vp1 、 Vp2
、 V[23.88 , 24]的误差不方便,我们利用样条函数的误差总是相近的特点,采用从实际中分析误差的界限。做法为:随机取出测量水位的时间区间用水量的误差,以其平均值作为Vp1 、 Vp2
、 V[23.88 , 24]的误差。这里取如下6个时间段

[0.9211,1.8431], [3.8714,4.9781], [7.9286,8.9678],
[10.9542,12.0328],[15.9039,16.8261],[19.0375,19.9594]
由表2,分别得用水量为
10690,10500,10500,20045,14317,14318(加仑)
而用样条模型f(t)的积分算出的对应用水量分别为
9574,10391,9663,21622,14470,14397(加仑)
对应误差分别约为
11.7%, 1.0%, 8.7%, 7.3%, 1.1%,0.5%
其平均值约为5.1%,由此可以算得一天总用水量的标准偏差:


由当V= V0
、 V8.9678 、 V10.9542
、V20.8392
、 V22.9581
、 V23.88 时Sv=0.5%V及当V=Vp1 、 Vp2
、 V[23.88 , 24]时Sv=5.1%V可以算出一天总用水量的误差为

Sv=7846(加仑)
大约为一天用水量的2.4%(= Sv/V)
7) 模型的优缺点
优点:
1.模型可以用于有一个标准水箱的小镇使用,容易推广;
2.模型用到的知识简单易懂,模型容易完成;
3.模型不仅提供了水流量及一天用水量的较为准确的估计,还可以估计任何时刻的水流量,包括水泵工作时的水流量.
缺点:
无法准确估计结果的误差
附:用三次样条插值获得流量函数f(t)的参考程序:
mar=1;
f1=-4645.53;
f2=-5789.56;
xi={0,0.921111,1.84306,2.94972,3.87139,4.97806,5.9,7.00639,7.92861,8.96778,
10.9542,12.0328,12.9544,13.8758,14.9822, 15.9039,16.8261,17.9317,19.0375,19.9594,


20.8392,22.9581,23.88,24.9869,25.9083};

yi={14405,11180,10063,11012,8797,9992,8124,10160,8488,11018,19469, 20196,18941,

15903,18055,15646,13741,14962,16653,14496,14648,15225,15264,13708,9633};

n=Length[xi]-1;
h=Table[xi[[i+1]]-xi[],{i,1,n}];
mu=Table[h[]/(h[]+h[[i+1]]),{i,1,n-1}];
lam=1-mu;
d=Table[ 6((yi[[i+1]]-yi[])/h[]-(yi[]-yi[[i-1]])/h[[i-1]])/(h[[i-1]]+h[]), {i,2,n}];
If[mar==2, d=Prepend[d,2f1]; d=Append[d,2f2];
mu=Append[Prepend[mu,0],0]; lam=Append[Prepend[lam,0],0],

d=Prepend[d,6*((yi[[2]]-yi[[1]])/h[[1]]-f1)/h[[1]]];

d=Append[d,6*(f2-(yi[[n+1]]-yi[[n]])/h[[n]])];
mu=Append[Prepend[mu,0],1];
lam=Append[Prepend[lam,1],0]]
c=lam;
b=Table[2,{n+1}];
a=mu;
n=n+1;
eps1=0.0000001;
Do[ a[[k]]=a[[k]]/b[[k-1]]; b[[k]]=b[[k]]-a[[k]]*c[[k-1]]; d[[k]]=d[[k]]-a[[k]]*d[[k-1]],

{k,2,n}];

x=Table[0,{n}];
x[[n]]=d[[n]]/b[[n]];
Do[x[[k]]=(d[[k]]-c[[k]]*x[[k+1]])/b[[k]], {k,n-1,1,-1}];
Print["Mk的值为
" , x//N];

Clear[x1,x2,y1,y2,m1,m2,h1,t,sk]
sk[x1_,x2_,y1_,y2_,m1_,m2_,h1_,t_]:=m1*(x2-t)^3/(6*h1)+m2*(t-x1)^3/(6*h1)+(y1-m1*h1^2/6)*(x2-t)/h1+(y2-m2*h1^2/6)*(t-x1)/h1;
sp1=Table[sk[xi[],xi[[i+1]],yi[],yi[[i+1]],x[],x[[i+1]],h[],t], {i,1,n-1}];
Print["所求样条函数S(t)为"]
Do[Print["S(t)=",sp1[]];
Print["
",xi[],"<=t<",xi[[i+1]]],{i,1,n-1}]

其中
xi:存放插值基点{ x0, x1, ... , xn }
yi: 存放对应函数值{ y0 , y1,… , yn}
h: 存放小区间长度hk
mu: 存放数值mk
lam 存放数值lk
d: 存放数值dk
x:存放求出的Mk值{M0 , M1, ... ,Mn }
sp1:
存放求出的三次样条插值函数s(x),它是一个向量函数,它的第k个分量sp1[[k]]是样条插值在第k个区间上的函数
sk[x1,x2,y1,y2,m1,m2,h1,t]:在区间[x1,x2]上的三次样条插值函数s(t)

水塔问题建模解答.rar

32.66 KB, 下载次数: 140

发表于 2009-6-6 22:22:43 | 显示全部楼层
学习啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|Archiver|手机版|小黑屋|大学力学论坛|基础力学教研学论坛 ( 苏ICP备09076535号 )

GMT+8, 2018-8-14 22:11 , Processed in 0.157977 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表