




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机仿真技术第三章数值积分法在系统仿真中的应用第三章数值积分法在系统仿真中的应用
本章重点讨论数值积分法在系统仿真中的应用,介绍其仿真算法及仿真程序的设计。第一节介绍在系统仿真中常用的几种数值积分法,并由此引出数值积分法的误差分析方法。第二节讨论刚性系统的概念与仿真时要注意的问题。第三节研究实时仿真算法,它在半实物仿真中是至关重要的。第四节讨论分布参数系统仿真的数值积分算法。最后一节研究面向微分方程的仿真程序设计。第三章数值积分法在系统仿真中的应用
3.1在系统仿真中常用的数值积分法3.1.1欧拉法和改进的欧拉法欧拉法是最简单的单步法,它是一阶的,精度较差。但由于公式简单,而且有明显的几何意义,有利于初学者在直观上学习数值是怎样逼近微分方程的精确解的,所以在讨论微分方程初值问题的数值解时通常先讨论欧拉法。1.递推方程考虑初值问题
(3.1.1)对式(3.1.1)式所示的初值问题的解是一连续变量的函数,现在要以一系列离散时刻的近似值来代替,其中,称为步长,是相邻两点之间的距离。若把方程(3.1.1)式在区间上积分,则可得
(3.1.2)上式右端的积分,一般是很难求出的,其几何意义为曲线在区间上的面积。当充分小时,可用矩形面积来近似代替:因此,(3.1.2)式可以近似为写成递推式
(3.1.3)
因已知,所以由上式可以求出,然后求出。依次类推,其一般规律为:由前一点上的数值可以求得后一点上的数值。这种算法称为单步法。又因为(3.1.3)式可以直接由微分方程(3.1.1)式的已知初始值作为递推计算时的初值,而不需要其他信息,因此单步法是一种自启动算法。2.几何意义欧拉法的几何意义十分清楚。通过点做积分曲线的切线,其斜率为,如图所示。此切线与过平行于纵坐标轴的直线交点即为,再过点做积分曲线的切线,它与过平行于轴的直线交点即为。这样可得一条过,,,…各点的折线,称为欧拉折线。点是位于方程(3.1.1)式的解曲线在点的切线上,而不是在初值问题(3.1.1)式的解曲线上,更不是在解曲线经过点的切线上。3.误差分析理论上由欧拉法所得的解,当时收敛于微分方程的精确解。由于一般都是以一定的步长进行计算的,所以用数值方法求得的解在点的近似值与微分方程之间就有误差。数值仿真的误差一般分截断误差和舍入误差两种。截断误差与采用的计算方法有关,而舍入误差则由计算机的字长所决定。截断误差:将在点进行台劳级数展开,即
将(3.1.4)式在以后截断,即得(3.1.3)式的欧拉公式,称为局部截断误差,它与成正比,即
(3.1.5)
另外,解以开始继续到,所积累的误差称为整体误差。一般情况整体误差比局部误差要大,其值不易估计。欧拉法的整体截断误差与成正比,即为。
舍入误差:舍入误差是由于计算机进行计算时,数的位数有限所引起的,一般舍入误差与成正比。最后得到欧拉法总误差表示
(3.1.6)由(3.1.6)式可以看出,步长h增加,截断误差增加,而舍入误差减小。反之,截断误差减小,而舍入误差加大。其关系如图所示。图3.1.2欧拉法误差关系4.稳定性求解微分方程的另一个重要问题是数值解是否稳定。为了考察欧拉法的稳定性,研究方程为微分方程的特征根。此方程的欧拉解为
(3.1.7)
显见,方程(3.1.7)是一个离散时间系统,因此根据离散时间系统的稳定性可知,在区域中,系统(3.1.7)是稳定的,欧拉法也是绝对稳定的。
如果不满足的条件,尽管原系统微分方程是稳定的,利用差分方程(3.1.7)式求得的数值解是不稳定的。所以利用欧拉法保证数值解是稳定的,其步长限制条件是(3.1.8)
分析欧拉法的几何意义、稳定性和误差的基本思想对其他数值积分法也是适用的。5.改进的欧拉法(预测—校正法)对积分公式(3.1.2)式利用梯形面积公式计算其右端积分,得到
将上式写成递推差分格式为(3.1.9)
从(3.1.9)式可以看出,用梯形法计算(3.1.1)式时,在计算中,需要知道,而又依赖于本身。因此,要首先利用欧拉法计算每一个预估的,以此值代入原方程(3.1.1)式计算,最后利用(3.1.9)式求修正后的。
所以改进的欧拉法可描述为预测
校正
(3.1.10)
欧拉法每计算一步只需对调用一次。而改进的欧拉法由于加工校正过程,计算量较欧拉法增加一倍,付出这种代价的目的是为了提高计算精度。龙格—库塔法欧拉法是将在点附近的经台劳级数展开并截去以后各项得到的一阶一步法,所以精度较低。如果将展开式(3.1.4)式多取几项以后截断,就得到精度较高的高阶数值解,但直接使用台劳展开式要计算函数的高阶导数。龙格—库塔法是采用间接利用台劳展开式的思路,即用在n个点上的函数值f的线性组合来代替f的导数,然后按台劳展开式确定其中的系数,以提高算法的阶数。这样既能避免计算函数的导数,同时又保证了计算精度。由于龙格—库塔法具有许多优点,故在许多仿真程序包中,它是一个最基本的算法之一。1.显示龙格—库塔法
对于初值问题(3.1.1)式,假设其精确解是充分光滑的,故可将其解在附近用台劳级数展开,即
(3.1.11)依据偏导数关系
(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.1.18)式的中,整理得
将所得各项与(3.1.13)式同类项的系数比较,有
=1取,得
==故得二阶龙格—库塔法计算公式
(3.1.19)
由于(3.1.13)式中只取了,两项,而将以上的高阶项忽略了,所以这种计算方法的截断误差正比于。
图所示是二阶龙格—库塔法的几何表示。图中:是点的切线,其斜率为;是点以为斜率做的直线,现取为斜率,在点做切线L,图3.1.3二阶龙格库-塔法几何表示则处的近似解位于切线L上。
显然,由于下一时刻的变化量并不是取前一时刻的变化率与步长的乘积,而是取了及两时刻的斜率平均值与步长相乘,所以计算精度比欧拉法高。
利用(3.1.14)式仿照上述完全相同的方法,对(3.1.1)式给出的初值问题,可得三阶、四阶龙格—库塔公式。三阶龙格—库塔公式:
(3.1.20)四阶龙格—库塔公式:
(3.1.21)
对于大部分实际工程问题,四阶龙格—库塔公式已可满足要求,它的截断误差正比于。四阶龙格—库塔法除了计算精度较高外,还具有一些其他的优点,如编程容易,稳定型号,能自启动等,故在系统仿真中得以广泛的应用。2.龙格—库塔法的稳定区域前面,以一阶微分方程为例,研究了欧拉法的稳定区域。现在仍采用一阶方程,用类似的方法分析各阶龙格—库塔公式的稳定区域。将方程做台劳级数展开,可得
(3.1.22)当时,有,并代入(3.1.22)式。得
(3.1.23)
令,代入(3.1.23)式可得使该式稳定的条件为
(3.1.24)
根据由(3.1.24)式确定的稳定条件,表给出了各阶龙格—库塔公式的稳定条件。
在使用龙格—库塔公式中,选取步长应使落在稳定区域内。如果选用的步长超出了稳定区域,在计算过程中会产生很大的误差,从而得到不稳定的数值解。这种对积分步长有限制的数值积分法称为条件稳定积分法。另外,还可以看出,步长的大小除与所选用算法的阶数有关外,还与方程本身的性质有关。从四阶龙格—库塔法稳定条件中可以得出,系统的特征根越大,需要的积分步长就越小。这一点可以作为选择步长的依据。数值积分步长的选择是一个重要的问题,又是一个较为复杂的问题,在很大程度上取决于仿真工程师的经验。3.1.3线性多步法以上所述的数值解法均为单步法。在计算中只要知道,的值可递推算出。也就是说,根据初始条件可以递推计算出相继各时刻的值,所以这种方法都可以自启动。这部分要介绍的是另一类算法,即多步法。用这类算法求解时,可能需要及在,,,…各时刻的值。显然多步法计算公式不能自启动,并且在计算过程中占用的内存较大,但可以提高计算精度和速度。一、亚当斯—贝希霍斯显式多步法为了解决(3.1.2)式中的积分问题,采用亚当斯—贝希霍斯显式多步法,简称亚当斯法,它是利用一个插值多项式来近似代替。
如果在点以前的个节点上,用多项式近似表示,称为多项式阶数。根据牛顿后插公式
(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)两式可看出,如果在点已知,那么以后求得的的值是步以前各导数的线性组合,各导数都以显式形式出现在(3.1.29)或(3.1.30)式中,所以称为显式线性多步法。图3-4是二阶亚当斯公式的程序框图,并给出用c语言编写的程序,使用时,只需编写主程序和求导数的子程序。
子程序:计算导数子程序
图3.1.4二阶亚当斯程序框图二、亚当斯—莫尔顿隐式多步法根据插值理论可以得出,插值节点的选择对精度有直接的影响。同样阶数的内插公式比外插公式更为精确。牛顿前插公式为
(3.1.31)
其中
为向前插分算子,定义为
(3.1.32)
用牛顿前插公式近似代替(3.1.2)式中的,仿照显式多步法的推导过程,可以得到亚当斯—莫尔顿隐式多步法的计算公式
(3.1.33)
其中系数的值见表。如果将亚当斯方法的显式公式与隐式公式联合使用,前者提供预测值,后者将预测值加以校正,使其更精确,这就是预测—校正法。常用的四阶亚当斯预测—校正法的计算公式为预测:(3.1.34)校正:
(3.1.35)计算步骤为⑴利用单步法计算(3.1.34)式中的附加值。⑵计算预测值。⑶计算。⑷计算。预测—校正法的程序框图如图所示。
表3.1.2隐式多步法系数表
3.1.4Matlab语言中的常微分方程求解指令和使用方法在Matlab语言中提供许多求解各种类型常微分方程的不同算法,如ode23、0de45、ode23s等。命令ode45采用由德国学者Felhberg对Runge-Kutta方法的改进算法,它经常称为5阶龙格-库塔-费尔别格法。它的计算公式为一个5阶6级方法,即在每一个计算步长内对右函数进行六次求值,以保证更高的精度和数值稳定性。另外用一个4阶5级方法求,就是用来估计误差。这一套计算公式被认为是对非刚性系统进行仿真最为有效的方法之一。由于它是5阶精度、4阶误差,因此称为四阶/五阶Runge-Kutta-Felhberg(RKF)方法,简称为RKF45法。对方程(3.1.1),假设当前的步长为,则定义下面的6个变量
(3.1.36)
式中为当前计算时刻,而中间参数及其它参数由表x给出。这样,下一步状态变量可以由下式求出图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:此方法被推荐为首选方法。
Ode23:这是一个比ode45低阶的方法。
Ode113:用于更高阶或大的标量计算。
Ode23t:用于解决难度适中的问题。
Ode23s:用于解决难度较大的微分方程组。对于系统
中存在常量矩阵的情况也有用。
Ode15s:与ode23相同,但要求的精度更高。
Ode23tb:用于解决难度较大的问题,对于系统中存在常量矩阵的情况也有用。其实,对常微分方程来说,初值问题的数值解法是多种多样的,除了这里介绍的RKF方法外,比较常用的还有Euler法、Adams法、Gear法,它们的侧重应用范围不一样,一些方法侧重于一般问题的仿真,而另一些方法侧重刚性方程的仿真。在Simlink环境中,以内部函数的方式实现了其中一些仿真算法。相关的算法我们将在以后介绍。参数选择函数:
odeset:产生/改变参数结构。
odeget:得到参数数据。
有许多设置对odeset控制的ODE解是非常有用的,读者可以参见该指令的帮助文件。输出函数:
odeplot:时间列输出函数。
odephas2:二维相平面输出函数。
odephas3:三维相平面输出函数。
odeprint:命令窗打印输出函数。例:利用ode45求解下面方程组:
这个方程组用在人口动力学中。可以认为是单一化的捕食者---被捕食者模式。例如,狐狸和兔子。表示被
捕食者,表示捕食者。如果被捕食者有无限的食物,并且不会出现捕食者。于是有,这个式子是以指数形式增长的。大量的被捕食者将会使捕食者的数量增长;同样,越来越少的捕食者会使被捕食者的数量增长。创建fun函数,将此函数保存在M文件fun.m中:functionfun=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(‘timet0=0,tt=20’);ylabel(‘xvaluesx1(0)=30,x2(0)=20’);grid得到图
图3.1.6由函数fun定义的微分方程解的图形
在工程实践中,在研究化工系统、电子网络、控制系统中,常常会碰见这样的情形:一个高阶系统中常由不同的时间常数相互作用着。以惯性导航为例,修正回路时间常数大,稳定回路时间常数小。导弹、鱼雷等航行器的运动也是如此,质点运动较慢,偏航与俯仰运动较快。所有这些现象,主要是由于系统模型中的一些小参数,如小时间常数、小质量等存在而引起的。描述这种系统的微分方程,在数学上常常称为刚性方程,这种系统就称为系统。第三章数值积分法在系统仿真中的应用3-2刚性系统的特点及算法
现以二阶微分方程组为例,讨论刚性系统以及它在数值求解上的特点。
(3.2.1)满足初始条件的解为
(3.2.2)其中为的两个特征值。于是方程(3.2.2)的解由对应于和的分量组成,但由于对应系统的最小时间常数,它很快地便无足轻重。表给出系统(3.2.1)的解方程(3.2.2)的具体数值。其中表示忽略最小时间常数时,系统的简化解。
表3.2.1系统(3.2.1)的解0120-10.0011.631.998-0.631121-0.9900.011.980051.9800996-0.99000-0.990050.11.8096751.809675-0.904837-0.904837
从表可以看出,系统(3.2.1)在0.01秒时,系统的精确解和简化解几乎一致,也就是说,在0.01秒以后,我们可以完全忽略,精确系统和简化系统是没有差别的。但在初始时刻,简化系统的初始条为,精确系统和简化系统差别是非常大的,我们又不能够忽略的影响。这就是系统的边界层效应,即奇异摄动系统。对于代数方程也同样存在刚性的问题,例如方程
(3.2.3)
该方程的解为:。如果将摄动为,则方程的解就变为,。显见,由于摄动引起解的摄动就比较大。我们看方程的系数矩阵地特征值为-0.00934和-10.709,两个特征值的比很大。一个刚性系统可以这样描述,对于阶微分方程组
(3.2.4)其中为维向量,其系统的雅可比矩阵定义为:的特征值实部表示系统衰减的速率,其最大特征值和最小特征值实部之比,即
(3.2.5)
作为系统刚性程序的度量。当的值很大时系统称为刚性系统,或称为系统。但值具体多大才称系统为刚性系统,要根据具体的物理系统和仿真算法来定。
从前一小节我们知道,从数值解稳定性的要求出发,希望计算步长比较小,即需要小于一个小量,而这个应该是系统的最大特征值。例如,对于欧拉法来说,这个量就是1000,所以,因此的最大值只为.
虽然对于对应的解分量,很快就没有实际价值了。但是在整个积分区间,由于受到绝对稳定的限制,又必须取得很小。而解的总时间又取决于最小的特征值。因此当一个系统的矩阵的特征值范围变化很大时,数值求解会引起很大的困难。由此我们可以看到,对于这样的系统做数字仿真,其最大的困难是:积分步长由最大的特征值来确定,最小的特征值决定数值求解总的时间。例如,一个系统的,则用四阶龙格—库塔法求解步长,即积分需要的步数,这样大的计算工作量将带来很大的舍入误差。所以刚性方程在实践中的普遍性和重要性已得到广泛的重视,这种方程的数值解已成为常微分方程数值求解研究的重点。
微分方程数值解中对步长的限制并不是物理本质上的原因,它仅是为保证数值解稳定而采取的措施。而刚性方程求数值解时,要解决稳定性和计算次数的矛盾,就应对不加限制。到目前为止,已提出不少解刚性方程的数值方法,基本上分为:显式公式,隐式公式和预测校正型。显示公式常用雷纳尔法。其着眼点是,在保证稳定的前提下,尽可能地扩大稳定区域。这一方法的优点是,它是显式的,所以便于程序设计。对一般条件好的方程,它就还原为四阶龙格—库塔方法,而对刚性方程它又有增加稳定性的好处。
众所周知,隐式方程都是稳定的,故都适合于解描述刚性系统的方程组,如隐式的龙格—库塔法。但这种方法每计算一步都需要进行迭代,故计算量大,在工程上使用有一定困难。因此在解刚性方程时,常采用提出的半隐式龙格—库塔法。预测—校正型中常用的解刚性方程的方法是算法。首先引进刚性稳定性的概念,它可以满足稳定性,而降低对的要求。方法是一个通用的方法,它不仅适用于解刚性方程组,而且也适用于解非刚性方程组。
关于以上方程的详细描述可参看有关资料。第三章数值积分法在系统仿真中的应用
3-3实时仿真算法
前两节介绍的微分方程数值积分法,主要是针对非实时仿真应用的。但是在半实物仿真中和计算机控制中,此时因为有实物介入整个仿真系统,因此要求计算机中的仿真模型的仿真时间,必须与所介入的实物运行时间相一致。这时,计算机接收动态输入,并产生实时动态输出。计算机的输入与输出通常为固定采样步长的数列。假设在计算机上仿真的连续动力学系统由下列非线性常微分方程描述:
(3.3.1)
其计算机的输入序列是,由实物经计算机的输入接口输入给计算机,。计算机从时刻开始,根据用户所采用的不同仿真算法,利用和时刻以前的数值计算出。很明显,实物仿真算法的第一个要求是计算机求解方程(3.3.1)式一步解所需要的实际时间必须等于或少于秒,以便与实物的运行时间同步。第二式计算机在时刻求解方程时,不能要求从实物上取得时刻的值,即计算机的输入也必须满足实时仿真的条件,这是必需的。比如,前面介绍的龙格—库塔法仿真计算公式是不适用于实时仿真的。对系统(3.3.1)式采用二阶龙格—库塔公式求解,其递推方程可写为
(3.3.2)
为函数,外部输入为。由于算法在一个仿真步长中计算两次右函数,所以可假定在时间内计算机正在计算右函数。因此,整个计算流程如图。图3.3.1RK-2的计算流程即由于当,才具备计算的条件。所以要到时才能计算出来,并输入到外部设备,也就是说,计算机输出要迟后半个计算步距。与此类似,四阶龙格—库塔公式也不适用于实时仿真。读者可自行分析。
为了适用于实时仿真计算,一般经常采用以下方法。⑴选择Adams多步法。因为在这类算法中,为计算,只要求知道和以前的各类右函数。对于以前的各类右函数值可以事先存储于内存中;而时刻的右函数和外部输入,均可在这一段时间内计算出来,或由外部设备输入给计算机,所以不会被延迟。如果用隐式算法,可用显式法计算预估值。
⑵合理地选择龙格—库塔计算公式中的系数,使之适用于实时仿真。在方程(3.1.18)式中,令可得,此时,(3.3.2)式化为
(3.3.3)
图3.3.2实时RK-2的计算流程其计算流程图如图所示。
下面给出一个高阶的龙格—库塔法计算公式,供读者选用:
(3.3.4)
⑶利用已知取得的值进行外推,例如,在二阶龙格—库塔公式(3.3.2)式中,为避免的迟后,可以在时利用和等值来外推。若能在时刻外推出来,那么就可以在时计算出来。有关外推算法计算公式很多,读者可参看有关的计算方法书籍。为了便于读者选用,在此给出几个递推公式:
(3.3.5)
采用外推算法不仅会带来附加误差,还要增加计算量,所以比较下来还是选择实时算法为佳。由于实时仿真一般不采用变步长方法,即不采用估计每步误差,去控制计算机步长,而是采用定步长,所以,某一计算方法在选取某一步长后,应对所可能引起的动态误差做定量的分析,以决定所选用算法的阶次和步长是否合适。这种动态误差分析是一件非常困难的工作,尤其是对非线性系统。有兴趣的读者可参考有关文献。
第三章数值积分法在系统仿真中的应用
3.4分布参数系统的数字仿真
前面介绍的是常微分方程(ODE)的数字仿真以及模型,它们属于集中参数性质。但是有相当一类动力学问题属于分布参数性质,比如热传导问题,振动问题等,描述这类问题需要用偏微分方程(PDE)形式。本书除介绍PDE模型的基本性质外,还将介绍PDE的数值解法及其仿真等内容。3.4.1模型形式和性质
研究PDE的人,最先感受到的是两点:首先是PDE形式比ODE形式更为自然,对物理世界的描述能力更强。事实上,人类宇宙是由空间和时间组成的,因而其特性将随着这些变量而变化。在ODE描述的集中系统理论中,则认为物理世界是由一个以某种特定方式相互连接的不同元素的阵列组成的。元素的物理维数和位置并不直接影响系统性能分析。但在有一些情况下,却不能用简便的集中元素思想,而必须考虑真实世界系统的分布特性,即空间和时间的分布,如电磁学结构分析、热和质量的传递、大地勘探、天气预报等。
其次是PDE形式的复杂性。必须认识到,分布参数系统问题比集中系统问题在处理上难得多。在ODE情况下,人们可以借助于计算机技术来解决难以分析的问题。而对于PDE,现有的计算能力还差得很远。除早期的有限插分法外,近年来,又研究出许多其他方法。线上法是将PDE变换成一组ODE来求解。模型逼近法是将PDE的解看成由一个无限级数所组成。此外还有近似变换法、数值积分法等。但尽管如此,由于PDE是建立在物理世界的时空观基础上的,计算能力还是受到维数太大的影响。例如,天气预报,必须在一个二维的地球表面范围内,在许多高度上、许多时间间隔上,求解天气方程组。若将近似网格折半,就意味着表面点数呈4倍、时间间隔
点数呈2倍、高度平面点数呈2倍的计算法复杂性上升。研究一个433km网格的半球24h的天气预报问题,平均需要约次数值运算。若将近似网格再折半,其计算量将再增加16倍。由此可见PDE的计算工作量之大。若只用一阶微分,对于确定的情况,其PDE具有如下的形式:
(3.4.1)
从方程(3.4.1)可明显地看出,除了时间变量外,还有个空间独立变量,即。该开连通集Z称为“场”,虽然场对物理世界的描述更自然些,但其解法令人望而生畏。
限于本书的研究范围,我们仅考虑由(3.4.2)式所描述的系统仿真问题,其他问题可类似求解。
(3.4.2)
(3.4.3)
(3.4.4)
显然,也应满足相容性条件,即
此问题也经常称为热传导的第一边值问题。差分解法为了对由PDE所描述的分布参数系统进行仿真,核心问题是对PDE进行数值求解。差分解法是常用的方法之一。它是在时间与空间两个方向将变量离散化,因而得到一组代数方程。若利用已经给出的初始条件及边界条件逐排求解,则可将系统中的状态任意时刻、任一空间位置上的值全部计算出来。以(3.4.2)式为例,为了用有限差分法求解上述问题,将求解区域G:,用二族平行于坐标轴的直线
(3.4.5)
分割成矩形网格,如图所示,其中分别为方向和方向的步长;交点称为节点。在上,全体节点称为差分网格的第层。图3.4.1平面矩阵网格图
假定对所要求的解有足够的光滑性,用
分别表示边值问题(3.4.2)式的
解及其偏导数,在节点处的值。构造逼近(3.4.2)式的差分格式的一种简单方法是根据泰勒展开的“逐项逼近法”,即用适当的差商逐项去逼近(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个相邻节点处的值,,决定。如图所示。显然,方程组可以按方向逐层求解。由于这种格式关于可以明显解出来,因此称为显格式。二、隐式差分格式如果在节点作如下逼近:
(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)式是关于层上未知量的联立线性方程组,它的求解不像显格式那样简单,需用求解线性代数方程组的办法(例如追赶法)去解。由于这种格式不能直接明显地解出,因此称为隐格式。以后将看到,隐格式的最大优点是无条件稳定的,如把它和显格式(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)
它可以看做对点做中心差商的结果。由于
(3.4.18)
因此格式(3.4.17)式的截断误差为,即对的逼近阶次已提高一次。下面还会看到,这种格式还是无条件稳定的,因此得到广泛的应用。六点对称格式(3.4.17)、(3.4.19)、(3.4.10)式可简写为
(3.4.19)
它对于可以用逐次追赶法求解。四、差分格式算法的稳定性和收敛性
采用差分格式求解PDE时,若时间步长和空间步长选择不合适,就有可能产生数值计算发散的现象,即也存在稳定问题。对于PDE数值解的稳定性问题,可以参照数值积分法中有关稳定性分析的方法来研究。在此不加证明地给出三个有关稳定性的定理。定理
差分格式(3.4.11)、(3.4.9)、(3.4.10)式是稳定的充要条件为满足不等式。定理
差分格式(3.4.15)、(3.4.9)、(3.4.10)式对任何的值都是稳定的,即它是无条件稳定的。定理
差分格式(3.4.16)、(3.4.9)、(3.4.10)式当时,稳定性条件是;而当时,则它是无条件稳定的。定理4是关于差分格式的收敛性的。定理
假设边值问题(3.4.2)、(3.4.3)、(3.4.4)式的解在区域G中存在并连续,且具有有界的偏导数则差分格式(3.4.15)、(3.4.9)、(3.4.10)式的解收敛于边值问题的解。3.4.3线上求解法偏微分方程的另一种解法是线上求解法,或称连续—离散空间法。它是将偏微分方程的空间变量X进行离散化,而时间变量仍保持连续,因此可将偏微分方程转化为一组常微分方程。由于对常微分方程可利用已知的数值解法来求解,特别是可以利用已经编制好的各种仿真程序来求解,所以线上求解法被广泛用于分布参数系统的仿真。今仍以方程(3.4.2)为例。若将轴以为步长分布份,即,则有
(3.4.20)共个常微分方程。其中可以用差分来近似,即有
(3.4.21)(3.4.20)式中的将(3.4.21)式代入(3.4.20)式,可得个常微分方程
(3.4.22)
只要求出,就可很方便地解出这个常微分方程。比如用欧拉法,则有
(3.4.23)其中可由初始条件求出;而则可由初始条件及边界条件求得。
实际上,只要写出如(3.4.22)式的微分方程,则调用任何一种微分方程数值求解程序均可。由于首先是求出这一时刻空间各点的值,然后再求出这一时刻空间各点的值,因此被称为线上求解法。线上求解法的具体步骤可归结如下:⑴将空间变量从起始点到终点分成份;⑵用差分来近似对空间变量求导(这里要利用边界条件);从起始时间开始,利用给定的初始条件用数值积分法求出下一时刻空间各点的函数值;⑷用差分来近似对空间变量的求导;⑸计算下一时刻空间各点的函数值
⑹重复⑷、⑸两步,直到规定的时刻为止。可见,采用线上求解法完全可以利用原有的数值积分法和系统仿真程序,而只要增加一些差分计算子程序即可。图是线上求解法仿真程序框图。图3.4.2线上求解法仿真程序框图
线上求解法的优点是方法直观,程序简单,比较容易被工程技术人员所掌握。但它也有不足,主要是:⑴误差不易控制。数值积分法由于有误差估计,可以用改变积分步长使计算精度限制在某个范围,但线上求解法所引起的误差不易估计,所以整个系统仿真的精度就难以控制。⑵差分公式很多,在使用时选择哪一种公式不仅会影响计算精度,而且会影响计算时间。因此要根据问题的需求和计算机的字长做出选择。⑶空间离散的间距取多大也是线上求解法的一个重要问题,同样也要根据计算的精度和仿真时间的要求来选择。总之,线上求解法对于比较熟悉常微分方程系统仿真的工程技术人员来讲,是一种比较简单方便的方法。有兴趣的读者可以参考有关偏微分方程的数值解方面的文献。3.4.4Matlab语言在偏微分方程解法中的应用
鉴于偏微分方程数值解在科学研究和数学计算中越来越主要的地位,本小节将介绍Matlab中专门用来求解偏微分方程的软件包-PDEToolbox。由于篇幅所限和教材内容的原因,以及偏微分方程解法本身的复杂性,我们仅对一些简单的、基本的算法和指令给出解法算例。更深入的内容读者可以参考PDEToolbox的帮助文件和其它参考书。一偏微分方程组求解
Matlab使用指令pdepe()求解由方程(3.4.1)描述的一阶偏微分方程组,但是为了统一起见,在Matlab语言中将这样的一阶偏微分方程的两点边值问题统一描述为:
(3.4.24)其中:0、1或2分别对应平面、圆柱和球形。的对角元素为零或正数。利用Matlab指令求解该方程,首先必须建立描述方程(3.4.24)结构、边界条件和初始条件的三个m文件。
描述偏微分方程的函数。该m文件的格式为
function[c,f,s]=pdefun(x,t,u,ux)其中ux是u对x的偏导数。该文件返回列向量。描述边界条件的函数。方程的边界条件是和,间隔必须是有限的。如果,则。另外必须首先将边界条件写成统一格式,为
(3.4.25)描述该边界条件的m文件格式为:
function[pa,qa,pb,qb]=pdebc(x,t,u,ux)
描述初值的函数。因为一般偏微分方程的初始条件仅与方程的状态有关,故描述初值的m文件格式为
functionu0=pdein(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)解。例:利用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)的边界条件的Matlab的m文件函数可以写成:
function[pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t)pa=[0;ua(2)];qa=[1;0];pb=[ub(1)-1;0];qb=[0;1];方程的初始条件描述函数为
functionu0=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)的解图形如图所示二、二阶偏微分方程的数学描述和求解(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)
抛物线型偏微分方程:抛物线型偏微分方程的一般形式为
(3.4.33)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳非住宅租赁合同范本
- 船舶运输委托协议合同书
- 渣土品回收协议合同模板
- 股权转让纠纷协议书范本
- 物业业主合作合同协议书
- 海淀区仓储配送合同范本
- 育儿嫂照顾宝宝协议合同
- 舞台租赁协议合同书模板
- 纸板线热板翻新合同范本
- 股东循环转移协议书模板
- GB/T 3683-2023橡胶软管及软管组合件油基或水基流体适用的钢丝编织增强液压型规范
- 七年级上学期历史导言课课件 ( 希沃白板课件+PPT课件)
- 医疗管理制度PDCA培训:提高医院感染管理相关制度的落实率
- 肺结核诊断和治疗指南
- 软件系统售后服务方案
- GB/T 9765-2009轮胎气门嘴螺纹
- GB/T 4623-2014环形混凝土电杆
- GB/T 23806-2009精细陶瓷断裂韧性试验方法单边预裂纹梁(SEPB)法
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- GB/T 13785-1992棉纤维含糖程度试验方法比色法
- 食品安全相关知识考核试题题库与答案
评论
0/150
提交评论