代码以及过程学习来源于:西北工业大学 肖华用老师课程 代码在文章最后

附上链接: 9.5 插值与拟合模型(二)-----水塔流量问题_哔哩哔哩_bilibili

也可以去中国mooc观看肖老师视频

问题描述:美国某洲的各用水管理机构要求各社区提供以每小时多少加仑计的用水率以及每天总的用水量,但许多社区并没有测量水流入或流出水塔水量的设备,他们只能每小时测量水塔中的水位,精度在0.5%以内,更为重要的是,无论什么时候,只要水塔中的水位下降到某一最低水位L时,水泵就启动向水塔重新充水至某一最高水位H,但也无法得到水泵的供水量的测量数据。水泵每天向水塔充水一次或两次,每次约两小时。水塔是一个垂直圆形柱体,高为40英尺,直径57英尺。 ,当水位升至35.50英尺时停止充水。试估计在任何时刻,甚至包括水泵正在工作期间内,水从水塔流出的流量f(t),并估计一天的总用水量。

表1 小镇某天的水塔水位(0.01英尺)

表2 各时刻水体积表

要从水的流速得到水的流量,可以使用直接积分法,对0到24小时的水的流速进行积分计算即可得到一天的总用水量。或者使用分部积分法,对第一次充水前,第一次充水到第二次期间,第二次充水后,这三段进行分部积分,然后将两种积分方法进行比较。

计算各时刻点的水流量(加仑/小时):

25个时刻处的水流量采用差分的方法得到,共分三段分别处理

差分公式为:

对每段前两点采用向前三点差分公式:

对每段最后两点采用向后三点差分公式:

对每段中间点采用中心差分公式:

表3 各时刻水流量

使用数值积分的方式,求解一天的总用水量

方法一:直接积分法

方法二:分段计算

