计算机仿真技 术第三章 数值积分法在系统仿真中的应用.ppt_第1页
计算机仿真技 术第三章 数值积分法在系统仿真中的应用.ppt_第2页
计算机仿真技 术第三章 数值积分法在系统仿真中的应用.ppt_第3页
计算机仿真技 术第三章 数值积分法在系统仿真中的应用.ppt_第4页
计算机仿真技 术第三章 数值积分法在系统仿真中的应用.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 数值积分法在系统仿真中的应用,从控制理论中可知,对于一个连续时间系统可以在时域、频域中描述其动态特性。然而,在工程实际和科学研究中所遇到的实际问题往往很复杂,在很多情况下都不可能给出描述动态特性的微分方程解的解析表达式,多数只能用近似的数值方法求解。随着计算机硬件、软件的发展和数值理论的进展,微分方程的数值解方法已成为当今研究、分析、设计系统的一种有力工具。即使频域中的系统模型,也可以将其变换为时域中的模型。,第三章 数值积分法在系统仿真中的应用,本章重点讨论数值积分法在系统仿真中的应用,介绍其仿真算法及仿真程序的设计。第一节介绍在系统仿真中常用的几种数值积分法,并由此引出数值积分法的

2、误差分析方法。第二节讨论刚性系统的概念与仿真时要注意的问题。第三节研究实时仿真算法,它在半实物仿真中是至关重要的。第四节讨论分布参数系统仿真的数值积分算法。最后一节研究面向微分方程的仿真程序设计。,第三章 数值积分法在系统仿真中的应用3.1 在系统仿真中常用的数值积分法,3.1.1 欧拉法和改进的欧拉法 欧拉法是最简单的单步法,它是一阶的,精度较差。但由于公式简单,而且有明显的几何意义,有利于初学者在直观上学习数值是怎样逼近微分方程的精确解的,所以在讨论微分方程初值问题的数值解时通常先讨论欧拉法。 1递推方程 考虑初值问题 (3.1.1) 对式(3.1.1)式所示的初值问题的解是一连续变量的函

3、数,现在要以一系列离散时刻的近似值来代替,其中,称为步长,是相邻两点之间的距离。,若把方程(3.1.1)式在 区间上积分,则可得 (3.1.2) 上式右端的积分,一般是很难求出的,其几何意义为曲线 在区间 上的面积。当 充分小时,可用矩形面积来近似代替: 因此,(3.1.2)式可以近似为 写成递推式 (3.1.3) 因已知 ,所以由上式可以求出 ,然后求出 。依次类推,其一般规律为:由前一点 上的数值 可以求得后一点 上的数值 。这种算法称为单步法。又因为(3.1.3)式可以直接由微分方程(3.1.1)式的已知初始值 作为递推计算时的初值,而不需要其他信息,因此单步法是一种自启动算法。,2几何

4、意义 欧拉法的几何意义十分清楚。 通过点 做积分曲线的切线, 其斜率为 ,如图3.1.1所示。 此切线与过 平行于纵坐标 轴 的直线交点即为 ,再过 点 做积分曲线的切线 ,它与 过 平行于 轴的直线交点即为 。 这样可得一条过 , , ,各点的折线, 称为欧拉折线。 点 是位于方程(3.1.1)式的解曲线在点 的切线上,而不是在初值问题(3.1.1)式的解曲线上,更不是在解曲线 经过点 的切线上。,3误差分析 理论上由欧拉法所得的解,当时收敛于微分方程的精确解。由于一般都是以一定的步长进行计算的,所以用数值方法求得的解在点的近似值与微分方程之间就有误差。 数值仿真的误差一般分截断误差和舍入误

5、差两种。截断误差与采用的计算方法有关,而舍入误差则由计算机的字长所决定。,截断误差:将 在点进行台劳级数展开,即 将(3.1.4)式在 以后截断,即得(3.1.3)式的欧拉公式, 称为局部截断误差,它与 成正比,即 (3.1.5) 另外,解以 开始继续到 ,所积累的误差称为整体误差。一般情况整体误差比局部误差要大,其值不易估计。欧拉法的整体截断误差与成正比,即为 。,舍入误差:舍入误差是由于计算机进行计算时,数的位数有限所引起的,一般舍入误差与 成正比。最后得到欧拉法总误差表示 (3.1.6) 由(3.1.6)式可以看出, 步长h增加,截断误差 增加, 而舍入误差 减小。 反之,截断误差 减小

6、, 而舍入误差 加大。 其关系如图3.1.2所示。,图3.1.2 欧拉法误差关系,4稳定性 求解微分方程的另一个重要问题是数值解是否稳定。为了考察欧拉法的稳定性, 研究方程 为微分方程的特征根。 此方程的欧拉解为 (3.1.7) 显见,方程(3.1.7)是一个离散时间系统,因此根据离散时间系统的稳定性可知,在区域 中,系统(3.1.7)是稳定的,欧拉法也是绝对稳定的。,如果不满足 的条件,尽管原系统微分方程是稳定的,利用差分方程(3.1.7)式求得的数值解是不稳定的。所以利用欧拉法保证数值解是稳定的, 其步长限制条件是 (3.1.8) 分析欧拉法的几何意义、稳定性和误差的基本思想对其他数值积分

