- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
池水含盐问题---动态系统的仿真模型.
大学实验报告
1 实验题目
池水含盐问题---动态系统的仿真模型
2 实验问题陈述
池水含盐问题:
池中有水2000,含盐2kg,以6/min的速率向池中注入浓度0.5kg/的盐水。又以/min的速率从池中流出混合后的盐水。如果池中盐水浓度达到0.2kg/时将注入池中的盐水改变为清水,问何时池中盐水的浓度能够被稀释到这个浓度的50%,即到达0.1kg/?
3 实验目的
(1)了解仿真池中盐水浓度动态变化,给出池中的盐水达到设定浓度的时间。
(2)实现计算机的动态仿真。
4 实验内容
这是一个浓度随时间变化的问题,但是变化的途中输入的控制条件发生了变化。虽然在之前的问题中组建了这个问题的机理模型。但是模型是非线性的,再考虑到控制条件的变化,解析的解决这个问题并不简单。况且问题只是要求从数值上给出池中的盐水达到设定浓度的时间。利用计算机仿真这个过程来解决问题是适当的。
模型中的变量有:
时间t,体积V(t),盐量S(t),盐水浓度p(t)。
参量:
流入池中盐水的流速r1=6;
流入池水的浓度p1=0.5:
池中流出的盐水的流速r0=4;
流出盐水的浓度(即池中盐水的浓度)p(t);
输入条件改变的浓度p*=0.2;
输入条件改变的时间t*;
系统终止的浓度p**=0.1;
系统终止运行的时间t**
使用时间步长法仿真这个动态系统,令t为仿真时钟。需要将整个仿真的时间过程用一系列的离散的时间点t0=0t1…tn…分成许多相等的时间间隔[,],其中△t=-就是时间步长。若取步长为1min,就是要求每隔1min系统的状态就要仿真调整一次。
根据问题的要求,在时间间隔[t,t+△t]内将有如下的转换关系:
V(t+△t)=V(t)+(r1-r0)△t,
S(t+△t)=S(t)+[r1p1-r0p(t)] △t,
P(t+△t)= S(t+△t)/V(t+△t),
考虑到系统运行过程中输入参数的变化,设置指标ind来标志输入条件的转换,令ind=1表示输入池中盐的浓度为pi(≠0),ind=0表示流入池中的水为清水(pi=0)。并且计划再在仿真的过程每运行m个时间步长打印输出一次计算的结果。
5 实验结果分析与讨论
(2)结果分析讨论:
在matlab上运行得到如下结果如表1。
调用画图指令绘制池中的盐水浓度随时间变化的动态图如下;
【注】横坐标表示时间(min/10)
【注】其中数据从左至右分别表示:时间(min);池水体积(m3);含盐量(kg);含盐率(kg/m3)。
从所得到的数值结果我们可以看出,当时间到达185min时含盐率达到最大0.2003kg/,随后浓度逐渐减小,到494min时浓度只有最大时的一半。所以当以6/min的速率向池中盐水注入浓度0.5kg/的盐水时,只需要大约3h(185min)就可以使得池中盐水的浓度达到0.2kg/.这时如果停止向池中注入盐水,改为以相同的速率注入清水,仿真的结果表明却还要经过大约5h(494-185=309min)才可以将池中盐水的浓度降低50%,浓度达到0.1%。可以看出模型的结论与我们通常的认识是不同的!
因此我们需要进一步讨论到底是什么原因导致这样的结果,经过和老师讨论以及查阅相关资料可以推测应该是和分子扩散相关,扩散的过程不可逆的,给水中加入盐,浓度达到最大时较,快但稀释成开始的浓度需要更多时间,这和湖水污染道理接近。
(2)实验总结:
通过这次实习,我理解到数学建模的复杂性,更看到计算机与数学建模的完美结合,学习到了动态系统仿真模型在解决实际问题中的重要应用。编程时很多mtlab语言都忘记了,但在查找相关资料后都得到了相应的解决。同时在实验的最后发现模型的分析和我们通常的认识不同,到底是什么原因引起这种现象,除了从分子扩散不可逆角度外,还有没有其他原因,这个问题值研究。
6 实验程序(Matlab或者其它软件语言陈述)
Mtlab 编程如下;
【注;,注意编程分为四段,每段中间用空行隔着,每段都有相应结果输出。】
t=1;v=[2000];s=[2];p=[0.001];%初始状态
ri=6;ro=4;po=0.5;p1=0.2;p2=0.1;%参数
V=[v(end)];S=[s(end)];P=[p(end)];x=[0];%打印记录
while p(end)p1;%调整输入前动态
t=t+1;%时钟步进
v=[v,1];s=[s,1];p=[p,0];%变量步进
v(t)=v(t-1)+ri-ro;s(t)=s(t-1)+ri*po-ro*p(t-1);
p(end)=s(end)/v(end);%仿真计算
end;
t1=t-1;%调整输
文档评论(0)