收藏 分销(赏)

计算机模拟技术.doc

上传人:s4****5z 文档编号:8772558 上传时间:2025-03-01 格式:DOC 页数:30 大小:307.50KB
下载 相关 举报
计算机模拟技术.doc_第1页
第1页 / 共30页
计算机模拟技术.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述
计算机模拟技术 课程名:计算机模拟技术 计算机模拟是在科学研究中常采用的一种技术,特别是在科学试验环节,利用计算机模拟非常有效。所谓计算机模拟就是用计算机来模仿真实的事物,用一个模型(物理的-实物模拟;数学的-计算机模拟)来模拟真实的系统,对系统的内部结构、外界影响、功能、行为等进行实验,通过实验使系统达到优良的性能,从而获得良好的经济效益和社会效益。 计算机模拟方面的研究始于六十年代,早期的研究主要用于国防和军事领域(如航空航天、武器研制、核试验等),以及自动控制等方面。随着计算机应用的普及,应用范围也在扩大,现在已遍及自然科学和社会科学的各个领域。在农业方面,我国从80年代开始进行作物生长发育模拟模型和生产管理系统的研究,目前有一定基础的:在小麦方面有北农大、中科院;棉花方面有中国农业大学、中国棉花所;水稻方面有江西农科院;在土壤水份、水资源及灌溉方面西北农业科技大学。目前影响较大的有比较成形的有江苏省农科院。目前的主要成果有:我国主要农作物栽培模拟优化决策系统RCSODS(水稻)和WCSODS(小麦-江苏省农科院)、MCSODS(玉米-河南省农科院)、CCSODS(棉花-中国农业大学)等。 计算机模拟特别适合于实验条件苛刻、环境恶劣(如真空、高温、高压、有毒有害的场所)、试验周期长,花费大的场合。 农作物的生产系统就很适合于计算机模拟:农作物的生产受各种条件的影响,不同作物、不同品种也有差异。比如,要想提高一种作物的产量,就先要作试验,通过试验了解这种作物的特性:抗旱性、耐寒性、对氮、磷、钾哪种肥更有效等。但农业的田间实验不能保证精度(除人为可控条件外,还有许多随机因素)、周期长(周期一年),耗费大。可通过计算机模拟来实现:先建立这种作物生产系统的数学模型(依靠专业知识或试验数据。一般来说,诸如作物产量和农业环境的关系可用微分方程或其它方程来描述),通过计算机模拟来找出这种作物的生长与农业环境相互作用的关系,以及各种条件之间的协迫情况。不仅可大大节省实验经费、加快研究进度(周期一年的实验结果几秒钟内即可得到),这种模拟软件的开发还可与农业生产管理系统,决策系统相联系,实现对农作物生产的预测、分析、调控、设计的数字化和科学化。 作为一门课程,不是研究某个特定系统的模拟问题,而是了解计算机模拟的一般过程、基本原则,掌握基础知识,掌握建模及动态模拟的一般方法。 第一章 计算机模拟概述 1.1 计算机模拟技术 ● 研究对象 在一个计算机模拟问题中,我们研究的对象是一个系统。 系统:一些具有特定功能的、相互之间按一定规律联系着的实体的集合。如作物的生产系统可看作由作物、环境、技术、经济等要素构成的。各要素之间相互影响、相互联系,称为系统的相关性;一个系统是一个整体,整体内的各个部分不能分割,各因素之间必须相互协调,不能在任何一个环节出问题,才能使系统达到优良的状态,称为系统的完整性。 ● 目标 计算机模拟的目标是了解系统的各个实体之间的相互制约关系,从而使系统在预定的目标下达到最优和完善。如在作物生产系统中,怎样控制、实施各水、肥、栽培技术等,从而使产量最高,以获得最优的经济效益。 ● 方法 模拟的方法是先建立系统与环境相互作用的数学模型,用数学模型来类比、模仿现实系统(一个数学模型就是从数学上表达系统各因素之间的数量关系,或各因素之间协调的规则;从整个模拟过程来看就是一个算法,或一系列数据,这些数据综合描述一个系统过程或现象的重要行为),然后在数学模型和对系统深刻了解的基础上,开发模拟软件,用影响系统目标的因素作为输入,通过计算机技术来表达系统各因素作用的状态。从数学的角度来看,模拟的过程就是对数学模型求解的过程,并把系统过程演示出来。 ● 基础知识 可见,对一个系统进行计算机模拟, (1) 要对模拟对象有深刻的了解。如:一个公交车调试系统,要编制一个好的调度程序,必须先对现行系统作周密的调查,搞清哪些是影响调度程序的成分及实体,如现有车辆数、每车载客数、每趟车花费的时间、沿途乘客的密集程度、乘客的一般去向、乘客高峰期的人数等。只有经过周密的调查研究,才能形成一个完整的模拟系统;作物生长模拟系统中,也要搞清影响作物生长的各因素,具备丰富的专业知识,否则不能建立起精确的模型。在对一个系统的动态特性不完全清楚的情况下,有必要通过实验获取数据,以用于数学模型的建立。 (2) 要有数学知识。一般研究的系统较复杂,不能用简单的函数或方程来描述,要综合使用各种数学方法,才能使模型准确、可靠。 (3) 计算机知识和编程技巧。软件应完整地实现系统的数学描述,输出应直观、形象,如三维可视化输出等。软件的开发是项目的重要工作,也直接影响模拟的效果。软件的编写可使用任何编程语言,如C、VB、Java等。专门的语言如GPSS,GPSS是面向对象问题的离散事件的专用模拟语言,优其适用于排队系统。1961年,IBM公司发表GPSS的第一个版本,后来又有其它公司的各种版本。标准的版本有52个模块,每个模块用特定的名称和图形来表示其功能。现在一般常用的语言都有模拟库(已编好的用于实现模拟功能的函数)专门用于模拟软件的开发。 1.2 系统的分类 可模拟的系统各种各样,不同类型的系统用不同的模型来描述。系统的分类方法很多,重要的分类方法是按系统的状态是否随时间变化来分:一个行为与时间有关的系统称为动态系统 待研系统:静态系统:系统的行为与时间无关;用静态模型来描述,一般为数学方程、逻辑表达式等。 如,电路的布尔表达式;电路中电压与电流的关系;系统的稳态解公式等 动态系统:连续系统:系统的状态随时间连续变化;常用微分方程来描述;方程对所有 时间点有效。如,卫星运行轨道,作物生长量等 确定性系统:系统的输出完全由其输入来描述,即系统输入与 输出按某种规则一一对应 集中参数模型:用常微分方程来描述,即方程中的 导数不是偏导数 分布参数模型:用偏微分方程来描述,但一般用 集中参数模型近拟表示 随机系统:系统的输出是随机的,有规律的存在一族随机变量, 且随机变量序列与时间有关(随机过程)。 在确定性系统的模拟中使用随机变量的研究方法 称为蒙特卡罗方法 离散系统:系统状态的变化只在离散的时间发生;动态方程只在离散点上有效; 一般为随机系统。如,库存问题;企业的管理系统等 离散时间系统:时间步长固定;常用差分方程来描述 离散事件系统:用事件来表示系统在时间间隔内的变化;常用 概率模型来描述 1.3 建立数学模型 对一个系统,确定其类型后有助于选择合适的方法建模,建模的一般步骤可分两个大的阶段: (1) 实质内容模型阶段:首先对模拟对象进行调查(了解系统,搜索模拟所需的信息)、实验(参数估计等统计推断方法,确定参数及参数的敏感性)、分析(将信息分类、量化,确定描述系统的规则),尽可能全面地掌握系统的基本特性、运动规律以及中间状态(最好是有对系统有深入了解的专业人员参与),通过分析和逻辑推理,揭示系统内的规律。 (2) 形式数量阶段:在调查、实验、分析的基础上,进一步揭示系统内部的数量关系,并对其进行数学处理,即对系统用数学形式来描述:用变量描述系统状态,用各种数学方程定量表示各变量之间的相互联系,用递归方程描述系统状态的发展趋势。 多数情况下,建立一个好的(能真实的描述系统,有代表性,能准确的模拟系统的数量信息,与实际系统较吻合)数学模型不易,优其是复杂多变的系统或系统本身的特性尚不完全清楚的情况(如对农作物开发新品种)。所以在数学模型建立后,必须进行模拟验证,如与真实系统相差较大,则要重新建模或修改模型。所以一个好的数学模型必须经过多次模拟,不断修改、完善,才能得到。 一个数学模型是描述系统行为的一个算法或一系列方程,工程中对系统建模应先建立系统的需求规格说明,在制定模拟规划之前予以充分讨论,过程中需考虑以下因素: (1) 模型中需考虑哪些有效的因素:一个系统可能有不同的行为(如一个作物生产系统中有作物的长势、产量、质量、病虫害等),但不一定所有这些因素都要建立在模型中。模型中需要考虑的因素是:真正能简化系统的建模;对系统易于建模、测试和维护;使用较少的计算资源;对研究的系统有直接作用的。 (2) 建模细化到什么程度:根据系统的需求确定细化的程度,是只须建立一个简单的模型,还是要对系统行为精确描述。在模型的准确性和花费之间求得平衡。 (3) 与系统有相互作用的哪些外部环境考虑在建模中:如在作物生长模型中,气候、水、肥等。 (4) 在建模中采取什么技术:首先,是基于物理的方程,还是基于测试数据。如果基于物理的方程,是用微分方程,还是差分方程,考虑不考虑随机因素等。这个问题常由专业人员根据系统的专业知识来决定;如果基于试验数据,则建立经验方程。 (5) 建模时必须获得什么样的数据:如林木生长模型中,需要胸径、树高、材积等数据。另外还需考虑这些数据的方便的输出形式,以及模型需要的计算资源,如模型需要占用的内存、磁盘空间、消耗的CPU时间等。 (6) 建模和测试模型需多长时间,多少人力、物力、财力:随着模型复杂性的增加,成本也会增加。一般可从简单开始,随着应用逐步完善。 (7) 如何验证和确认模型:必须确认建立的模型被正确实现,模型所描述的行为与真实系统匹配到可接收的程度,才能有价值。那么以什么标准来衡量。现在已有验证、确认与签定(VV&A)技术来证明和验证模拟的精确性。 以上问题应列在系统需求说明书中,并应用于最高层次:在实际的模拟问题中,可能将系统分解为子系统、组件,在对各组件、子系统建模时仍须遵从以上规则。 初始计划编制 评估 测试 分析设计实现 需求计划编制 部署 图1-1 迭代开发模型 模拟步骤: (1) 明确系统 (2) 建立模型 (3) 模型变换 (4) 软件设计开发 (5) 测试检验 (6) 评估、对结果的评价和分析 一个模拟项目中各项工作的过程应该是一个迭代过程,如图1-1所示。下面通过实例来说明模拟过程。 1.4 应用举例 1.4.1 两物体追逐问题。设有一架歼击机追踪一架敌方轰炸机,假设两机相距10公里以内可实施攻击,且须在12分钟内完成追击任务,否则认为追击失败。设两机初始位置如图1-2所示。问题:对轰炸机的任一条特定航线,模拟歼击机的追击过程。 (XB (0),YB (0)) D(t) VF =20 0 20 40 60 80 100 120 140 160 180 200 50 25 图1-2 两机追踪模拟 分析:在这个系统中,是对指定的轰炸机的一条航线而言,模拟歼击机的追击情况:歼击机按什么航线飞行,何时完成追击任务。能否歼灭敌机由在规定的时间内两机随时间变动的距离而定,所以实施功击的时间、距离是要输出的数据。在时刻t两机距离由歼击机在t时的位置决定,而t时的位置依赖于其速度和航向。 为使模型简单,作如下简化: (1) 设两机在同一平面飞行。于是三维问题转化为二维问题。 (2) 设歼击机的速度(必须考虑的因素) VF是常数(20km/mim)。变速须用微分方程描述,而常速即可用一般方程表达,求解更简单。 (3) 设歼击机的航向(必须考虑的因素)在△t (设1分钟)改变一次,而在1分钟以内操作不变。这样曲线运动即变为折线运动。 (4) 轰炸机航向(航线)可任意,比如现给定一条航线,如表1-1所示。 表1-1 轰炸机航线 t 0 1 2 3 4 5 6 7 8 9 0 11 12 XB (t) 80 90 99 108 116 125 133 141 151 160 169 179 180 YB (t) 50 48 45 41 35 32 27 21 22 25 29 30 33 (5) 歼击机初始位置:XF (0)=0,YF (0)=0 (初始条件) 建立数学模型: 设在t时刻两机位置为(XF (t),YF (t))、(XB (t),YB (t)),两机连线与水平线夹角为θ,则1分钟后歼击机的位置为: XF (t+1) = XF (t) +VF Cosθ (1.1) YF (t+1) = YF (t) +VF Sinθ (1.2) 由 (XF (t),YF (t)) 计算 (XF (t+1),YF (t+1)) 时涉及角θ,从图中看出: Sinθ= [YB (t) - YF (t)] / D(t) (1.3) Cosθ= [XB (t) - XF (t)] / D(t) (1.4) 而 D(t) = SQR{[YB (t) - YF (t)]2 + [XB (t) - XF (t)]2} (1.5) 式(1.5) - (1.1)即是这个问题的数学模型。先算出两机之距离,不断判断是否在12分钟内到达可攻击的距离之内。程序流程图如图1-3所示。 此例是连续系统,确定性模型,用一组方程来描述。下例是一个离散事件系统,是随机系统,用概率模型来描述。 开始 输入轰炸机航线数据 t = 0 计算D(t) D(t)≤10 输出t、D(t) 输出目标逃脱信息 t>12 t = t+1 计算新位置 结束 图1-3 追击模拟流程图 VB程序见实例。 图1-4 售货进程 库存 0 1 2 3 4 t 300 200 100 定货点 1.4.2 库存问题。商业部门为了合理利用有限的流动资金,每项商品都要在库存与销售之间求得平衡:库存量太大会增加管理费用、积压资金;库存量太小又可能造成缺货,也会造成销售损失、信誉损失。所以,当库存量不满足某一时段的顾客需求时,就要到厂家订货。这就需要采取一种策略:当库存量(比如布匹)降到P匹布时(称为定货点)则向厂家订货,定货量为Q匹(称为定货量)。假设现在有5种策略(方案)。从中选择一种使花费最少。 表1-2 库存策略 策略 P Q 1 125 150 2 125 250 3 150 250 4 175 250 5 175 300 已知条件: (1) 从发出订货单到收到货物需3天,即第i天订货,第i+3天收到。 (2) 每匹布的保管费为0.75元,缺货损失为1.8元 / 匹,订货费(包括手续费、采购差旅费及其他费用)为750元。 (3) 需求量为一个0-99之间的均匀分布随机数。 (4) 原始库存量为115匹,并设第一天没发出订货。 分析:库存问题是商业上的一个重要问题在数学上有专门的模型研究,存储论也是运筹学的一个重要分支。库存问题用计算机模拟最合适,若通过销售来找最优方案,势必造成经济损失。这是典型的离散事件系统,用概率模型来描述。这里已给定概率模型: X ~ U[0,99] 即密度函数为:p(x) = 1/99 0≤x≤99 0 x<0 分布函数为: F(x) = x / 99 0≤x≤99 开始 输入:预定到货日期、最初值、 总费用、日期、原库存量等 今天是否到货期 产生随机需求量 库存 + Q 需求量≤S(库存量) 总费用+缺货损失 算新库存量、保管费 预期库存≤P 预定到货Q,到货日期当日+3 日期 + 1 満180天 输出 结束 图1-5 库存问题模拟程序框图 1 x>99 以下框图对每种策略模拟180天,选出效益最好的方案,如图1-5所示。 C程序见实例。 以上两个例子一个连续系统,状态随时间连续变化,用方程来描述;一个离散系统,到货和销售都按一些离散的步骤进行,存在随机性,只能用概率模型来描述。但解决问题的过程、分析方法类似:先分析系统,使对系统有充分的了解;建立数学模型,设定一些初始条件(如t = 0时的状态,开始时的库存量);系统状态的变化对应一组方程或一组规则,随着时是的变化,系统状态改变,当一个周期结束时,收集模拟过程的统计数据 (即问题的解)。如果程序设计的好,就会使模拟非常逼真,就象一个真正的系统在演示一样。 从理论上讲,任何问题都可用计算机模拟。计算机模拟具有经济、安全可靠、周期短等优点。对任何问题,只要建立起数学模型,改变参数值及变量值,就可模拟各种情况下的系统运行情况,从模拟输出的结果,可分析系统内各因素的权重及其制约关系,帮助决策者作出合理的决策,克服盲目性,使系统在实际运行过程中取得最好的效益。 1.4.3 传染病传播问题。假设某一地区有一种传染病正在流行,那么政府、医务部门就要采取措施来控制这种疾病的传播,要使采取的措施能够有效的控制传染速度,就必须先搞清被传染的人数跟哪些因素有关,被传染的人数是一个什么样的发展趋势,从而来有效的预测和控制,下面建立描述被传染人数的数学模型。 传染病的传播涉及因素很多,不可能通过一两次简单的假设就能建好完善的数学模型。这里的作法是:先作出最简单的假设,看会得到什么样的结果,然后对不合理的地方再行修改,逐步得到较满意的模型。 先讨论一个粗略的模型。 模型I:假设: (1) 每个病人在单位时间内传染其他人的人数为一个常数k0。 (2) 一人得病后,经久不愈,该人在传染期内不会死亡。 记时刻t的得病人数为y(t),开始模拟时有y0个传染病人,则在△t时间内增加的病人人数为 y(t+△t) - y(t) = k0 y(t)△t 由导数定义得(在假设(1)、(2)下的数学模型): dy/dt = k0 y(t) (1.6) y(0) = y0 初值问题(1.6)的解为:y(t) = y0 e k0 t (分析:) 这个结果表明,得病人数将按指数形式无限增加,当t→∞时,y(t)→∞,显然与实际不符,说明上面的假设条件不合理。事实上,一个地区的总人数大致可视为常数(不考虑疾病传播期间出生的、迁出的、死亡的),所以一个病人在单位时间内能传播的人数k0是在改变的:在初期,k0较大,随着病人的增多,健康人数的减少,被传染的机会也将减少,所以k0将变小。 对上述模型进行改进:记t时刻的健康人数人S(t),当总人数不变时,k0随S(t)减少而减少。 模型II:假设: (1) 总人数为常数n,t时刻的健康人数为S(t),得病人数为Y(t),则 Y(t) + S(t) = n (1.7) (2) 单位时间内一个病人传染的人数与当时的健康人数成正比,比例系数为k(医学上称为传染强度) (3) 同模型I的假设(2)。 由假设(2),(1.6)式中的k0应为k S (t),即: dy(t) / dt = k S(t) Y(t) (1.8) y(0) = y0 将(1.7)式代入(1.8) 式,得(上述假设下的数学模型): dy(t) / dt = k Y(t) (n – Y(t)) (1.9) y(0) = y0 初值问题(1.9)的解为: Y(t) = n / [1+(n / y0-1) e –k n t ] (1.10) (分析:) 由(1.10)式得: dy/dt = [kn2 (n / y0-1) e –k n t ] / [1 + ( n / y0-1 ) e –k n t ]2 (1.11) (1.10)式是被传染人数随时间变化的关系;(1.11)式是被传染病人的变化率与时间的关系,如图1-6和图1-7所示。 dy/dt 0 t y n y0 0 t1 t 图1-6 病人人数变化曲线 图1-7 病人变化曲线 这个模型可预报疾病高峰到来的时间:令 d2y / dt2 = 0 ,得极大值点: t1 = ln ( n / y 0 - 1 ) / k n (1.12) 由(12)式可知,当传染强度k或人数n较大时,t1变化较小,表明传染高峰到来的快,这与实际情况相吻合。但由(1.10)式知当t→∞时,y(t)→n,这意味着最终人人都被传染,这与实际不符,原因在于假设(3)不合理。 再改进:可将人员分为三类:第一类为传染者(y);第二类为易受传染者(s),即这一类是非传染者,但能得病而成为传染者;第三类为除前两者之外的人(r),包括患病死去的、痊愈后具有长期免疫力的、被隔离的。 用y(t)、s(t)、r(t) 分别表示这三类人数。 模型III:假设: (1) 总人数为常数n,则: y(t) + s(t) + r(t) = n (1.13) (2) 同模型II的假设(2) (3) 单位时间内病愈免疫的人数与当时病人的人数成正比,比例系数为m (恢复系数) 由假设(3),有 dr / dt = m y(t) (1.14) 由于引入了r(t),则模型II的方程(1.8)应改为: dy / dt = k S (t) y (t) – dr / dt (1.15) (1.15)式表示单位时间内病人人数的增加应等于被传染的人数减去病愈的人数。从(1.13) - (1.15)中消去dy,并设S (0) = S0,r (0) = r0 得 dS/dt = - k S(t) y(t) dr/dt = m y(t) y(t) + s(t) + r(t) = n (1.16) S(0) = S0 r (0) = r0 模型(1.16)较好地描述了传染病传播问题。 通过以上实例,对数学模型的建立就有了一个基本的思路,对计算机模拟技术、模拟的过程、问题的方法步骤也有了一个概括的了解。后面两章下分别对连续系统和离散系统讨论基本的模拟方法。 习题: (1) 对例1.4.1中的飞机追击问题采用极坐标(r,θ),相应的方程为: dr/dt = VB Cosθ-VF r·dθ/dt = -VB Sinθ θ 图1-8 球摆 其中r为两机距离,θ为两机连线的角度。编程模拟两机追击情况。 (2) 球摆:如图1-8所示,设绳长为L,夹角为θ,球质量为m,初始速度θ(0) = 0,初始偏角θ0 ,确定摆动周期。 提示:影响摆动周期的因素: ①摆球重力; ②摆球质量; ③摆球尺寸相对于绳很小,故可视为质点建模; ④绳子质量忽略; ⑤磨擦力忽略; ⑥空气阻力不考虑。 建模:影响摆球运动的重力(使摆球回到中心位置的力)F的方向与绳子垂直;对绳子产生拉紧力的重力与绳子平行,它不影响摆球运动,忽略。F = -mg Sinθ,将牛顿定律F = ma代入上式得:a = -g Sinθ,其中a是摆球的切线加速度,由于L = θ",故得运动方程: θ" = -L/g·Sinθ θ(0) =θ0 ,θ´(0) = 0 第二章 连续系统的计算机模拟技术 连续系统的状态随时间连续的动状变化,这种变化依赖相关的因素,且遵从一定的规律,所以一般来说可用数学方程描述(代数方程、微分方程,此外还有传递函数、结构图及状态方程等)。问题:对数学模型怎样求解,求解过程也就是模拟的过程,即程序的算法。对前面的飞机追击的问题,其模型是一组代数方程,而且是显式的,所以,作法是:假设1分钟改变一次航向,每隔1分钟计算一次系统的状态,而且由模型知道了歼击机前一分钟的状态就可以算出后一分钟的位置。这样,通过迭代,就可求出问题的解。 对一般的模拟问题,模型用微分方程表达(方程中除含有自变量外,还有导数或偏导数—分布参数型可通过一些变换转换为集中参数型),而对一个常微分方程(只有线性的或几种特殊的能求出通解及特解,即解析解)一般来说求解析解是不可能的,(即使能求出解析解)在计算机上求解要用数值积分法:将连续的系统离散化,把微分方程转化为差分方程,通过迭代运算,求出问题的数值解。通过正确的控制步长、选择合理的算法即能达到要求的精度,这就是连续系统模拟的主要技术。 数值积分法种类很多,本章介绍几种简单常用的方法。 2.1 欧拉(Euler)法 f(t,y) f(tn,yn) y = 0 … tn-1 tn tn+1 tn+2 … t f(t,y(t)) 图2-1 欧拉法的几何意义 设连续系统的数学模型为 dy/dt = f (t,y) (2.1) y(0) = y0 为了模拟系统状态y随时间t的变化,需求解微分方程(2.1)的数值解(不是解析解),为此,把模拟周期分为若干小区间,比如分为N个相等的小区间,如图2-1所示。只须在每个离散的点上计算系统的状态。 在区间 (tn, tn+1)上求积分,得 y(t n+1) - y(tn) = 积分的几何意义是小曲边梯形的面积。 如果小区间取的足够小,则在区间 (tn, tn+1)之间的f (t,y)可近似的看成常数f(tn,yn),这样可用小矩形的面积代替小曲边梯形的面积,于是得在tn+1时的积分值为 y(tn+1) ≈ yn + f (tn,yn)·h = y n+1 (2.2) 其中h = T / N,将(2.2)式写为差分方程形式,得 yn+1 = yn + f (tn,yn)·h n = 0,1,2,… (2.3) 这就是欧拉公式:它是一个递推的差分方程,任何一个新的数值解yn+1均基于前一个数值解yn以及导数值f(tn,yn)求得,只要给出初始条件y0及步长h,就可算出y1,由y1可算出y2,如此迭代计算y3,y4,…,直到满足所需计算的范围。 欧拉法也叫折线法,特点是方法简单,计算量小,但计算精度也底。 扩展I:改进的欧拉法(梯形法) 为了提高计算的精度,可对欧拉法进行改进:从几何意义上看到,用小梯形的面积来代替小矩形的面积,必能提高精度。这样(2.3)式即可写成: yn+1 = yn + h / 2·[f (tn,yn) + f (tn+1,yn+1)] = yn + h / 2·[f n + f n+1] (2.4) 但(2.4)式是隐式公式,即公式右端含有yn+1,而这是未知的待求量,故梯形法不能自行启动运算,要借助于其它算法:如用欧拉法算出ypn+1作为梯形法中ycn+1的预估值,再进行计算,这样,公式可写为: 预估: ypn+1 = yn + f (tn,yn)·h 校正: ycn+1 = yn + h / 2·[f (tn,yn) + f (tn+1,ypn+1)] (2.5) = yn + h / 2·[f n + f pn+1] (2.5)式也称为预估校正法,计算量稍大(需要附加的计算),但精度要比欧拉法高,稳定性好。 扩展II:多个输入的多阶系统 在(2.1)式所表示的数学模型中,y是系统的状态,称之为状态变量,它随时间t而连续变化。(2.1)式是最简单的情况,只有一个状态变量,而它直接依赖时间而变化,在实际模拟中,状态变量可能不只一个,而影响系统状态的因素更多,这些因素是随时间变化的同,而系统状态的改变也正是由于这些因素随时间变化而变化。如在林木的生长系统中,要考察的状态可能有树高、胸径、材积等;在作物的生长系统中,考察的状态可能有株高、叶子的片数、叶子的宽度等,而影响系统状态的因素如水、肥、气候、土质、病虫害等,而这些因素都随时间而变化,如水份会随时间而被蒸发,肥会随时间被作物吸收,气候等自然环境更是随时间变化无常。所以与(2.1)式相应的数学模型应为: dyk / dt = f (x1(t), x2(t),…, xm(t), y1, y2,…, yq) k = 1,2,…,q (2.6) y k (0) = y k, 0 其中y k为系统状态变量,xi为系统输入信号,这样的系统称为具有m个输入、q阶系统。(2.6)式是q个微分方程的方程组,q个初始条件。 可以把(2.6)式表示成向量的形式,就和(2.1)式在形式上一致了:记Y为q个状态变量和向量,X为m个输入信号向量,即: Y = (y1(t), y2(t),…, yq (t)),X = (x1 (t), x2 (t),…, x m (t)) 则(2.6)式写为: dY/dt = f (X(t), Y) (2.6)’ Y(0) = Y0 对于(2.6)式所表达的数学模型,与(2.3)式相对应的欧拉公式为: y k, n+1 = y k, n + f (x1(t n), x 2 (t n),…, x m (t n), y1, n, y2, n,…, yq, n)·h (2.7) k = 1,2,…,q 或写成向量的形式: Yn+1 = Yn+f (X n , Y n)·h (2.7)’ 例2.1 设两种物质A和B合到一起产生化学反应,生成新物质C,假设1克A和1克B结合能产生2克C,形成C的速率与A和B的数量乘积成正比。同样C也可分解为A和B,C分解的速率正比于C的数量。问题:在给定A和B的数量后,模拟有多少C物质产生出来,以及达到稳定的时间。 解:在任何时刻,设a,b,c分别是A,B,C的数量,则它们增加和减少的速度服从下列微分方程: da / dt = k2 C - k1 a·b db /dt = k2 C - k1 a·b (2.8) dc / dt = 2 k1 a·b - 2 k2 C 其中k1和k2是比例常数(实际问题中k1和k2会随温度、压力等发生变化,但在模拟过程中为简化模型,可视为常数),是模型中的参数,- k1 a·b中的负号是因为A和B是减少的过程。假设模拟从t = t0(一般取0)开始,使t以△t时间间隔增加(由步长△t和模拟周期可定出所分时间段数),则相应的欧拉公式为(2.9)式。给出常数k1和k2值以及A、B、C的初始数量,即得迭代公式: a n+1 = a n + (k2 Cn - k1 an·bn)·△t b n+1 = b n + (k2 Cn - k1 an·bn)·△t c n+1 = c n + (2k1 an·bn - 2k2 Cn)·△t (2.9) a (0) = a 0 , b (0) = b 0 , c (0) = 0 k1 = k 1, 0 , k2 = k 2, 0 由(2.9)式,从t = 0开始,由a 0 、b0 、c 0 可算出a 1 、b1 、c 1,又可算出a 2 、b2 、c2,(a 2 = a(2△t)…),以△t为间隔,进行N = T/△ 次计算,就可算出周期T的系统状态,从而得出模拟结果。 根据数学模型(2.9)就
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服