7、法也是适用的。,5改进的欧拉法(预测校正法) 对积分公式(3.1.2)式利用梯形面积公式计算其右端积分,得到 将上式写成 递推差分格式为 (3.1.9) 从(3.1.9)式可以看出,用梯形法计算(3.1.1)式时,在计算 中,需要知道 , 而 又依赖于 本身。因此,要首先利用欧拉法计算每一个预估的 ,以此值代入原方程(3.1.1)式计算 ,最后利用(3.1.9)式求修正后的 。,所以改进的欧拉法可描述为 预测 校正 (3.1.10) 欧拉法每计算一步只需对 调用一次。而改进的欧拉法由于加工校正过程,计算量较欧拉法增加一倍,付出这种代价的目的是为了提高计算精度。,3.1.2龙格库塔法 欧拉法是将

8、 在 点附近的 经台劳级数展开并截去 以后各项得到的一阶一步法,所以精度较低。如果将展开式(3.1.4)式多取几项以后截断,就得到精度较高的高阶数值解,但直接使用台劳展开式要计算函数的高阶导数。龙格库塔法是采用间接利用台劳展开式的思路,即用在n个点上的函数值f的线性组合来代替f的导数,然后按台劳展开式确定其中的系数,以提高算法的阶数。这样既能避免计算函数的导数,同时又保证了计算精度。由于龙格库塔法具有许多优点,故在许多仿真程序包中,它是一个最基本的算法之一。,1显示龙格库塔法 对于初值问题(3.1.1)式,假设其精确解是充分光滑的,故可将其解 在附近用台劳级数展开,即 (3.1.11) 依据偏

9、导数关系 (3.1.12) 将式(3.1.12)式代入(3.1.11)式,得,又设原问题的数值解公式为 (3.1.14) 式中: 待定的权因子; 解公式的阶数; 不同点的导数和步长的乘积; 待定系数,而且 。 方程(3.1.13)式和(3.1.14)式是两个基本方程,由此可以导出不同阶次的龙格库塔公式。,当 时,由(3.1.13)式可得 (3.1.15) 由(3.1.14)式可得 (3.1.16) 比较(3.1.15)式和(3.1.16)式得 。故一阶龙格库塔公式为 (3.1.17) 当 时,由(3.1.14)式可得 (3.1.18),根据二元函数台劳公式,可将 在 附近展开为 将 代入(3.

10、1.18)式的 中,整理得 将所得各项与(3.1.13)式同类项的系数比较,有 =1 取 ,得 = =,故得二阶龙格库塔法计算公式 (3.1.19) 由于(3.1.13)式中只取了 , 两项,而将 以上的高阶项忽略了,所以这种计算方法的截断误差正比于 。,图3.1.3所示是二阶龙格库塔法的几何表示。 图中: 是 点的切线, 其斜率为 ; 是 点 以 为斜率做的直线, 现取 为斜率,在 点做切线L,图3.1.3 二阶龙格库塔法几何表示 则 处的近似解位于切线L上。,显然,由于下一时刻的变化量并不是取前一时刻的变化率与步长的乘积,而是取了 及 两时刻的斜率平均值与步长相乘,所以计算精度比欧拉法高。

11、 利用(3.1.14)式仿照上述完全相同的方法,对(3.1.1)式给出的初值问题,可得三阶、四阶龙格库塔公式。 三阶龙格库塔公式: (3.1.20),四阶龙格库塔公式: (3.1.21) 对于大部分实际工程问题,四阶龙格库塔公式已可满足要求,它的截断误差正比于 。四阶龙格库塔法除了计算精度较高外,还具有一些其他的优点,如编程容易,稳定型号,能自启动等,故在系统仿真中得以广泛的应用。,2龙格库塔法的稳定区域 前面,以一阶微分方程为例,研究了欧拉法的稳定区域。现在仍采用 一阶方程,用类似的方法分析各阶龙格库塔公式的稳定区域。 将方程 做台劳级数展开,可得 (3.1.22) 当 时,有 ,并代入(3

12、.1.22)式。得 (3.1.23),令 ,代入(3.1.23)式可得使该式稳定的条件为 (3.1.24) 根据由(3.1.24)式确定的稳定条件,表3.1.1给出了各阶龙格库塔公式的稳定条件。 在使用龙格库塔公式中,选取步长 应使 落在稳定区域内。如果选用的步长 超出了稳定区域,在计算过程中会产生很大的误差,从而得到不稳定的数值解。这种对积分步长有限制的数值积分法称为条件稳定积分法。另外,还可以看出,步长 的大小除与所选用算法的阶数有关外,还与方程本身的性质有关。从四阶龙格库塔法稳定条件 中可以得出,系统的特征根越大,需要的积分步长就越小。这一点可以作为选择步长 的依据。数值积分步长的选择是

