43第2章计算流体力学的有限差分方法2.1差分格式用差分xy,来替代微分dxdy,、用差商ux来替代导数ux是最容易被接受的数学近似概念,随着采用符号的变化,它表示的数学意义也发生了变化,它们之间的关系为11iiiiuuuuxxxx或0limxuuxx或)(xOxuxu,下面我们来探求它的数学原理。设存在连续函数fxu,将它用图线来表示x0u0x1x2xnxnf0f1f2f)(xf图2-1拟序函数序列示意图作为ox轴的自变量具有原点、方向和长度单位的特征,依ox的方向和长度单位可以依次选取0x,1x,2xnx,并拟序以从小到大排列,那么对应x的序列,必然存在0fx,1fx,2fxnfx的函数值。同样将函数值依照x的序列作拟序处理得到0f,1f,2fnf或012,,nuuuu,那么if与ifx的区别在什么地方呢?if表达的仅仅是一个数值,而ifx表达的是函数关系及对应的数值,如2fxABxCx,当5ix,3A,2B,1C时2251523)(iiiCxBxAxf4438,而if表示的是38if没有包含函数表达式。一种情况是首先要知道函数形式才能求得函数值,另一种情况是只需知道函数值。当ix点取得足够致密时,序列if的顺序连接可以再现fx的变化趋势。如果满足某种精度要求,可以认为if可以完全反映fx的变化情况,其中if表示if的序列集合,由此可以看出if表示的是数值变化,而ifx表示的是函数变化,if表示的是数值变化趋势,而fx表示的是函数变化趋势。数值计算的基本思想就是要从离散的序列中,通过对数值计算成果的分析找出原函数的变化趋势,数值变化趋势是否反映原函数的变化趋势,取决于离散点选取的致密程度;计算数值结果的可靠性,取决于微分方程的离散、计算方法的选用和计算精度控制。可以从分布点中任意选取相邻的几个点研究离散点与原函数之间的关系,建立离散点与原函数间的变化特征。根据泰勒公式,fx在点0x处连续可微(如图2-2),x在0x的邻域内。0xx图2-2则fx在0x邻域上可以展开为200000)(!2)()(!1)(')()(xxxfxxxfxfxf(2-1)其中,0x称为展开点,x称为表征点。当x取0x邻近的1x时,上式为45201001001)(!2)()(!1)(')()(xxxfxxxfxfxf(2-2)当1x与0x充分接近时,)(01xx的幂次越高,其在(2-2)式右端求和中所占的比重越小,直至可以忽略不计,对这样的小量之和表示为)(xR或)(xO,这里01xxx。当01xx时,用x表示,当01xx时,用x表示。式(2-2)可以整理为)()()()(00101xOxfxxxfxf(2-3)忽略)(xO项,可以看出式(2-3)的近似程度,!3)(!2)()(20101xxxxxO近似程度受x一次方以上各项的影响,对这样的近似式,称(2-3)为具有x的一阶精度,近似式可以表示为(对单变量函数不区分偏导数或全导数)0101)()(xxxfxf=0101xxff=0101xxuu或xf=dxdf=dxdu(2-4)为表示方便引入符号jjxxh1表示沿x正方向的空间步长,即jjxx1。当jjxx1时h取为h,用表示时间步长。a级数组合差分法用),(txuu表示一维空间函数,在1j,2j和1j,2j处用泰勒级数展开为j点的级数式(如图2-3),以数字乘座标为下标表示导数,数值或座标个数表示导数阶数,用j加数字表示位置,得46图2-3差分网格示意图在时间坐标n处,空间]1,[jj区间上,以1j为展开点,j为表征点的空间差分为(u)的下标x表示对u的导数,x前的系数表示导数次数。)()(!3)(!2)(!143321hOuhuhuhuunjxnjxxnjxnjnj(2-5)在时间坐标n处,空间],1[jj区间上的空间差分为以1j为展开点,j为表征点的空间差分为)()(!3)(!2)(!143321hOuhuhuhuunjxnjxxnjxnjnj(2-6)在时间坐标n处,空间]2,[jj区间上的空间差分为以2j为展开点,j为表征点的空间差分为)()(!3)2()(!2)2()(!1243322hOuhuhuhuunjxnjxxnjxnjnj(2-7)在时间坐标n处,空间],2[jj区间上的空间差分为以2j为展开点,j为表征点的空间差分为)()(!3)2()(!2)2()(!1243322hOuhuhuhuunjxnjxxnjxnjnj(2-8)类似的,在空间坐标j处,时间]1,[nn区间上的时间差分为以1n为47展开点,n为表征点的时间差分为)()(!3)2()(!2)2()(!1243321Ouuuuunjtnjttnjtnjnj一阶偏导数可以由以上四式组合而成,由(2-5)得1nnnjjxjuuuOhh为在时间坐标n处,空间]1,[jj区间上具有一阶精度的一阶偏导向前差分。由(2-6)得1nnnjjxjuuuOhh为在时间坐标n处,空间],1[jj区间上具有一阶精度的一阶偏导向后差分。由(2-5)减(2-6)得1122nnnjjxjuuuOhh为在时间坐标n处,空间]1,1[jj区间上具有二阶精度的一阶偏导中心差分。由4×(2-5)减(2-7)得122342nnnnjjjxjuuuuOhh为在时间坐标n处,空间]2,[jj区间上具有二阶精度的一阶偏导前差。由(2-8)减4×(2-6)得)()(243221hOuhuuunjxnjnjnj为在时间坐标n处,空间],2[jj区间上具有二阶精度的一阶偏导后差。二阶偏导数也可以由(2-5)至(2-8)四式组合而成,(2-5)加(2-6)得)()(22211hOuhuuunjxxnjnjnj为在时间坐标n处,空间]1,1[jj区间上具有二阶精度的二阶偏导中心差分。将u的一阶向前差分1nnnjjxjuuuh代入式(2-7)一阶导数中得482122242nnnnjjjxxjuuuuh为在时间坐标n处,空间]2,[jj区间上具有一阶精度的二阶偏导向前差分。空间四点后差为)(629181143321xjjjjuhOhuuuu空间五点后差为)(6316364825544321xjjjjjuhOhuuuuu空间四点偏后差为)(663243211xjjjjuhOhuuuu空间五点偏后差为)(6618103543211xjjjjjuhOhuuuuu从以上的差分格式可以看出,不同的差分构造格式具有不同的精度阶数,也就是先得到构造的差分形式,而后才得到了它的精度。差分精度的阶数取决与略去式中的自变量差值的最低阶次。同价偏导选择点数越多,差分精度越高。分母中的步长方次决定偏导的阶次。余函数中的步长方次决定差分的精度。b待定系数差分法根据以ju为中心展开的泰勒级数)(!3!2!1)(4332hOuhuhuhuxujxjxxjxj(2-9)得)(!3!2332hOuhuhhuuujxjxxjjx可以看出,要保证一阶精度需要有两个结点的物理量组合,在]1,[jj区间上j点处u对x一阶导数可以表示为49jjxjbuauu1(2-10)展开等号右侧第一项xjxxjxjjjuhuhuhuu3321!3!2!1代入(2-10)得jxjxxjxjjxjbuuhauhauhaauu332!3!2!1(2-11)比较(2-11)两端系数得haba10得hb1将a、b代入(2-10)得huuujjxj1。将a代入(2-11)各项得xxjxxjuhuah!2!22,,!3!33233xjxjuhuah,可以看出在比较系数时,具有h以上的高次项被略去,所以huuujjxj1为具有一阶精度的前差。如果希望提高精度,就要将xxjh!2项消去而不是略去,就要增加可供选择的系数,增加节点个数。如11jjjxjcubuauu(2-12)展开等号右侧第一项和第三项得xjxxjxjjjxjxxjxjjxjuhcuhcuhccubuuhauhauhaauu332332!3!2!1!3!2!1(2-13)比较(2-13)两端系数得500)(1)(0cahcacba得ha21,0b,hc21,对xjxjuhuah3233!32!3和xjxjuhuch3233!32!3的具有2h以上高次项略去,所以huuujjxj211为具有二阶精度的中心差分。归纳以上方法,要保证n阶精度,就要选择1n点和1n个待定常数来确定差分格式,这种方法称为差分格式的待定系数方法,至于选择结点的位置,则与差分方向有关,边界上的差分受到一定条件的限制。起点处用前差,终点处用后差。c直接差分展开法当指定差分格式时,对高阶微分式如何用差分方法来表达,如对22xf采用以为j中心点二阶偏导中心差格式离散,先对内层离散211111111)()()()(xffffxffxjkkjkkkk第一项中1jk,第二项中1jk,222222112)()()()(hfffxffffxffxjjjjjjjkk先对外层离散211111111)()()(])()[(1xffffxfxfxjkkjkkjj第一项中1jk,第二项中1jk,222222112)()()()(hfffxffffxffxjjjjjjjkk51关于时间和空间混合偏导xtf2的空间中心差分时间前差式为hffffxtffffxfftnjnjnjnjnkjnjjjj11111111111)()()(注时间层面用上标表示,空间层面用下标表示。d有权重差分空间上取21j,时间上取n。tfffftfxffxffxffffftxfnjnjnjnjnjnjnjnjnjnjnjnj2)1()(21)(2),(111111111111121j2.2计算精度无论哪一种差分格式,都存在忽略高阶项引起的误差,这种误差称为截断误差。在计算机计算的过程中,由于对实型数处理而保留的位数有限(16或32位),每计算一步在最末一位要进行四舍五入。这种累积误差称为舍入误差。从差分格式可以看出,当计算时间长度一定,h越小截断误差越小,但计算次数就会增加,舍入误差会增大,当h较大截断误差增加,而舍入误差会减小。如果将截断误差与舍入误差之和定义为总误差,则可以得到图2-3。从图中可以看出,要提高计算精度,关键问题是要选择总误差最小的差分格式。52图2-3误差分布示意图图2-4离散点之间函数关系2.3差分的近似函数为了分析差分方程的近似程度,希望在离散的点之间建立函数关系,两点之间的函数可以用线段来近似,如:jjjjjjxxffxxff11,则有jjjjjjjjfxxxxfxxxxf1111(2-14)令jjjxxxx1则jjfff11,对应],[1jjxxx的取值区间,的变化范围为]1,0[。对于满足任意个数结点的连续函数可以用半幅傅