当前位置:文档之家› 插值与拟合

插值与拟合


16
图12.5 第一供水段时间—流速示意图
17
图12.6 第2未供水段时间—流速示意图
18
图12.7 混合时段时间—流速示意图
19
图12.8是用分段线性及三次样条插值方法得到的整个 过程的时间—流速函数示意图。
20
表12-4 各时段及一天的总用水量(用水高度)
第1 未供水段 拉格朗日 插值法 分段线性 插值法 三次样条 插值法 145.6231 147.1430 145.6870 第2 未供水段 258.8664 258.9697 258.6547 第3 供水段 54.0689 49.6051 53.3334 混合时段 92.1337 76.4688 81.7699 全天 550.6921 532.1866 539.4450
试估计任何时刻(包括水泵正在输水时间)从水塔流出 的水流量f(t),并估计一天的总用水量。已知该水塔是一 个高为40ft(英尺),直径为57ft(英尺)的正圆柱,表 5-1给出了某个小镇一天水塔水位的真实数据,水位降至 约27.00ft水泵开始工作,水位升到35.50ft停止工作。 (注:1ft(英尺)=0.3048m(米))
每段数据首尾点的流速用下面的公式计算:
xi +1 + xi yi yi +1 v( )= 2 xi +1 xi
v ( x0 ) = (3 y0 4 y1 + y 2 ) ( x2 x0 ) v ( xn ) = (3 y n + 4 y n1 y n2 ) ( xn xn2 )
用以上公式求得时间与流速之间的数据如表12-3。
4
有了任何时刻的流量,就不难计算一天的总用水 量。其实,水泵不工作时段的用水量可以由测量记录 直接得到,由表12-1中下降水位乘以水搭的截面积就 是这一时段的用水量。这个数值可以用来检验数据插 值或拟合的结果。
5
2.3 问题求解 为了表示方便,我们将2.1节问题中所给表12-1中 的数据全部化为国际标准单位(表12-2),时间用小 时(h),高度用米(m): 表12-2 一天内水塔水位记录
时间/h 时间/h 12.95 13.88 14.98 15.90 16.83 17.93 19.04 19.96 20.84 22.02 22.96 23.88 24.99 25.91
水位/m 水位/m 10.21 9.94 9.65 9.41 9.18 8.92 8.66 8.43 8.22 水泵开动 水泵开动 10.59 10.35 10.18
11
由表12-3作出时间—流速散点图如图12.3。
1)插值法 由表12-3,对水泵不工作时段1,2采取插值方法,可以 得到任意时刻的流速,从而可以知道任意时刻的流量。
12
我们分别采取拉格朗日插值法,分段线性插值法及 三次样条插值法;对于水泵工作时段1应用前后时期的 流速进行插值,由于最后一段水泵不工作时段数据太 少,我们将它与水泵工作时段2合并一同进行插值处理 (该段简称混合时段)。 我们总共需要对四段数据(第1,2未供水时段,第1 供水时段,混合时段)进行插值处理,下面以第1未供 水时段数据为例分别用三种方法算出流量函数和用水 量(用水高度)。 下面是用MATLAB实现该过程的程序。 t=[0,0.46,1.38,2.395,3.41,4.425,12.44,6.45,7.465,8.4 5,8.97]; ; v=[29.89,21.74,18.48,16.22,16.30,15.32,13.04,15.45 ,13.98,16.35,19.29]; ; t0=0:0.1:8.97; ;
3
2.2 问题分析 本实验所指流量可视为单位时间内流出水的体积。 由于水塔是正圆柱形,横截面积是常数,所以在水泵 不工作时段,流量很容易根据水位相对时间的变化算 出。问题的难点在于如何估计水泵供水时段的流量。 水泵供水时段的流量只能靠供水时段前后的流量经 插值或拟合得到。作为用于插值或拟合的原始数据,我 们希望水泵不工作时段的流量越准确越好。这此流量大 体上可由两种方法计算,一是直接对表12-1中的水量用 数值微分算出各时段的流量,用它们拟合其它时刻或连 续时间的流量;二是先用表中数据拟合水位一时间函数, 求导数即可得到连续时间的流量。//求导之后在拟合出 供水时的没有数据的那段流量的导函数图像
12.2 实验内容
2.1 实验问题 美国某州的用水管理机构要求各社区提供以每小时多少加 仑计的用水量以及每天所用的总水量。许多社区没有测量流入 或流出水塔水量的装置,只能代之以每小时测量水塔中的水位, 其误差不超过5%。需要注意的是,当水塔中的水位下降到最低 水位L时,水泵就自动向水塔输水直到最高水位H,此期间不能 测量水泵的供水量,因此,当水泵正在输水时不容易建立水塔 中水位和用水量之间的关系。水泵每天输水一次或两次,每次 1 约2小时。
10
时间/h 时间/h 0 0.46 1.38 2.395 3.41 4.425 5.44 6.45 7.465 8.45 8.97 9.98 10.93 10.95 11.49
流速/cmh 流速/cmh-1 29.89 21.74(25) 18.48(15.22) 16.22 16.30 15.32 13.04 15.45 13.98 16.35 19.29 水泵开动 水泵开动 33.50 29.63
7
1.模型假设 (1)流量只取决于水位差,与水位本身无关,故由物 理学中Torriceli定律:小孔流出的液体的流速正比于水 面高度的平方根。题目给出水塔的最低和最高水位分 别是8.1648m ( 27 × 0.3024)和10.7352m (35.50 × 0.3024) (设出口的水位为零),因为sqrt (10.7352 8.1648) ≈ 1.1467 ,约为1,所以可忽略水位对流速的影响。 (2)将流量看作是时间的连续函数,为计算简单, 不妨将流量定义成单位时间流出水的高度,即水位对 时间变化率的绝对值(水位是下降的),水塔截面积 为 S = (57 * 0.3024) 2 * π 4 = 233.3475 2),得到结果 (m 后乘以s即可。
21
表12-5是对一天中任取的4个时刻分别用3种方法得到 的水塔水流量近似值。
时间 ① ② ③ 6.88 10.88 15.88 22.88
15.98266712348 33.74260090853 25.56622418180 34.70996210551 514 463 477 694 14.82724137931 32.99762626262 25.44655913978 25.47157894736 034 627 495 84 15.05278581965 33.70895535953 25.54908920557 29.41733175863 820 259 423 551
注:①拉格朗日插值法②分段线性插值法③三次样条插值法
22
2)拟合法 (1)拟合水位—时间函数 从表12-2中的测量记录看,一天有两次供水时段和 三次未供水时段,分别对第1,2未供水时段的测量数 据直接作多项式拟合,可得到水位函数(注意,根据 多项式拟合的特点,此处拟合多项式的次数不宜过高, 一般以3~6次为宜)。对第3未供水时段来说,数据 过少不能得到很好的拟合。 设t,h分别为已输入的时刻和水位测量记录(由表 12.2提供,水泵启动的4个时刻不输入),这样第1未 供水时段各时刻的水位可由如下MATLAB程序完成:
8
2.流量估计方法 首先依照表12-2所给数据,用MATLAB作出时间—水 位散点图(图12.2)。
9ቤተ መጻሕፍቲ ባይዱ
下面来计算水箱流量与时间的关系。 根据图12..,一种简单的处理方法为,将表12-2中 的数据分为三段,然后对每一段的数据做如下处理: 设某段数据 {( x0 , y 0 ), ( x1 , y1 ), , ( xn , y n )} ,相邻数据中点的平均流速用下面的公式(流速=(右 端点的水位-右端点的水位)/区间长度):
运行结果 lglrjf=145.6231 ; fdxxjf=147.1430; sancytjf=1412.6870
14
图12.4是对第1未供水段数据用三种不同方法得到的 插值函数图,
图中曲线lglr、fdxx和scyt分别表示用拉格朗日插值 法,分段线性插值法及三次样条插值法得到的曲线。
15
由表12-2知,第1未供水时段的总用水高度为 146(=968-822),可见上述三种插值方法计算的结果 与实际值(146)相比都比较接近。考虑到三次样条插 值方法具有更加良好的性质,建议采取该方法。 其他三段的处理方法与第1未供水时段的处理方法 类似,这里不再详细叙述,只给出数值结果和函数图 像(图12.5~图12.7),图中曲线标记同图12.4。
水流量的估计
12.1 实验目的
本实验的主要目的是使学生学会用MATLAB软件进行插值 软件进行插值 本实验的主要目的是使学生学会用 和曲线拟合计算并解决一些具体的实际问题。 和曲线拟合计算并解决一些具体的实际问题。通过实际问题的 解决, 解决,使学生了解如何利用曲线插值及曲线拟合解决实际问题 的全过程。 的全过程。
13
lglr=lglrcz(t,v,t0); ; /*注:lglrcz为一函数,程序同 为一函数, 注 为一函数 lglrcz.m*/ lglrjf=0.1*trapz(lglr) fdxx=interpl(t,v,t0); ; fdxxjf=0.1*trapz(fdxx) scyt=interpl(t,v,t0,’spline’); ; sancytjf=0.1*trapz(scyt) plot(t,v,’*’,t0,lglr,’r’,t0,fdxx,’g’,t0,scyt,’b’) gtext(‘lglr’) gtext(‘fdxx’) gtext(‘scyt’)
23
t=[0,0.92,1.84,2.95,3.87,4.98,5.90,7.00,7.93,8.97,10.95,12.03,
相关主题