13、一个重要的问题,又是一个较为复杂的问题,在很大程度上取决于仿真工程师的经验。,3.1.3 线性多步法 以上所述的数值解法均为单步法。在计算中只要知道 , 的值可递推算出 。也就是说,根据初始条件可以递推计算出相继各时刻的值,所以这种方法都可以自启动。这部分要介绍的是另一类算法,即多步法。用这类算法求解时,可能需要 及 在 , , ,各时刻的值。显然多步法计算公式不能自启动,并且在计算过程中占用的内存较大,但可以提高计算精度和速度。 一、亚当斯贝希霍斯显式多步法 为了解决(3.1.2)式中的积分问题,采用亚当斯贝希霍斯显式多步法,简称亚当斯法,它是利用一个插值多项式来近似代替 。,如果 在点以前

14、的 个节点上,用多项式 近似表示 , 称为多项式阶数。根据牛顿后插公式 (3.1.25) 其中: (3.1.26),并设 ,用 近似代替(3.1.2)式中的 ,经过简单的推导,可得亚当斯多步法的计算公式为 (3.1.27) 其中: (3.1.28) 在(3.1.27)式中,当 时,可得欧拉公式,当 时,得到二阶亚当斯多步法的计算公式,(3.1.28)式各系数为 将 , 代入(3.1.27)式得 (3.1.29) 当 时,(3.1.29)式的系数 为 故可得三阶亚当斯公式,整理上式得 (3.1.30) 由(3.1.29)和(3.1.30)两式可看出,如果在点 已知 ,那么以后求得的 的值是 步以

15、前各导数的线性组合,各导数都以显式形式出现在(3.1.29)或(3.1.30)式中,所以称为显式线性多步法。 图3-4是二阶亚当斯公式的程序框图,并给出用c语言编写的程序,使用时,只需编写主程序和求导数的子程序。,子程序: 计算导数子程序,图3.1.4 二阶亚当斯程序框图,二、亚当斯莫尔顿隐式多步法 根据插值理论可以得出,插值节点的选择对精度有直接的 影响。同样阶数的内插公式比外插公式更为精确。 牛顿前插公式为,(3.1.31) 其中,为向前插分算子,定义为,(3.1.32),用牛顿前插公式近似代替(3.1.2)式中的 ,仿照显式多步法的推导过程,可以得到亚当斯莫尔顿隐式多步法的计算公式 (3

16、.1.33) 其中系数 的值见表3.1.2。 如果将亚当斯方法的显式公式与隐式公式联合使用,前者提供预测值,后者将预测值加以校正,使其更精确,这就是预测校正法。常用的四阶亚当斯预测校正法的计算公式为 预测: (3.1.34) 校正: (3.1.35),计算步骤为 利用单步法计算(3.1.34)式中的附加值 。 计算预测值 。 计算 。 计算 。 预测校正法的程序框图如图3.1.5所示。,表3.1.2 隐式 多步法系数表,3.1.4 Matlab语言中的常微分方程求解指令和使用方法 在Matlab语言中提供许多求解各种类型常微分方程的不同算法,如ode23、0de45、ode23s等。命令ode

17、45采用由德国学者Felhberg对Runge-Kutta方法的改进算法,它经常称为5阶龙格-库塔-费尔别格法。它的计算公式为一个5阶6级方法,即在每一个计算步长内对右函数进行六次求值,以保证更高的精度和数值稳定性。另外用一个4阶5级方法求 ,就是用 来估计误差。这一套计算公式被认为是对非刚性系统进行仿真最为有效的方法之一。由于它是5阶精度、4阶误差,因此称为四阶/五阶Runge-Kutta-Felhberg(RKF)方法,简称为RKF45法。对方程(3.1.1),假设当前的步长为 ,则定义下面的6个 变量 (3.1.36) 式中 为当前计算时刻,而中间参数 及其它参数由表x给出。,这样,下一

18、步 状态变量可以 由下式求出,图3.1.5 预测校正法 程序框图,当然直接采用这一方法是定步长方法,而在Matlab语言中使用的ode45指令采用的是变步长解法,并引入 (3.1.37) 误差量来控制步长的大小。,1978年,Shampine提出一套改进的龙格-库塔公式,它每步只计算4次右函数却能够获得4阶精度与3阶误差估计,简称为RKS34算法。具体公式如下: (3.1.38) 其中: 另外,引入了一个3阶公式,其中: 正好是下一次计算 时的 ,因此只是在第一步要多计算一次右函数 ,以后仍每步计算4次右函数 。RKS34算法的误差估计为: (3.1.39) ODE解函数: Ode45: 此方

