最新偏微分方程数值解双曲方程书稿.docx
《最新偏微分方程数值解双曲方程书稿.docx》由会员分享,可在线阅读,更多相关《最新偏微分方程数值解双曲方程书稿.docx(12页珍藏版)》请在冰豆网上搜索。
![最新偏微分方程数值解双曲方程书稿.docx](https://file1.bdocx.com/fileroot1/2023-2/24/e74541a9-775e-4ff0-98bf-bff15594f4b1/e74541a9-775e-4ff0-98bf-bff15594f4b11.gif)
最新偏微分方程数值解双曲方程书稿
偏微分方程数值解(双曲方程书稿)
双曲型方程的有限差分法
线性双曲型方程定解问题:
(a)一阶线性双曲型方程
«SkipRecordIf...»
(b)一阶常系数线性双曲型方程组
«SkipRecordIf...»
其中«SkipRecordIf...»,«SkipRecordIf...»阶常数方程方阵,«SkipRecordIf...»为未知向量函数。
(c)二阶线性双曲型方程(波动方程)
«SkipRecordIf...»
«SkipRecordIf...»为非负函数
(d)二维,三维空间变量的波动方程
«SkipRecordIf...»
«SkipRecordIf...»
§1波动方程的差分逼近
1.1波动方程及其特征
线性双曲型偏微方程的最简单模型是一维波动方程:
(1.1)«SkipRecordIf...»
其中«SkipRecordIf...»是常数。
(1.1)可表示为:
«SkipRecordIf...»,进一步有
«SkipRecordIf...»
由于«SkipRecordIf...»当«SkipRecordIf...»时为«SkipRecordIf...»的全导数(«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»),故由此定出两个方向
(1.3)«SkipRecordIf...»
解常微分方程(1.3)得到两族直线
(1.4)«SkipRecordIf...»和«SkipRecordIf...»
称其为特征。
特征在研究波动方程的各种定解问题时,起着非常重要的作用。
比如,我们可通过特征给出(1.1)的通解。
(行波法、特征线法)
将(1.4)视为«SkipRecordIf...»与«SkipRecordIf...»之间的变量替换。
由复合函数的微分法则
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
同理可得
«SkipRecordIf...»,«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
将«SkipRecordIf...»和«SkipRecordIf...»代入(1.1)可得:
«SkipRecordIf...»«SkipRecordIf...»
即有
«SkipRecordIf...»
求其对«SkipRecordIf...»的积分得:
«SkipRecordIf...»其中«SkipRecordIf...»是«SkipRecordIf...»的任意可微函数。
再求其对«SkipRecordIf...»的积分得:
(1.5)«SkipRecordIf...»«SkipRecordIf...»
其中«SkipRecordIf...»和«SkipRecordIf...»均为任意的二次连续可微函数。
(1.5)为(1.1)的通解,即包含两个任意函数的解。
为了确定函数«SkipRecordIf...»和«SkipRecordIf...»的具体形式,给定«SkipRecordIf...»在«SkipRecordIf...»轴的初值
(1.5)«SkipRecordIf...»
将(1.5)式代入上式,则有
(ⅰ)«SkipRecordIf...»
注意«SkipRecordIf...»«SkipRecordIf...»;«SkipRecordIf...»«SkipRecordIf...»,有
(ⅱ)«SkipRecordIf...»
并对«SkipRecordIf...»积分一次,得
«SkipRecordIf...»
与(ⅰ)式联立求解,得
«SkipRecordIf...»
«SkipRecordIf...»
将其回代到通解中,即得(1.1)在(1.5)条件下的解:
(1.6)«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
即为法国数学家JeanLeRondd’Alembert(1717-1783)提出的著名的D’Alembert公式。
由D’Alembert公式还可以导出解的稳定性,即当初始条件(1.5)仅有微小的误差时,其解也只有微小的改变。
如有两组初始条件:
«SkipRecordIf...»
满足«SkipRecordIf...»,«SkipRecordIf...»,则
«SkipRecordIf...»«SkipRecordIf...»+«SkipRecordIf...»
«SkipRecordIf...»
即
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
显然,当«SkipRecordIf...»有限时,解是稳定的。
此外,由D’Alembert公式可以看出,解在«SkipRecordIf...»点,«SkipRecordIf...»的值仅依赖于«SkipRecordIf...»轴上区间«SkipRecordIf...»内的初始值«SkipRecordIf...»,«SkipRecordIf...»,与其他点上的初始条件无关。
故称区间«SkipRecordIf...»为点«SkipRecordIf...»的依存域。
它是过点«SkipRecordIf...»的两条斜率分别为«SkipRecordIf...»的直线在«SkipRecordIf...»轴上截得的区间。
对于初始轴«SkipRecordIf...»上的区间«SkipRecordIf...»,过«SkipRecordIf...»点作斜率为«SkipRecordIf...»的直线«SkipRecordIf...»;过«SkipRecordIf...»点作斜率为«SkipRecordIf...»的直线«SkipRecordIf...»。
它们和区间«SkipRecordIf...»一起构成一个三角区域。
此三角区域中任意点«SkipRecordIf...»的依存区间都落在«SkipRecordIf...»内部。
所以解在此三角形区域中的数值完全由区间«SkipRecordIf...»上的初始条件确定,而与区间外的初始条件无关。
这个三角形区域称为区间«SkipRecordIf...»的决定域。
在«SkipRecordIf...»上给定初始条件,就可以在其决定域中确定初值问题的解。
1.2显格式
现在构造(1.1)的差分逼近。
取空间步长«SkipRecordIf...»和时间步长«SkipRecordIf...»,用两族平行直线
«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
作矩形网络。
于网点«SkipRecordIf...»处Taylor展开成
«SkipRecordIf...»
«SkipRecordIf...»
代入(1.1),并略去截断误差,则得差分格式:
(1.7)«SkipRecordIf...»«SkipRecordIf...»
«SkipRecordIf...»,«SkipRecordIf...»
这里«SkipRecordIf...»表示«SkipRecordIf...»于网点«SkipRecordIf...»处的近似值。
初值条件(1.5)用下列差分方程近似:
(1.8)«SkipRecordIf...»
(1.9)«SkipRecordIf...»
注意:
(1.7)的截断误差阶是«SkipRecordIf...»,而(1.9)的截断误差阶仅是«SkipRecordIf...»。
为此需要提高(1.9)的精度,可用中心差商代替«SkipRecordIf...»,即
(1.10)«SkipRecordIf...»
为了处理«SkipRecordIf...»,在(1.7)中令«SkipRecordIf...»,得
«SkipRecordIf...»«SkipRecordIf...»
进一步,
«SkipRecordIf...»«SkipRecordIf...»
其中«SkipRecordIf...»。
并用(1.10)式的«SkipRecordIf...»代入上式得
«SkipRecordIf...»«SkipRecordIf...»
即
(1.11)«SkipRecordIf...»«SkipRecordIf...»
这样,利用(1.8)(1.11),可以由初始层«SkipRecordIf...»的已知值,算出第一层«SkipRecordIf...»各网格节点上的值。
然后利用(1.7)或显式三层格式
(1.12)«SkipRecordIf...»«SkipRecordIf...»
可以逐层求出任意网点值。
以上显式三层格式也可用于求解混合问题:
(1.13)«SkipRecordIf...»
取«SkipRecordIf...»,«SkipRecordIf...»。
除(1.7)~(1.9)外。
再补充边值条件
(1.14)«SkipRecordIf...»,«SkipRecordIf...»
1.3稳定性分析
下面我们要讨论(1.7)的稳定性。
为引用Fourier方法,我们把波动方程(1.1)化成一阶偏微分方程组,相应地把显式三层格式(1.7)化成二层格式。
一种简单的做法是引进变量«SkipRecordIf...»,于是(1.1)化为
«SkipRecordIf...»,«SkipRecordIf...»
这样会使得初值«SkipRecordIf...»与«SkipRecordIf...»不适定(不唯一),更合理的方法是再引进一个变量«SkipRecordIf...»,将(1.1)化为
(1.15)«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
注意到:
«SkipRecordIf...»;
«SkipRecordIf...»
若令«SkipRecordIf...»,«SkipRecordIf...»,则(1.5)可写成
(1.16)«SkipRecordIf...»
相应地,将(1.7)写成等价的双层格式:
(1.17)«SkipRecordIf...»
即
«SkipRecordIf...»«SkipRecordIf...»
其中«SkipRecordIf...»,«SkipRecordIf...»«SkipRecordIf...»。
可直接验证之。
记«SkipRecordIf...»为网比。
用Fourier方法可以证明,差分方程(1.17)稳定的必要条件是网比
(1.19)«SkipRecordIf...»«SkipRecordIf...»。
充分条件是网比
(1.19)«SkipRecordIf...»«SkipRecordIf...»。
Courant等证明,«SkipRecordIf...»时,差分解仍稳定,收敛。
但是要求有更光滑的初值。
习惯上也称«SkipRecordIf...»为Courant条件或C-F-L(Courant-Fridrichs-Lewy)条件。
稳定性条件(1.19)有直观的几何解释。
从方程(1.12)
«SkipRecordIf...»«SkipRecordIf...»
可看出,«SkipRecordIf...»依赖于前两层的值:
«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,而这四个值由依赖于,«SkipRecordIf...»依赖于:
«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
«SkipRecordIf...»依赖于:
«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
«SkipRecordIf...»依赖于:
«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
«SkipRecordIf...»依赖于:
«SkipRecordIf...»«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»
以此类推,可知,«SkipRecordIf...»最终依赖于初始层«SkipRecordIf...»上的下列值:
«SkipRecordIf...»,«SkipRecordIf...»,…,«SkipRecordIf...»,…,«SkipRecordIf...»,«SkipRecordIf...»
因此,称«SkipRecordIf...»轴上含于区间«SkipRecordIf...»的网点为差分解«SkipRecordIf...»的依存域,它是«SkipRecordIf...»轴上被过«SkipRecordIf...»和«SkipRecordIf...»以及«SkipRecordIf...»和«SkipRecordIf...»的两条直线所切割下来的区间所覆盖的网域。
而过«SkipRecordIf...»的两条特征线为:
«SkipRecordIf...»。
差分格式稳定的必要条件为:
«SkipRecordIf...»«SkipRecordIf...»或«SkipRecordIf...»,并且进而«SkipRecordIf...»。
可见差分格式稳定的必要条件是:
差分解的依存域必须包含微分方程解的依存域,否则差分格式不稳定。
用依存域的概念容易证明:
当«SkipRecordIf...»时,差分解不收敛。
1.4隐式
为了得到绝对稳定的差分格式,用第«SkipRecordIf...»层、«SkipRecordIf...»层、«SkipRecordIf...»层的中心差商的加权平均去逼近«SkipRecordIf...»得到下列差分格式:
«SkipRecordIf...»«SkipRecordIf...»
或«SkipRecordIf...»
其中«SkipRecordIf...»是参数。
可以证明,对于«SkipRecordIf...»时,差分格式绝对稳定;«SkipRecordIf...»时,差分格式的充要条件是:
«SkipRecordIf...»。
当«SkipRecordIf...»就是显格式(1.7),一个常用的隐式格式是取«SkipRecordIf...»此时,差分格式为:
«SkipRecordIf...»«SkipRecordIf...»
或«SkipRecordIf...»
高维波动方程!
§3一阶双曲方程
双曲方程与椭圆方程和抛物方程的一个重要区别是,双曲方程具有特征和特征关系,其解对初值有局部依赖性质。
初值的函数性质(如间断、弱间断等)也沿着特征传播,因而其解一般没有光滑性质。
我们在构造双曲方程的差分逼近时,应充分注意这些特性。
下面对于一阶双曲方程,介绍几种常见的差分格式
3.1迎风格式
首先考虑一阶线性常系数双曲方程
(3.1)«SkipRecordIf...»
此方程虽简单,但是对我们构造差分格式很有启发。
我们的主要的目的是构造差分格式,因此只限于考虑纯初值问题。
对于(3.1)按照用差商代替微商的方法,自然有如下三种格式:
«SkipRecordIf...»«SkipRecordIf...»(左偏心格式)
«SkipRecordIf...»«SkipRecordIf...»(右偏心格式)
«SkipRecordIf...»«SkipRecordIf...»(中心格式)
其中«SkipRecordIf...»和«SkipRecordIf...»的截断误差的阶为«SkipRecordIf...»,«SkipRecordIf...»的截断误差的阶为«SkipRecordIf...»。
记
(3.3)«SkipRecordIf...»
将«SkipRecordIf...»~«SkipRecordIf...»式改写为:
«SkipRecordIf...»«SkipRecordIf...»
«SkipRecordIf...»«SkipRecordIf...»
«SkipRecordIf...»«SkipRecordIf...»
用Fourier方法分析稳定性可知,«SkipRecordIf...»绝对不稳定。
«SkipRecordIf...»时,«SkipRecordIf...»不稳定,而«SkipRecordIf...»当«SkipRecordIf...»稳定,;«SkipRecordIf...»时,«SkipRecordIf...»不稳定,而«SkipRecordIf...»当«SkipRecordIf...»稳定。
这两个稳定条件意味着差分方程的依存域必须包含微分方程的依存域。
同样的思想可用于构造变系数方程
«SkipRecordIf...»
的差分格式。
此时«SkipRecordIf...»可能变号,因此相应的格式为:
(3.6)«SkipRecordIf...»
其中«SkipRecordIf...»。
稳定性条件为
(3.7)«SkipRecordIf...»
由(3.7),并取«SkipRecordIf...»,则知«SkipRecordIf...»和«SkipRecordIf...»右端的系数非负。
当«SkipRecordIf...»时,
«SkipRecordIf...»
当«SkipRecordIf...»时,
«SkipRecordIf...»
其中«SkipRecordIf...»是以«SkipRecordIf...»为分量的的向量。
总之,«SkipRecordIf...»。
这说明(3.6)稳定,按气体力学的含义(表示气流速度),称(3.6)为迎风格式。
初边值问题:
边值条件应该在迎风方向给出!
3.2积分守恒的差分格式
迎风格式是根据特征走向构造出来的向前或向后差分格式。
现在以积分守恒方程出发构造差分格式。
所谓守恒方程是指如下散度型偏微分方程
(3.13)«SkipRecordIf...»
设«SkipRecordIf...»是«SkipRecordIf...»平面中任意有界域,由Green公式
«SkipRecordIf...»«SkipRecordIf...»
其中«SkipRecordIf...»。
于是可将(3.13)写成积分守恒方程
(3.14)«SkipRecordIf...»«SkipRecordIf...»0
1.Lax格式
首先,我们从(3.14)出发构造所谓Lax格式。
取«SkipRecordIf...»为«SkipRecordIf...»,«SkipRecordIf...»,«SkipRecordIf...»和«SkipRecordIf...»为顶点的开矩形。
«SkipRecordIf...»为其边界,则
(3.15)«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»+«SkipRecordIf...»+«SkipRecordIf...»+«SkipRecordIf...»
右端第一积分用梯形公式,第二积分用中矩形公式即
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»,«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
第三、第四积分用如下矩形公式计算:
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»,«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
从而有
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
两端同除以«SkipRecordIf...»得Lax格式
(3.16)«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
其中«SkipRecordIf...»,此格式的截断误差为«SkipRecordIf...»。
特别地,«SkipRecordIf...»时,Lax格式为关于«SkipRecordIf...»的显格式:
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
即«SkipRecordIf...»
其稳定性条件为«SkipRecordIf...»。
现在回过头来看绝对不稳定格式«SkipRecordIf...»
«SkipRecordIf...»«SkipRecordIf...»
Lax格式实际是用«SkipRecordIf...»取代«SkipRecordIf...»的结果,这样一个变化就使得绝对不稳定格式成为条件稳定,并保持截断误差为«SkipRecordIf...»。
双曲方程组
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
即
«SkipRecordIf...»
若矩阵«SkipRecordIf...»相似于对角矩阵,则称为双曲方程组,可以化成«SkipRecordIf...»个一阶双曲方程组,分别求解。
«SkipRe