网站大量收购独家精品文档,联系QQ:2885784924

连续系统的计算机模拟.DOC

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
连续系统的计算机模拟

第2章 连续系统的计算机模拟 本章讨论连续系统的模拟技术,由于这类系统中状态随时间连续动态地变化,常常具有一定的规律,故可用一些数学方程来描述,这些方程就是系统的数学模型,通常以微分方程、代数方程为多见。下面将介绍利用数值积分法对连续系统进行数字模拟的基本原理和具体方法,并给出数值积分法中几个常用的算法以及实现这些算法的计算程序,最后介绍两个建模实例。 数值积分法不仅方法种类多,而且有较强的理论性,本章由浅入深地介绍几种常见的数值解法。主要为单步法中的四阶龙格--库塔法与默森法和多步法中的亚当斯法。 使用数字计算机对连续系统进行模拟,首先必须将连续系统离散化,并将它转化为差分方程,以建立所谓的模拟系统的数学模型。描述连续系统动态特征的数学模型是多种多样的,除微分方程外,还有传递函数、结构图及状态方程等,由于篇幅所限,本书不讨论后两种方法。 建立系统的模拟模型之后,就要选择计算机语言(也叫算法语言)编写系统模拟程序,在计算机上运行,将结果保留在数据文件中以待传输和处理。由于模拟的目的不同,可以选用不同的模拟模型和算法,其特点是运算精度高,对于不同的计算机,字长一般在16位---72位之间,也可采用浮点运算和双精度运算,其精度一般可达千万分之一到百万分之一。当然结果的精度与所选的算法有关。这可以根据实际需要选择机器、算法和模拟的步长。数字计算机储存容量大,可进行各种运算,在以前认为是不可能解决的问题,利用数字计算机都可容易地或有可能得到解决。本章介绍的方法适应性较强,应用也十分广泛。数字计算机上还有各种功能的软件包(即一些子程序),用户可以稍加修改或不经修改就可以用于自己的模拟程序中,解决自己的实际问题,使用非常方便。 2.1 欧拉(Euler)法 在讨论连续系统的计算机模拟之前,让我们先看一个化学反应的例子,通过这个例子我们可以看到怎样使用数字计算机模拟一个实际问题,虽然介绍的是欧拉法,但是分析问题的思路同样适用与其它数值积分法。 当两种物质A和B放到一起产生化学反应时,产生第三种物质C,一般一克A与一克B结合产生2克的C物质,形成C 的速率与A 和B的数量乘积成正比,同样C也可分解为A和B,C的分解速率正比与C的数量,即在任何时刻,如果a,b,和c是化学物质A,B,和C的数量,即在任何时刻,如果a,b,和c是化学物质A,B,C的数量,它们的增加和减少的速度服从下列微分方程。 (2.1) 其中K1和K2 是比例常数(一般而言这些比例常数会随温度和压力发生变化,但在模拟过程中,为了简化模型,一般不允许其变化,故一律视为常数)。在给出常数K1 和K2 值以及A和B的数量(C=0)后,我们希望能确定有多少C物质产在出来,这种化学反应速率的决定在化学工业上是有意义的。 模拟该系统的一个直接的方法是在t=0时开始,使t以Δt间隔增加。假定化学量在Δt时间步长内不变,而只能在Δt结束的瞬间发生变化,这样在每个Δt结束时的A(或B或C)的数量就可以从Δt开始时的数值由下式求出 (2.2) 同样的方程b(t+Δt)和C(t+Δt),也可写出。 假定模拟周期为T,可将T分成N个小的时间步长Δt,及 T=N·Δt 在时间为零时,我们知道a(0)、b(0)和c(0)的初始值,从这些初始值及常数K1和K2值出发,就可以计算出Δt时间内的化学量的变化值。 a(Δt)=a(0)+[K2?C(0)-K1a(0)·b(0)]·Δt b(Δt)=b(0)+[K2·C(0)-K1a(0)·b(0)]·Δt c(Δt)=c(0)+[2K1·a(0)·b(0)-2K2 c(0)]·Δt 使用这些值,又可计算系统的下一个状态,即2Δt时的状态。 a(2Δt)=a(Δt)+[K2?c (Δt)-K1a(Δt)·b(Δt)]·Δt b(2Δt)=b(Δt)+[K2·c(Δt)-K1a(Δt )·b(Δt )]·Δt c(2Δt)=c(Δt )+[2K1·a(Δt )·b(Δt )-2K2 c(Δt)]·Δ

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档