19、法被推荐为首选方法。 Ode23: 这是一个比ode45低阶的方法。 Ode113: 用于更高阶或大的标量计算。 Ode23t: 用于解决难度适中的问题。 Ode23s: 用于解决难度较大的微分方程组。对于系统,中存在常量矩阵的情况也有用。 Ode15s: 与ode23相同,但要求的精度更高。 Ode23tb:用于解决难度较大的问题,对于系统中存在常量矩阵的情况也有用。 其实,对常微分方程来说,初值问题的数值解法是多种多样的,除了这里介绍的RKF方法外,比较常用的还有Euler法、Adams法、Gear法,它们的侧重应用范围不一样,一些方法侧重于一般问题的仿真,而另一些方法侧重刚性方程的仿真。

20、在Simlink环境中,以内部函数的方式实现了其中一些仿真算法。相关的算法我们将在以后介绍。 参数选择函数: odeset:产生/改变参数结构。 odeget:得到参数数据。,有许多设置对odeset控制的ODE解是非常有用的,读者可以参见该指令的帮助文件。 输出函数: odeplot: 时间列输出函数。 odephas2: 二维相平面输出函数。 odephas3: 三维相平面输出函数。 odeprint: 命令窗打印输出函数。 例3.1.1: 利用ode45求解下面方程组: 这个方程组用在人口动力学中。可以认为是单一化的捕食者-被捕食者模式。例如,狐狸和兔子。 表示被,捕食者, 表示捕食者。

21、如果被捕食者有无限的食物,并且不会出现捕食者。于是有 ,这个式子是以指数形式增长的。大量的被捕食者将会使捕食者的数量增长;同样,越来越少的捕食者会使被捕食者的数量增长。 创建fun函数,将此函数保存在M文件fun.m中: function fun=fun(t,x) fun=x(1)-0.1*x(1)*x(2)+0.01*t; -x(2)+0.02*x(1)*x(2)+0.04*t; 然后在Matlab的命令窗口中调用ode45指令或类似指令和画出解的图形: t,x=ode45(fun,0,20,30;20); plot(t,x); xlabel(time t0=0,tt=20); ylabel

22、(x values x1(0)=30,x2(0)=20); grid,得到图3.1.6,图3.1.6 由函数fun定义的微分方程解的图形,在工程实践中,在研究化工系统、电子网络、控制系统中,常常会碰见这样的情形:一个高阶系统中常由不同的时间常数相互作用着。以惯性导航为例,修正回路时间常数大,稳定回路时间常数小。导弹、鱼雷等航行器的运动也是如此,质点运动较慢,偏航与俯仰运动较快。所有这些现象,主要是由于系统模型中的一些小参数,如小时间常数、小质量等存在而引起的。描述这种系统的微分方程,在数学上常常称为刚性方程,这种系统就称为系统。,第三章 数值积分法在系统仿真中的应用 3-2 刚性系统的特点及算

23、法,现以二阶微分方程组为例,讨论刚性系统以及它在数值求解上的特点。 (3.2.1) 满足初始条件 的解为 (3.2.2) 其中 为 的两个特征值。 于是方程(3.2.2)的解由对应于 和 的分量组成,但由于 对应系统的最小时间常数,它很快地便无足轻重。表3.2.1给出系统(3.2.1)的解方程(3.2.2)的具体数值。其中 表示忽略最小时间常数 时,系统的简化解。,表3.2.1 系统(3.2.1)的解,从表3.2.1可以看出,系统(3.2.1)在0.01秒时,系统的精确解和简化解几乎一致,也就是说,在0.01秒以后,我们可以完全忽略 ,精确系统和简化系统是没有差别的。但在 初始时刻,简化系统的

24、初始条为 ,精确系统和简化系统差别是非常大的,我们又不能够忽略 的影响。这就是系统的边界层效应,即奇异摄动系统。 对于代数方程也同样存在刚性的问题,例如方程 (3.2.3) 该方程的解为: 。如果将 摄动为 ,则方程的解就变为 , 。显见,由于 摄动引起解的摄动就比较大。我们看方程的系数矩阵地特征值为-0.00934和-10.709,两个特征值的比很大。,一个刚性系统可以这样描述,对于 阶微分方程组 (3.2.4) 其中 为 维向量,其系统的雅可比矩阵定义为: 的特征值实部表示系统衰减的速率,其最大特征值和最小特征值实部之比,即 (3.2.5) 作为系统刚性程序的度量。当 的值很大时系统称为刚

25、性系统,或称为 系统。但 值具体多大才称系统为刚性系统,要根据具体的物理系统和仿真算法来定。,从前一小节我们知道,从数值解稳定性的要求出发,希望计算步长比较小,即 需要小于一个小量,而这个 应该是系统的最大特征值。例如,对于欧拉法来说,这个量就是1000,所以 ,因此 的最大值只为 . 虽然对于对应 的解分量,很快就没有实际价值了。但是在整个积分区间,由于受到绝对稳定的限制, 又必须取得很小。而解的总时间又取决于最小的特征值 。因此当一个系统的矩阵的特征值范围变化很大时,数值求解会引起很大的困难。 由此我们可以看到,对于这样的系统做数字仿真,其最大的困难是:积分步长由最大的特征值来确定,最小的

