计算机仿真技术基础.ppt
(21页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
19.90 积分
3.2 基于Taylor级数匹配原理的仿真算法3.2.1 taylor级数匹配原理(1)计算机仿真就是求式(1)的数值解,由于输入u(t)是关于t的函数,在求解微分方程(1)时看成是已知量,将函数f(t,x,u(t))直接记为f(t,x) ,得到微分方程(2)记其解为x(t),如果f(t,x),对其变量t和x具有各阶的连续偏导数,则通过方程(2)可以推导x(t)的各阶导数的公式.例如有 (3)(4)设已经知道x(t)在tm处的值xm=x(tm) ,由 Taylor 级数展开式(5)如果知道导数,的值,则当h比较小时,可以取级数式(5)中的前p+1项之和作为x(tm+1)的近似值,将其记为xm+1 。令 (6)则(7)式(7)称为P阶Taylor展开法递推公式。 xm+1与x(tm+1)之间的误差为(8)由式(3)可以计算出取式(5)的前两项作为x(tm+1)的近似值,得到公式(9)这就是Euler方法。由式(8),xm+1与x(tm+1)之间的误差为(10)它是由精确值xm=x(tm)应用Euler法计算一步得到所引进的误差,称它为局部截断误差。由式(10),当Euler法的局部截断误差与h2是同阶无穷小量,记为O(h2)。时,显然,Euler法的精度是比较低的。为了提高它的精度,希望xm+1与x(tm+1)的Taylor展开式符合的项数更多,使得局部截断误差x(tm+1)-xm+1是h的更高阶无穷小量。从理论上讲,只要式(1)的x(t)解充分光滑,利用Taylor级数展开式可得到任意有限项的公式。但是,计算x(t)的高阶导数很困难。虽然可以按类似于式(3)和式(4)推导x(t)的各阶导数的公式,可是求复合函数的各阶偏导数往往是很复杂的。即使能得到解析公式,计算量也是很可观的。这表示直接应用展开式(5)构造精度较高的方法是不现实的。 基本思想:为了克服上述的困难,希望计算点(tm,x(tm))邻域中的若干个点(t,x(t))上的值。利用这些值构造x(tm+1)的近似值xm+1的计算公式,并且要求该公式在(tm,x(tm))处的Taylor展开式与式(5)的前若干项一致。我们称这种构造xm+1的思想为Taylor级数匹配原理。应用这种原理构造的xm+1的计算过程将不需要计算x(t)的高阶导数,或者只需计算一些比较低阶的导数,但与精确值x(tm+1)之间的误差是h的高阶无穷小量。下面应用Taylor级数匹配原理构造两类数字仿真方法。 3.2.2 Runge-Kutta方法(龙格-库塔算法)由式(6)可见,Taylor 展开法用f(t,x(t))在同一点(tm,xm)的高阶导数表示,因此不便于数值计算。 Runge-Kutta方法是用f(t,x(t))在一些点上的值表示使局部截断误差的阶数和Taylor展开法相等。 在区间[t,t+h]上,将式(1)写成下列积分形式(11)。若已知则用他们的一次组合去近似f(t,x(t))在区间[t,t+h]上取m个点(12)问题是如何计算ki(因x(ti)未知)。一个直观的想法是: 设已知, 由Euler法,图1 二级Runge-Kutta 方法的构造同样利用Euler法又可从算出如此继续下去。节点ti和系数ci可如此选择,使近似式(12)有尽可能高的逼近解。 下面以二阶Runge-Kutta方法的构造来说明Taylor级数匹配原理的应用。首先以步长h的Euler法从(tm,x(tm))处计算一步,记得到的点为,即有(13)是曲线x(t)在tm处的切线方向,如上图所示。为了改进的精度,再由Euler法一步长ah得到(tm,x(tm))的邻域中的另一个点。从x(tm)开始沿方向移动时间长度,得到(14)由图1可见,点在点和点的连线上。可以选取参数b1和b2,构造量 (3.46) (15)使得是的精度比更好的近似值。记。由上述的构造可以将成下列步骤:的计算归结(16)为了选取式(16)中待求的参数 a,b1,b2,将k2在(tm,xm)处展开成Taylor级数,有 (17)(18)xm+1可以展开成 (19)将式(19)与x(tm+h)的Taylor级数展开式(5)进行比较,可以看出,若参数a,b1,b2,满足下列关系式 (20) (21)由式(16),则xm+1的展开式与x(tm+h)的展开式的前三顶一致,局部截断误差有表示式 (22)它是h的三阶无穷小量,即有 度比Euler法高一阶。式(20)和式(21)含三个未知参数,但只有两个方程。可以得到含一个自由参数的解族。取a为自由参数,将b1,b2用参数a表示,得到,显然精 (23)参数由式(23)确定的公式(16)是计算xm+1的一个方法类。该方法类中的方法都称为二阶显式Runge-Kutta方法(RK2)。 下面给出该方法类中方法的两个最常用的方法。,求得 ,得到下面的公式取 (24)称它为改进的Euler公式。 取,求得 ,得到下面的公式 (25)称这个方法为修正的Euler公式或中点公式。 从初值(t0,x0)开始,由二级Runge-Kutta方法可计算(t1,x1),类似地再从(t1,x1)开始计算(t2,x2) ,这样依次递推,可得到任意时刻tm处的解x(tm)的近似值xm的值。这种递推计算的每一步只依赖于上一步的计算结果,即只用上一步的结果作为当前步计算的起始值,称这种方法为单步法。 一般的显式Runge-Kutta方法具有形式 称这方法为p阶显式Runge-Kutta方法(RKS方法)。 (26)公式中的系数ci,aij和bi通过下述方式选取。在(tm,xm)处考虑微分方程初值问题 (27)并记其解为xm(t) 。将ki在(tm ,xm)处展开成了的Taylor级数,然后代入的公式中,得到xm+1的展开式。类似地,将xm (tm+h)展开成h的Taylor级数,并与xm+1的展开式进行比较,由要求符合的项的系数确定这些参数应满足的方程组。求解方程组得到具有相应精度的p阶显式Runge-Kutta方法。 如果式(26)中的xm=x(tm) ,则xm+1和x(tm+1)=x(tm+h)在(tm,xm)处的Taylor展开式的前p项是一致的。局部截断误差x(tm+1)- xm+1是h的p+1阶无穷小量,即有 上面给出的Runge-Kutta方法的每一步计算从(tm,xm)开始,可逐次确定k1,k2,…kp,最后确定xm+1 。在计算ki时只用到k1,k2,…ki-1的值。这种方法称作显式Runge-Kutta方法。 利用上述的方法,还可以构造隐式Runge-Kutta方法。在计算ki时时不仅用到k1,k2,…ki-1的值,还可能用到k1,k2,…kp的值。p阶隐式Runge-Kutta方法具有下面的形式(28)可以通过Taylor级数匹配原理来确定公式(28)中的系数ci,aij和bi的值。 、下面给出p=1和p=2的隐式Runge—Kutta方法: 1)(隐式中点公式)2) (29)(30)局部截断误差为 局部截断误差为 一般对任意自然数p,可以找到p阶隐式Runge—Kutta方法,使得xm+1和x(tm+h)的Taylor展开式的前2p+1项是一致的,局部截断误差为O(h2p+1) 。这些方法与显式Runge-Kutta方法相比精度要好得多例如,二阶显式Runge—Kutta方法(24)的局部截断误差为O(h3) ,而隐式二阶Runge-Kutta方法(30)的局部截断误差为O(h5)。 另外,在许多其它品质上,如数值稳定性,隐式Runge—Kutta方法也比显式方法要好。但是,由于应用隐式Runge—Kurta方法进行仿真时,每一步都要求解一个ki,i=1,2,…p的非线性方程组,计算量很大,从而限制了隐式方法的普遍应用。例: 设系统方程为Runge—Kutta求其数值解,取仿真步距。试用显式二阶解:原方程为则采用显式2阶Runge—Kutta法求解例3.1系统时,其递推公式可写为 3.2.3 线性多步方法k阶显式Adams 算法的递推公式为: k阶隐式Adams 算法的递推公式为: 为了计算,不仅用到时刻的值,还用到时刻以前的导数值,。 由此想到,如果再应用已经得到的时刻以前的值来构造的计算公式 ,可能会得到性能更好的算法。 为此,由Adams公式导出更一般的公式(31)由式(31)可以解出,得到(32)可见Adams公式对应于式(32)中取,的情形。 ,为了由公式(32)计算的值,需要知道前面个值,以及它们相应的导数值,而且和 是线性的,因此称这类方法为公式关于 线性k步方法。 应用Taylor级数匹配原理来确定公式(32)中的系数。 关 键 词: 技术 仿真 基础 计算机
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。