clear,clc
c=0.3048;%英尺和米的换算
p=1.0/3.785;%升和加仑的换算
d=57*c;%直径
h=31.75*c;
%v=pi*d*d*h/4*1000*p;
data=[0,3175;3316,3110;6635,3054;10619,2994;13937,2947;17921,2892;21240,2850;25223,2797;28543,2752;32284,2697;39435,3550;43318,3445;46636,3350;49953,3260;53936,3167;57254,3087;60574,3012;64554,2927;68535,2842;71854,2767;75021,2697;82649,3550;85968,3475;89953,3397;93270,3340];%数据导入
t=data(:,1)/3600;%计算时间
v=pi*d*d*data(:,2)/100*c/4*1000*p;%计算体积
%计算差分
n=length(v);
f=zeros(n,1);%储存差分值
%计算第一段
n1=10;
for i=1:n1if i<=2 %前两点用向前三点差分f(i)=abs(-3*v(i)+4*v(i+1)-v(i+2))/(2*(t(i+1)-t(i)));elseif i<=n1-2%中心差分公式f(i)=abs(-v(i+2)+8*v(i+1)-8*v(i-1)+v(i-2))/(12*(t(i+1)-t(i)));elseif i>=n1-1 %后两点用向后三点差分f(i)=abs(3*v(i)-4*v(i-1)+v(i-2))/(2*(t(i)-t(i-1)));end
end
%计算第二段
n2=21;
for i=n1+1:n2if i<=n1+2f(i)=abs(-3*v(i)+4*v(i+1)-v(i+2))/(2*(t(i+1)-t(i)));elseif i<=n2-2f(i)=abs(-v(i+2)+8*v(i+1)-8*v(i-1)+v(i-2))/(12*(t(i+1)-t(i)));elseif i>=n2-1f(i)=abs(3*v(i)-4*v(i-1)+v(i-2))/(2*(t(i)-t(i-1)));end
end
%计算第三段
n3=25;
for i=n2+1:n3if i<=n2+2 f(i)=abs(-3*v(i)+4*v(i+1)-v(i+2))/(2*(t(i+1)-t(i)));elseif i<=n3-2f(i)=abs(-v(i+2)+8*v(i+1)-8*v(i-1)+v(i-2))/(12*(t(i+1)-t(i)));elseif i>=n3-1f(i)=abs(3*v(i)-4*v(i-1)+v(i-2))/(2*(t(i)-t(i-1)));end
end
plot(t,f,'r*');%原始图
tmin=min(t);tmax=max(t);
tt=tmin:0.1:tmax;%获取离散的时间点,以便做样条曲线
ff=spline(t,f,tt);%计算三次样条插值
hold on
plot(tt,ff,'b');%画样条曲线
xlabel('时间(小时)');
ylabel('水塔流量图');
hold off
dt=0.05;
t2=0.5:dt:24.5;%获取离散时间点,以便积分
nn=length(t2);
f2=spline(t,f,t2);
%计算24小时用水量,使用复化梯形公式
s=(f2(1)+f2(nn)+2*sum(f2(2:nn-1)))*dt/2;
fprintf('(全部积分法)1天总水量s=%8.2f\n',s);
%第一次水塔增加的水
v10=v(11)-v(10);
dt1=t(11)-t(10);
%第一次充本其间流出的水
tp=t(10):dt:t(11);
nn=length(tp);
yp=spline(t,f,tp); %计算三次样条插值
v11=(yp(1)+yp(nn)+2*sum(yp(2:nn-1)))*dt/2;
v1=v10+v11;%第一次充水总量
p1=v1/dt1; %第一次充水的平均水流量
%第一次充水前总流量
vv1=v(1)-v(10);
%两次充水间总流量
vv2=v(11)-v(21);
% t=83649到85968其间流量
vv3=v(22)-v(23);
%第一次充水期间流量
ta=t(10):dt:t(11);
%获得离散的时间点,用于积分
nn=length(ta);
fa=spline(t,f,ta);
s1=(fa(1)+fa(nn)+2*sum(fa(2:nn-1)))*dt/2;
%第二次充水期间流量
tb=t(21):dt:t(22); %获得离散的时间点用于积分
nn=length(tb);
fb=spline(t,f,tb);
s2=(f(1)+fb(nn)+2*sum(fb(2:nn-1)))*dt/2;
%t=85968到86400流量
tc=t(23):dt:24; %获得离散的时间点,用于积分
nn=length(tc);
fc=spline(t,f,tc);
s3=(fc(1)+fc(nn)+2*sum(fc(2:nn-1)))*dt/2;
ss=vv1 +vv2+vv3+s1+s2+s3;
fprintf('部分积分法)1天总水流量ss= %8.2f\n',ss);
err=abs((s-ss)/s);
fprintf('两种计算法总量相对误差%6.2f%%\n',err* 100);