26、特征值决定数值求解总的时间。例如,一个系统的 ,则用四阶龙格库塔法求解步长 ,即积分 需要的步数 ,这样大的计算工作量将带来很大的舍入误差。所以刚性方程在实践中的普遍性和重要性已得到广泛的重视,这种方程的数值解已成为常微分方程数值求解研究的重点。,微分方程数值解中对步长 的限制并不是物理本质上的原因,它仅是为保证数值解稳定而采取的措施。而刚性方程求数值解时,要解决稳定性和计算次数的矛盾,就应对 不加限制。 到目前为止,已提出不少解刚性方程的数值方法,基本上分为:显式公式,隐式公式和预测校正型。 显示公式常用雷纳尔法。其着眼点是,在保证稳定的前提下,尽可能地扩大稳定区域。这一方法的优点是,它是显

27、式的,所以便于程序设计。对一般条件好的方程,它就还原为四阶龙格库塔方法,而对刚性方程它又有增加稳定性的好处。,众所周知,隐式方程都是稳定的,故都适合于解描述刚性系统的方程组,如隐式的龙格库塔法。但这种方法每计算一步都需要进行迭代,故计算量大,在工程上使用有一定困难。因此在解刚性方程时,常采用 提出的半隐式龙格库塔法。 预测校正型中常用的解刚性方程的方法是 算法。 首先引进刚性稳定性的概念,它可以满足稳定性,而降低对 的要求。 方法是一个通用的方法,它不仅适用于解刚性方程组,而且也适用于解非刚性方程组。 关于以上方程的详细描述可参看有关资料。,第三章 数值积分法在系统仿真中的应用3-3 实时仿真

28、算法,前两节介绍的微分方程数值积分法,主要是针对非实时仿真应用的。但是在半实物仿真中和计算机控制中,此时因为有实物介入整个仿真系统,因此要求计算机中的仿真模型的仿真时间,必须与所介入的实物运行时间相一致。这时,计算机接收动态输入,并产生实时动态输出。计算机的输入与输出通常为固定采样步长 的数列。假设在计算机上仿真的连续动力学系统由下列非线性常微分方程描述: (3.3.1),其计算机的输入序列是 ,由实物经计算机的输入接口输入给计算机 , 。计算机从时刻 开始,根据用户所采用的不同仿真算法,利用 和 时刻以前的数值计算出 。很明显,实物仿真算法的第一个要求是计算机求解方程(3.3.1)式一步解

29、所需要的实际时间必须等于或少于 秒,以便与实物的运行时间同步。第二式计算机在 时刻求解方程时,不能要求从实物上取得 时刻的值,即计算机的输入也必须满足实时仿真的条件,这是必需的。比如,前面介绍的龙格库塔法仿真计算公式是不适用于实时仿真的。 对系统(3.3.1)式采用二阶龙格库塔公式求解,其递推方程可写为 (3.3.2),为函数,外部输 入为 。由于算法 在一个仿真步长中 计算两次右函数, 所以可假定在 时间 内计算机正在计算 右函数 。因此, 整个计算流程如图3.3.1。 图3.3.1 RK-2的计算流程 即由于当 , 才具备计算 的条件。所以 要到 时才能计 算出来,并输入到外部设备,也就是

30、说,计算机输出要迟后半个计算步距。 与此类似,四阶龙格库塔公式也不适用于实时仿真。读者可自行分析。,为了适用于实时仿真计算,一般经常采用以下方法。 选择Adams多步法。因为在这类算法中,为计算,只要求知道和以前的各类右函数。对于以前的各类右函数值可以事先存储于内存中;而时刻的右函数和外部输入,均可在这一段时间内计算出来,或由外部设备输入给计算机,所以不会被延迟。如果用隐式算法,可用显式法计算预估值。, 合理地选择龙格库塔计算公式中的系数,使之适用于实时仿真。在方程(3.1.18)式中,令 可得 ,此时,(3.3.2)式化为 (3.3.3) 图3.3.2 实时RK-2 的计算流程 其计算流程图

31、如图3.3.2所示。,下面给出一个高阶的龙格库塔法计算公式,供读者选用: (3.3.4), 利用已知取得的值进行外推,例如,在二阶龙格库塔公式(3.3.2)式中,为避免 的迟后,可以在 时利用 和 等值来外推 。若 能在 时刻外推出来,那么 就可以在 时计算出来。有关外推算法计算公式很多,读者可参看有关的计算方法书籍。为了便于读者选用,在此给出几个递推公式: (3.3.5),采用外推算法不仅会带来附加误差,还要增加计算量,所以比较下来还是选择实时算法为佳。 由于实时仿真一般不采用变步长方法,即不采用估计每步误差,去控制计算机步长,而是采用定步长,所以,某一计算方法在选取某一步长后,应对所可能引

