1. 引言
对流扩散方程在流体运动、传热和天体物理学、海洋学、气象学以及许多其他领域[1]-[3]都有广泛的应用,它的研究对科学和工程领域都具有重要的意义。
近年来,对于对流扩散方程数值求解已有大量研究,很多研究方法已被提出。数值计算方法主要包括:有限差分法[4]、有限元法[5]、有限体积法[6]等。Tian和Dai [7]提出了定常对流扩散方程的高阶紧致指数有限差分方法,求解了线性和非线性问题,Liao和Zhu [8]建立了四阶紧致差分格式求解了一维非定常对流扩散方程,消除对流项,结合中心差分格式求解,一方面提高了数值精度,另外可以将该方法可以直接应用于更高维的问题。
重心有理插值配点法和重心Lagrange插值法是无网格法的一种。Berrut [9]系统提出了重心Lagrange插值,并且在文中说明了重心插值法的收敛性和重心插值本身无关,而是取决于多项式插值函数,只要在区间[−1, 1]上的函数足够光滑,那么多项式插值就能以很快的收敛速度收敛到所求函数。同年,Higham在文献[10]中研究了重心Lagrange插值法是向前稳定的,对插值多项式的公式进行的误差分析,并且说明了在选择恰当的插值节点时重心插值公式的高精度性。2007年王兆清[11]等人将Lagrange插值公式改写为重心型插值公式,提出了重心型插值公式。Mittal和Rohila [12]将Burgers方程和Fisher方程转化为常微分方程组,应用重心有理插值法结合SSP-RK方法进行求解。王磊磊[13]利用重心插值配点法求解了二维广义变系数Poisson方程,推导出了计算公式,给出数值算例验证了两种重心插值配点法的优越性。文献[14]基于重心Lagrange插值法和重心有理插值法提出了两种新的求积方法,对Volterra积分方程求解。
本文采用两种重心插值配点法求解二维定常对流扩散方程。第2节介绍二维定常对流扩散问题。第3节介绍两种重心插值配点法。第4节给出本文所求解方程的计算过程。第5节给出数值算例验证本文所提方法的高精度性。
2. 二维定常对流扩散方程
本节考虑如下二维定常对流扩散方程:
(1)
其中,
和
为扩散项系数,
和
为对流项系数,
为源项,该问题的定义域为
,并且未知函数
满足如下的边界条件:
(2)
(3)
3. 重心插值配点法及微分矩阵
3.1. 重心Lagrange插值法
给定
个不同的插值节点
以及对应的函数值为
,那么Lagrange插值多项式为
(4)
其中Lagrange插值基函数:
(5)
令
(6)
则公式(4)可以改写为:
(7)
定义重心插值权
(8)
则(7)式改写为
(9)
公式(9)中的插值基函数为
公式(9)是Lagrange插值的另外一种表达形式。
若让公式(9)中的
恒成立,则有:
(10)
结合公式(9)和(10),即有重心Lagrange插值公式:
(11)
其中
为重心Lagrange插值基函数。
3.2. 重心有理插值法
在区间
上存在
个不同的计算节点
且其对应的函数值为
,简化为
。
我们选择合适的参数
对于节点
选择
这
节点来计算对应的Lagrange插值多项式,即得
(12)
构造
的权函数
;根据公式(12)和权函数
构造出重心有理插值函数
(13)
其中
为插值权,
根据
可以得到:
(14)
则可以得到重心有理插值公式:
(15)
其中
为重心有理插值基函数。
3.3. 微分矩阵
两种重心插值配点法在形式上是一致的,根本不同在于权函数的不同,使用重心有理插值方法进行计算时,需要选取合适的
。
对于区间
上的节点
函数
在节点处的函数值为
则函数
的重心型插值函数为
(16)
对公式(16)在节点
处求
阶导数,所得结果为
将其写成简洁的微分矩阵如下
(17)
其中
(18)
当
时,
是
阶单位矩阵。
当
时插值基函数的
阶导数写成统一形式如下:
(19)
当
时插值基函数的
阶导数写成统一形式如下:
(20)
以上关于微分矩阵的详细推导过程见文献[15]中第1.6节。
3.4. 插值节点
由于两种插值公式中的插值权均和插值节点的选取有关,我们选取特殊的两种插值节点,即等距插值节点和Chebyshev插值节点进行计算,由于等距节点在Matlab中可以直接利用linspace指令生成,因此下面只给出Chebyshev节点的介绍。
(1) 第一类Chebyshev节点
(2) 第二类Chebyshev节点
需要注意的是,Chebyshev节点是定义在区间
内的节点族,对于一般计算区间
,可以利用区间坐标变换公式
转换计算即可。
4. 重心插值配点法求解二维定常对流扩散方程
4.1. 双变量重心插值法的介绍
在此之前,我们先介绍双变量的重心型插值配点法。
关于变量
、
的未知函数
,我们将定义区间
在
方向和
方向分别离散为
、
个计算节点,即
和
,那么在整个计算区域上便有
个张量积型插值节点
那么未知函数
的重心Lagrange插值公式可以表示成
(21)
其中
分别代表方向
和
方向上的插值基函数,并且具体形式为:
(22)
和
方向上的插值权重分别为:
(23)
为简化离散矩阵,接下来,对公式(21)求
阶偏导数有:
(24)
那么(24)式在插值节点
处的
阶偏导数为:
(25)
写成矩阵的形式:
(26)
其中,
是
方向上的
阶微分矩阵,
是
方向上的
阶微分矩阵。
4.2. 重心Lagrange插值法的离散过程
将式(21)代入方程(1)中,得到
(27)
令(27)在节点
处均成立,将这些节点代入上式有:
(28)
由插值基函数的性质以及微分矩阵的相关知识:
那么(28)式变成
(29)
令
那么(29)式变成
(30)
即
(31)
其中
接下来对边界条件进行离散:
利用重心Lagrange插值法对(2)进行近似,可以得到离散表达式
(32)
(33)
同理(3)式的离散表达式为:
(34)
(35)
将(32)-(35)写成矩阵的形式为:
(36)
(37)
其中,
和
分别表示
阶单位矩阵和
阶单位矩阵,
和
分别表示
阶单位矩阵的第1行和第
行,
和
分别表示
阶单位矩阵的第1行和第
行。
附加法施加边界条件:没有施加边界条件时(31)式是
维矩阵,将(36)式中左边的
各行直接附加到(31)式等号的左边,等号右边直接代入,形成
维矩阵方程。同理,对其它式子也进行同样操作。
置换法施加边界条件:对于
方向上的边界条件,将(37)式中左边的
各行式子对应置换(31)式等号的左边矩阵中的第
行,将式子中
中各行对应置换(31)式等号的左边矩阵的
行,对应地,等式右边也进行置换。对于
方向上边界条件的置换也类似。
至此,我们完成了利用重心Lagrange插值法离散二维定常对流扩散方程的过程以及边界条件的处理。
4.3. 重心有理插值法的离散过程
同理,将区间定义为
,结合式(21),我们可以得到关于变量
的未知函数
的重心有理插值公式为
(38)
其中
分别代表
方向和
方向上的插值基函数,并且具体形式和重心Lagrange插值法的类似,
和
分别是
和
方向上的插值权重。
将(38)代入方程(1)中,经过化简得到如下计算格式:
(39)
即
(40)
其中
同重心Lagrange插值法,对边界条件使用重心有理插值法进行离散:
可以得到二维定常对流扩散方程
的边界条件以及y的边界条件的最终离散矩阵形式为:
(41)
(42)
其中,
和
分别表示
阶单位矩阵和
阶单位矩阵,
和
分别表示
阶单位矩阵的第1行和第
行,
和
分别表示
阶单位矩阵的第1行和第
行。
附加法和置换法施加边界条件同重心Lagrange插值法离散部分的介绍,这里不再赘述。
5. 数值算例
在进行数值计算之前,我们首先给出绝对误差和相对误差的定义:
(1) 绝对误差:
(2) 相对误差:
其中
表示向量的范数,
表示精确解,
表示数值解。
下面来验证重心型插值配点法求解二维定常对流扩散方程的高精度性,我们给出如下算例。
算例 考虑二维定常对流扩散方程
其中
,
该方程具有解析解
。
边界条件由解析解确定。
取插值节点数为
,
。表1给出两种重心插值法在两种不同边界条件施加方法下的计算误差,结果显示,使用置换法施加边界条件时,两种重心插值法的计算效果均比较好;使用附加法施加边界条件时,重心有理插值法和重心有理插值法的计算误差都比置换法下的计算误差大,因此在本算例中我们选取置换法进行研究。
Table 1. Errors in different boundary condition imposition methods for two centre of gravity interpolation methods
表1. 两种重心插值法不同边界条件施加方法的误差
施加方法 |
重心Lagrange插值 |
重心有理插值 |
Er |
Rer |
Er |
Rer |
置换法 |
4.7323e-12 |
2.3450e-13 |
6.9204e-12 |
3.4294e-13 |
附加法 |
1.9005e-09 |
9.4179e-11 |
1.8991e-09 |
9.4110e-11 |
将上述结果与文献[16]中的数值计算方法积分方程法和有限体积法分别进行比较,对比结果见表2。我们发现两种重心插值法求解对流扩散方程时在较小节点数下就能够取得较小的计算误差。而文献[16]中所提方法在节点数达到
时,两种计算数值计算方法的计算误差数量级分别为
和
,由此可以表明重心插值法的高精度性。但是重心插值法在处理多个边界条件或者复杂边界条件在编程上的处理比较复杂。
Table 2. Comparison of computational errors of several numerical calculation methods
表2. 几种数值计算方法的计算误差的比较
计算方法 |
Er |
Rer |
积分方程法 |
1.7002e-3 |
3.2920e-4 |
有限体积法 |
1.8961e-2 |
4.5692e-3 |
重心Lagrange插值法 |
4.7323e-12 |
2.3450e-13 |
重心有理插值法 |
6.9204e-12 |
3.4294e-13 |
表3给出两种重心插值法在不同插值节点类型下随节点数的增加计算误差的变化,计算结果显示,在第二类Chebyshev节点下,随着节点数的增加,重心Lagrange插值法的计算误差变化幅度较小,误差数量级保持在
,整体上保持不错的计算精度,重心有理插值法的计算误差随节点数的增加逐渐变大,在节点数达到
时,误差数量级保持在
;在等距节点下,重心Lagrange插值法的计算误差随着节点数的增加越来越大,当节点数达到
时,数量级变成
,节点数再增加时,重心Lagrange插值法所得误差变得非常大,数值算法不稳定;而重心有理插值法的计算误差随节点数的增加先变小再变大,误差数量级最后保持在
,结果比重心Lagrange插值法下的结果要好,因此,两种重心插值法在第二类Chebyshev节点下均有良好的计算精度,而在等距节点下,重心Lagrange插值法更适用于较少数量的插值节点,重心有理插值法的适用性更好。
Table 3. Computational errors of two interpolation methods under two types of interpolation nodes
表3. 两类插值节点下两种插值法的计算误差
节点数 |
等距节点 |
第二类Chebyshev节点 |
重心Lagrange |
重心有理 |
重心Lagrange |
重心有理 |
|
6.6145e-05 |
1.1592e-05 |
9.4067e-12 |
1.3138e-11 |
|
4.8583e-03 |
9.2491e-06 |
1.0495e-11 |
1.0644e-11 |
|
2.2330e-01 |
1.5676e-05 |
1.4978e-11 |
2.7430e-11 |
|
5.6331e-01 |
2.5067e-05 |
2.1299e-11 |
2.3914e-11 |
|
1.4909e+02 |
2.0283e-05 |
2.5357e-11 |
4.5984e-11 |
|
4.0335e+03 |
2.1826e-05 |
3.4243e-11 |
8.7449e-11 |
|
9.6827e+03 |
3.2130e-05 |
3.7722e-11 |
1.1507e-10 |
|
5.3974e+04 |
7.3608e-05 |
7.8012e-11 |
2.3820e-10 |
根据前面的分析,给出两种重心插值法在第二类Chebyshev节点下的数值解如图1,结果显示两种插值法都具有良好的数值拟合性。
(a) 重心Lagrange插值法的数值解图 (b) 重心有理插值法的数值解图
Figure 1. Numerical solution plots of the two interpolation methods under Chebyshev node
图1. Chebyshev节点下两种插值方法的数值解图
下面给出第二类Chebyshev节点下两种重心插值法对应的误差分布图,见图2,重心Lagrange插值法在区域边界处的震荡要比重心有理插值法下的震荡大一些,两种重心插值法在中心区域处均比较稳定。
(a) 重心Lagrange插值法的误差图 (b) 重心有理插值法的误差图
Figure 2. Error distribution of two interpolation methods under Chebyshev node
图2. Chebyshev节点下两种插值法的误差分布
6. 结论
本文介绍求解二维定常对流扩散方程的重心Lagrange插值配点法和重心有理插值配点法,得到定常对流扩散方程离散化的矩阵格式。数值算例验证了两种重心插值方法在Chebyshev节点下的数值解和精确解均具有较好的吻合度。在等距节点下,重心有理插值法的计算精度要比重心Lagrange插值法的计算精度高。
基金项目
陕西省科技厅重点研发一般资助项目(2024M722604);西安市科技局高校院所科技人员服务企业项目(24GXFW0038)。
NOTES
*通讯作者。