matlab实现水塔水流量问题相关推荐

  1. 水塔流量的估计matlab,估计水塔的水流量

    估计水塔的水流量 摘 要 :建立模型提供水流量及一天的总用水量的较为准确的估计值.本文采用多项式拟合的方法,利用数学软件MATLAB对水塔流量进行计算,两个供水时段水泵功率相当,可见计算结果与实际相吻 ...

  2. matlab做水流量问题,基于MATLAB的地下水流量与水位降深关系的一种优化计算方法...

    基于 MATLAB的地下水流量与水位降深关系的一种优化计算方法李继超 ,桑有明 ,邓 宇 ,袁章均 [收稿日期 ] 2008 - 11 - 27 [作者简介 ] 李继超 (1982- ) ,男 ,湖北 ...

  3. 基于matlab的水塔水位控制设计,水箱液位控制系统设计

    内容简介: 水箱液位控制系统设计,课程设计论文,共31页,11974字. 摘要 水箱液位控制系统是典型的自动控制系统,在工业应用上可以模拟水塔液位.炉内成分等多种控制对象的自动控制系统. 本次课程设计 ...

  4. matlab在数值计算中的应用,详解MATLAB在科学计算中的应用

    详解MATLAB在科学计算中的应用 编辑 锁定 讨论 上传视频 <详解MATLAB在科学计算中的应用>是2011年电子工业出版社出版的图书,作者是陈泽占海明. 书    名 详解MATLA ...

  5. 运用计算机通过动力方程,计算机技术在地下水动力学课程素材建设中的应用

    王超月 曲文静 代锋刚 摘  要:地下水动力学课程理论性强,传统的多媒体配合板书讲授式的教学很难调动学生的积极性,并且不利于培养学生的实际操作能力.文章介绍了如何运用计算机技术(如Excel.Aqui ...

  6. 安装Anaconda3时遇到的问题

                昨天总结了装python和pycharm.本来想着马上接着总结Anaconda 的,谁知道,这一安装,竟然花了我一天一夜的时间,(悲伤辣么大啊简直).遇到了各种各样的问题,重装 ...

  7. MATLAB实战系列(十七)-大学生数学建模赛题解析-水塔中水流量估计(附MATLAB源码)

    题目 美国某洲的各用水管理机构要求各社区提供以每小时多少加仑计的用水率以及每天总 的用水量,但许多社区并没有测量水流入或流出当地水塔的水量的设备,他们只能代之以每小时测量水塔中的水位,精度在 0.5% ...

  8. [MATLAB]河道水流量的估算问题

    本试验取材于中南大学<科学计算与MATLAB语言>. 下面进行题目描述与题目分析和解答: 根据实际测量,得到河流某处宽600m,其横截面不同位置某一时刻的水深如下表所示: ①若此刻水流的流 ...

  9. matlab 线性最小二乘法,matlab_最小二乘法线性和非线性拟合.ppt

    3.血液容积v, t=0注射剂量d, 血药浓度立即为d/v. 2.药物排除速率与血药浓度成正比,比例系数 k(>0) 模型假设 1. 机体看作一个房室,室内血药浓度均匀--一室模型 模型建立 在 ...

最新文章

  1. JavaScript实现复选框全选与全不选的效果
  2. 《Python Cookbook 3rd》笔记(4.15):顺序迭代合并后的排序迭代对象
  3. CSV格式整理,去除与上一行数据重复的单元格
  4. winform 中导入excel时提示“未在本地计算机上注册“microsoft.ACE.oledb.12.0”
  5. Qt与VS2008的便捷安装(非编译源码方式),并解决错误“Unable to find a Qt build”
  6. prince2 成功的项目管理_公开课受控环境下的项目管理PRINCE2认证培训(杭州)
  7. 计算机本科生毕业设计题目(三)
  8. 长江大学计算机类分流,2020级环境科学与工程类学生专业分流方案
  9. SpringCloud-网关统一配置跨域
  10. IMDb站点起诉加州限制演员年龄信息披露法案的有效性
  11. 数据可视化—绘制简单的折线图
  12. linux执行scp命令出错
  13. FFmpeg获取视频的旋转角度
  14. 跳槽字节跳动,从新手到Flutter架构师,一篇就够!深度好文
  15. JVM-Java虚拟机
  16. 两种网页转Markdown的简便方法
  17. app内嵌h5分享到小程序分享功能
  18. iphone 计算机知道密码忘了,苹果笔记本密码忘了怎么办_苹果笔记本密码忘记如何解决-win7之家...
  19. js动态添加html元素绑定事件,JS实现动态添加DOM节点和事件的方法示例
  20. 美国盐湖城郊区一购物中心发生枪击案 致2人受伤

热门文章

  1. 【FTK Imager篇】FTK Imager磁盘镜像的哈希报告翻译
  2. Codeforces Round #738 (Div. 2)——C. Mocha and Hiking
  3. 2018春节人生有感书法作品系列
  4. 如何在外网上中山大学的校园网
  5. hx711基准电压_(完整版)hx711基本原理讲解
  6. 2016中国VR行业预测研究报告
  7. 【老生谈算法】matlab实现马氏链算法源码——马氏链
  8. MakefileCMake
  9. 一起谈谈支持Markdown的写作平台体验
  10. 单点触控、多点触控和自定义控件的使用