32、起的动态误差做定量的分析,以决定所选用算法的阶次和步长是否合适。这种动态误差分析是一件非常困难的工作,尤其是对非线性系统。有兴趣的读者可参考有关文献。,第三章 数值积分法在系统仿真中的应用3.4 分布参数系统的数字仿真,前面介绍的是常微分方程(ODE)的数字仿真以及模型,它们属于集中参数性质。但是有相当一类动力学问题属于分布参数性质,比如热传导问题,振动问题等,描述这类问题需要用偏微分方程(PDE)形式。本书除介绍PDE模型的基本性质外,还将介绍PDE的数值解法及其仿真等内容。,3.4.1 模型形式和性质 研究PDE的人,最先感受到的是两点:首先是PDE形式比ODE形式更为自然,对物理世界的描

33、述能力更强。事实上,人类宇宙是由空间和时间组成的,因而其特性将随着这些变量而变化。在ODE描述的集中系统理论中,则认为物理世界是由一个以某种特定方式相互连接的不同元素的阵列组成的。元素的物理维数和位置并不直接影响系统性能分析。但在有一些情况下,却不能用简便的集中元素思想,而必须考虑真实世界系统的分布特性,即空间和时间的分布,如电磁学结构分析、热和质量的传递、大地勘探、天气预报等。,其次是PDE形式的复杂性。必须认识到,分布参数系统问题比集中系统问题在处理上难得多。在ODE情况下,人们可以借助于计算机技术来解决难以分析的问题。而对于PDE,现有的计算能力还差得很远。除早期的有限插分法外,近年来,

34、又研究出许多其他方法。线上法是将PDE变换成一组ODE来求解。模型逼近法是将PDE的解看成由一个无限级数所组成。此外还有近似变换法、数值积分法等。但尽管如此,由于PDE是建立在物理世界的时空观基础上的,计算能力还是受到维数太大的影响。例如,天气预报,必须在一个二维的地球表面范围内,在许多高度上、许多时间间隔上,求解天气方程组。若将近似网格折半,就意味着表面点数呈4倍、时间间隔,点数呈2倍、高度平面点数呈2倍的计算法复杂性上升。研究一个433km网格的半球24h的天气预报问题,平均需要约 次数值运算。若将近似网格再折半,其计算量将再增加16倍。由此可见PDE的计算工作量之大。 若只用一阶微分,对

35、于确定的情况,其PDE具有如下的形式: (3.4.1) 从方程(3.4.1)可明显地看出,除了时间变量外,还有 个空间独立变量,即 。该开连通集Z称为“场”,虽然场对物理世界的描述更自然些,但其解法令人望而生畏。,限于本书的研究范围,我们仅考虑由(3.4.2)式所描述的系统仿真问题,其他问题可类似求解。 (3.4.2) (3.4.3) (3.4.4) 显然,也应满足相容性条件,即 此问题也经常称为热传导的第一边值问题。,3.4.2差分解法 为了对由PDE所描述的分布参数系统进行仿真,核心问题是对PDE进行数值求解。差分解法是常用的方法之一。它是在时间与空间两个方向将变量离散化,因而得到一组代数

36、方程。若利用已经给出的初始条件及边界条件逐排求解,则可将系统中的状态任意时刻、任一空间位置上的值全部计算出来。 以(3.4.2)式为例,为了用有限差分法求解上述问题,将求解区域G: , 用二族平行于坐标轴的直线 (3.4.5),分割成矩形网格 , 如图3.4.1所示, 其中 分别为 方向 和 方向的步长; 交点 称为节点。 在 上,全体节点 称为差分 网格的第 层。 图3.4.1 平面矩阵网格图 假定对所要求的解 有足够的光滑性,用 分别表示边值问题(3.4.2)式的,解 及其偏导数 , 在节点 处的值。构造逼近(3.4.2)式的差分格式的一种简单方法是根据泰勒展开的“逐项逼近法”,即用适当的

37、差商逐项去逼近(3.4.2)式中相应的微商。 一 显式差分格式 如果逼近式取 (3.4.6) (3.4.7),将(3.4.6)、(3.4.7)式代入(3.4.2)式,并舍去截断误差项,则得差分方程 (3.4.8) 这一差分方程的逼近误差为 ,称此逼近关于 是一阶的,关于 是二阶的。初始条件和边界条件(3.4.2)式也需相应的逼近,即 (3.4.9) (3.4.10) 于是,(3.4.9)、(3.4.10)式构成逼近边值问题(3.4.2)、(3.4.3)式的差分格式,以(3.4.8)式可解出,(3.4.11) 其中 。 由(3.4.11)式可以看出,第 层任一内节点处的值 可以由3个相邻节点处的

38、值 , , 决定。如图3.4.1所示。显然,方程组可以按 方向逐层求解。由于这种格式关于 可以明显解出来,因此称为显格式。,二、隐式差分格式 如果在节点作如下逼近: (3.4.12) (3.4.13) 将它们代入(3.4.2)式并略去截断误差,则得 (3.4.14),这一格式的逼近误差为 。它同(3.4.9)、(3.4.10)式联立即第二种差分格式,和(3.4.9)(3.4.11)式一样可以简写为 (3.4.15) (3.4.9)、(3.4.10)、(3.4.15)式是关于 层上未知量 的联立线性方程组,它的求解不像显格式那样简单,需用求解线性代数方程组的办法(例如追赶法)去解。由于这种格式不

