池水含盐问题---动态系统的仿真模型..doc

池水含盐问题---动态系统的仿真模型..doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

s4c2bg5I + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档