39、能直接明显地解出 ,因此称为隐格式。 以后将看到,隐格式的最大优点是无条件稳定的,如把它和显格式(3.4.10)、(3.4.11)式相结合,还可以构成无条件稳定,而且逼近阶次更高的六点对称格式。,三、六点对称格式 如果把差分方程(3.4.7)和(3.4.14)式结合起来,做它们的线性组合,可得一新的差分方程 (3.4.16) 此差分方程用到相邻两层6个节点上的函数值,通常叫六点差分方程,(3.4.9)、(3.4.10)、(3.4.16)式称为六点差分格式。当 时的情况特别重要,称为六点对称差分格式。这时差分方程(3.4.16)式简化为 (3.4.17) 它可以看做对点做中心差商的结果。由于 (

40、3.4.18),因此格式(3.4.17)式的截断误差为 ,即对的逼近阶次已提高一次。下面还会看到,这种格式还是无条件稳定的,因此得到广泛的应用。 六点对称格式(3.4.17)、(3.4.19)、(3.4.10)式可简写为 (3.4.19) 它对于 可以用逐次追赶法求解。,四、差分格式算法的稳定性和收敛性 采用差分格式求解PDE时,若时间步长 和空间 步长选择不合适,就有可能产生数值计算发散的现象,即也存在稳定问题。对于PDE数值解的稳定性问题,可以参照数值积分法中有关稳定性分析的方法来研究。在此不加证明地给出三个有关稳定性的定理。 定理3.4.1 差分格式(3.4.11)、(3.4.9)、(3

41、.4.10)式是稳定的充要条件为 满足不等式 。 定理3.4.2 差分格式(3.4.15)、(3.4.9)、(3.4.10)式对任何 的值都是稳定的,即它是无条件稳定的。 定理3.4.3 差分格式(3.4.16)、(3.4.9)、(3.4.10)式当 时,稳定性条件是 ;而当 时,则它是无条件稳定的。 定理4是关于差分格式的收敛性的。 定理3.4.4 假设边值问题(3.4.2)、(3.4.3)、(3.4.4)式的解 在区域G中存在并连续,且具有有界的偏导数 则差分格式(3.4.15)、(3.4.9)、(3.4.10)式的解 收敛于边值问题的解 。,3.4.3 线上求解法 偏微分方程的另一种解法

42、是线上求解法,或称连续离散空间法。它是将偏微分方程的空间变量X进行离散化,而时间变量仍保持连续,因此可将偏微分方程转化为一组常微分方程。由于对常微分方程可利用已知的数值解法来求解,特别是可以利用已经编制好的各种仿真程序来求解,所以线上求解法被广泛用于分布参数系统的仿真。 今仍以方程(3.4.2)为例。若将 轴以 为步长分布 份,即 ,则有 (3.4.20),共 个常微分方程。其中 可以用差分来近似,即有 (3.4.21) (3.4.20)式中的 将(3.4.21)式代入(3.4.20)式,可得个常微分方程 (3.4.22) 只要求出 ,就可很方便地解出这 个常微分方程。比如用欧拉法,则有 (3

43、.4.23) 其中 可由初始条件求出;而 则可由初始条件及边界条件求得。,实际上,只要写出如(3.4.22)式的微分方程,则调用任何一种微分方程数值求解程序均可。由于首先是求出 这一时刻空间各点 的值,然后再求出 这一时刻空间各点的值,因此被称为线上求解法。 线上求解法的具体步骤可归结如下: 将空间变量从起始点到终点分成 份; 用差分来近似对空间变量求导(这里要利用边界条件); 从起始时间开始,利用给定的初始条件用数值积分法求出下一时刻空间各点的函数值; 用差分来近似对空间变量的求导; 计算下一时刻空间各点的函数值, 重复、两步,直到规定的时刻为止。 可见,采用线上 求解法完全可以利用 原有的

44、数值积分法和 系统仿真程序,而只 要增加一些差分计算 子程序即可。图3.4.2 是线上求解法仿真 程序框图。 图3.4.2 线上求解法仿真程序框图,线上求解法的优点是方法直观,程序简单,比较容易被工程技术人员所掌握。但它也有不足,主要是: 误差不易控制。数值积分法由于有误差估计,可以用改变积分步长使计算精度限制在某个范围,但线上求解法所引起的误差不易估计,所以整个系统仿真的精度就难以控制。 差分公式很多,在使用时选择哪一种公式不仅会影响计算精度,而且会影响计算时间。因此要根据问题的需求和计算机的字长做出选择。 空间离散的间距取多大也是线上求解法的一个重要问题,同样也要根据计算的精度和仿真时间的

45、要求来选择。 总之,线上求解法对于比较熟悉常微分方程系统仿真的工程技术人员来讲,是一种比较简单方便的方法。有兴趣的读者可以参考有关偏微分方程的数值解方面的文献。,3.4.4 Matlab语言在偏微分方程解法中的应用 鉴于偏微分方程数值解在科学研究和数学计算中越来越主要的地位,本小节将介绍Matlab中专门用来求解偏微分方程的软件包PDE Toolbox。由于篇幅所限和教材内容的原因,以及偏微分方程解法本身的复杂性,我们仅对一些简单的、基本的算法和指令给出解法算例。更深入的内容读者可以参考PDE Toolbox的帮助文件和其它参考书。,一 偏微分方程组求解 Matlab使用指令pdepe( )求

46、解由方程(3.4.1)描述的一阶偏微分方程组,但是为了统一起见,在Matlab语言中将这样的一阶偏微分方程的两点边值问题统一描述为: (3.4.24) 其中: 0、1或2分别对应平面、圆柱和球形。 的对角元素为零或正数。利用Matlab指令求解该方程,首先必须建立描述方程(3.4.24)结构、边界条件和初始条件的三个m文件。, 描述偏微分方程的函数。该m文件的格式为 functionc,f,s=pdefun(x,t,u,ux) 其中ux是u对x的偏导数。该文件返回列向量 。 描述边界条件的函数。方程的边界条件是 和 ,间隔必须是有限的。如果 , 则 。另外必须首先将边界条件写成统一格式,为 (

47、3.4.25) 描述该边界条件的m文件格式为: functionpa,qa,pb,qb=pdebc(x,t,u,ux), 描述初值的函数。因为一般偏微分方程的初始 条件仅与方程的状态有关,故描述初值的m文件格 式为 function u0pdein(x) 完成上述三个m文件后,在调用求解指令前还必须对方程的状态和时间作网格化处理,即 例如:x=0:0.05:1; t=0:0.05:2; 偏微分方程的求值可以利用指令pdepe( ),调用格式为 sol =pdepe(m,pdefun,pdebc,pdein,x,t); 利用绘图指令,如surf可以绘出方程(3.4.24)解。,例3.4.1:利用

48、Matlab语言求解偏微分方程 (3.4.26) 其中: 初始条件: 边界条件:,解:首先将(3.4.26)改写如方程(3.4.24)描述的标 准格式: 显见: 并且: , , 描述偏微分方程(3.4.26)的Matlab的m文件函数可以写成: function c,f,s=pdefun(x,t,u,du) c=1;1; y=u(1)-u(2);,F=exp(5.73*y)-exp(-11.46*y); s=F*-1;1; f=0.024*du(1);0.17*du(2); 再将方程的边界条件写成如式(3.4.25)那样的标准格式。 左边界: ,右边界: 描述偏微分方程(3.4.26)的边界条

49、件的Matlab的m文件函数可以写成: functionpa,qa,pb,qb=pdebc(xa,ua,xb,ub,t) pa=0;ua(2);,qa=1;0; pb=ub(1)-1;0; qb=0;1; 方程的初始条件描述函数为 function u0=pdein(x) u0=1;0; 做完上述工作后,在Matlab命令窗口键入以下命令就可以完成计算 x=0:0.05:1; t=0:0.05:2; m=0; sol=pdepe(m,c7mpde,c7mpic,c7mpbc,x,t); surf(x,t,sol(:,:,1) 其中命令surf是图形显示,方程(3.4.26)的解图形如图3.4.

50、3所示,二、二阶偏微分方程的数学描述和求解 (1) 二阶偏微分方程的数学描述 我们首先使用在场论中经常使用的几个定义: 梯度 (3.4.27) 其中: 称为哈密顿算子 散度 (3.4.28) 梯度和散度的混合运算可以写成,图3.4.3 方程(3.4.26) 的解曲面 (3.4.29) 如果 为常数,则(3.4.29)式可以简化为 (3.4.30),式中的 称为Laplace算子。 在此定义下我们再考虑几种常见的偏微分方程的数学描述。 椭圆型偏微分方程: 椭圆型偏微分方程的一般表示形式为 (3.4.31) 其中: 如果 为常数,椭圆型偏微分方程(3.4.31)可以写成 (3.4.32), 抛物线

51、型偏微分方程: 抛物线型偏微分方程的一般形式为 (3.4.33) 如果 为常数,抛物线型偏微分方程(3.4.33)可以写成 (3.4.34), 双曲型偏微分方程: 双曲型偏微分方程的一般形式为 (3.4.35) 如果 为常数,双曲型偏微分方程(3.4.35)可以写成 (3.4.36), 特征值型偏微分方程: 特征值型偏微分方程的一般形式为 (3.4.37) 如果 为常数,特征值型偏微分方程(3.4.35)可以写成 (3.4.38),(2) 应用Matlab求解二阶偏微分方程的基本方法 利用Matlab求解二阶偏微分方程的一般有以下步骤 题目定义:由方程(3.4.33)和(3.4.35)可以看出,参量 是二阶偏微分方程的主要参量,只要这几个参量确定,就可以定下偏微分方程的结构。此外要做的事是确定偏微分方程的求解区

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论