本文提出了一种求变系数椭圆型方程定解问题的数值解法,并进行了误差分析,通过数值实验验证了该方法收敛速度快,误差小,在时间和空间上能达到二阶精度。 This paper proposes a numerical solution for solving that problem of fixed solution of the variable coefficient elliptic equation, and we get the corresponding error analysis, the method is verified by numerical experiments; convergence speed and small error, in time and space can achieve second-order accuracy.
朱多薇1,娜扎开提·阿迪力1,伊马木·麦麦提2,阿不都热西提·阿不都外力1
1新疆大学,数学与系统科学学院,新疆 乌鲁木齐
2陕西师范大学,数学与信息学院,陕西 西安
收稿日期:2018年10月1日;录用日期:2018年10月17日;发布日期:2018年10月24日
本文提出了一种求变系数椭圆型方程定解问题的数值解法,并进行了误差分析,通过数值实验验证了该方法收敛速度快,误差小,在时间和空间上能达到二阶精度。
关键词 :变系数椭圆型方程,数值解法,误差分析
Copyright © 2018 by authors and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
目前关于常系数椭圆型方程定解问题的数值解法已有很多差分格式 [
{ − ∑ i = 1 2 ∑ j = 1 2 ∂ ∂ x i ( a i j ( x 1 , x 2 ) ∂ u ( x 1 , x 2 ) ∂ x j ) = f ( x i , x j ) , ∀ ( x 1 , x 2 ) ∈ Ω , u ( x 1 , x 2 ) | Γ = g ( x 1 , x 2 ) , ∀ ( x 1 , x 2 ) ∈ Γ . (1)
其中 a i j > 0 , ( i , j = 1 , 2 ) 是关于 x 1 , x 2 的变系数函数, f ( x 1 , x 2 ) , g ( x 1 , x 2 ) 是 x 1 , x 2 的足够光滑的函数,求解区域 Ω = [ a , b ] × [ c , d ] ,其边界 Γ 为分段光滑曲线。
为了推导差分格式,取沿 x 1 方向和 x 2 方向的步长h和k,做两族分别 x 1 轴和 x 2 轴平行的直线:
x 1 i = i h , i = 0 , 1 , 2 , ⋯ , m ,
x 2 j = j k , j = 0 , 1 , 2 , ⋯ n ,
两族直线的交点 ( x 1 i , x 2 j ) 称为节点。若两个节点沿 x 1 轴方向(或 x 2 轴方向)只相差一个步长时,称两个节点是相邻的。以 Ω h = { ( x 1 i , x 2 j ) | ( x 1 i , x 2 j ) ∈ Ω } 表示所有属于 Ω 内部的节点集合,并称此类点为内节点。
以 Γ h 表示网格线 x 1 = x 1 i 或 x 2 = x 2 j 与 Γ 的交点的集合,并称此类点为边界节点。
记 Ω h 上的网格函数为:
U = { U i j | 0 ≤ i ≤ m , 0 ≤ j ≤ n }
其中
U i j = { u ( x 1 i , x 2 j ) | 0 ≤ i ≤ m , 0 ≤ j ≤ n } .
把问题(1)用极坐标下的差分格式:
[ 1 r ∂ ∂ r ( r ∂ u ∂ r ) ] i j ≈ 1 r i ( Δ r ) 2 [ r i + 1 2 u ( r i + 1 , θ j ) − ( r i + 1 2 + r i − 1 2 ) u ( r i , θ j ) + r i − 1 2 u ( r i − 1 , θ j ) ] (2)
离散 [
第一步,对问题(1)中的 ∂ ∂ x i ( a i j ( x 1 , x 2 ) ∂ u ( x 1 , x 2 ) ∂ x j ) ,先把括号外面的一阶微分 ∂ ∂ x i 用半个步长的中心差分代替。即
( a i j ( x 1 , x 2 ) ∂ u ( x 1 , x 2 ) ∂ x j ) | ( i + 1 2 , j ) − ( a i j ( x 1 , x 2 ) ∂ u ( x 1 , x 2 ) ∂ x j ) | ( i − 1 2 , j ) h ,
第二步,把第一步离散后的微分再用半个步长的中心差分代替,可得到问题(1)中的每一个微分项的离散格式如下:
∂ ∂ x 1 ( a 11 ∂ u ∂ x 1 ) = a i + 1 2 , j 11 ( u i + 1 , j − u i , j ) − a i − 1 2 , j 11 ( u i , j − u i − 1 , j ) h 2 + O ( h 2 ) , (3)
∂ ∂ x 1 ( a 12 ∂ u ∂ x 2 ) = a i + 1 2 , j 12 ( u i + 1 2 , j + 1 2 − u i + 1 2 , j - 1 2 ) − a i − 1 2 , j 12 ( u i − 1 2 , j + 1 2 − u i − 1 2 , j − 1 2 ) h 2 + O ( k h ) , (4)
∂ ∂ x 2 ( a 21 ∂ u ∂ x 1 ) = a i , j + 1 2 21 ( u i + 1 2 , j + 1 2 − u i − 1 2 , j + 1 2 ) − a i , j − 1 2 21 ( u i + 1 2 , j − 1 2 − u i − 1 2 , j − 1 2 ) h 2 + O ( k h ) , (5)
∂ ∂ x 2 ( a 22 ∂ u ∂ x 2 ) = a i , j + 1 2 22 ( u i , j + 1 − u i , j ) − a i , j − 1 2 22 ( u i , j − u i , j − 1 ) k 2 + O ( k 2 ) , (6)
其中变系数函数 a 11 , a 12 , a 21 , a 22 在半个步长上的值为
a i + 1 2 , j 11 , a i + 1 2 , j 12 , a i , j + 1 2 21 , a i , j + 1 2 22 , a i − 1 2 , j 11 , a i − 1 2 , j 12 , a i , j − 1 2 21 , a i , j − 1 2 22 .
以上离散格式(3),(4),(5),(6)略去高阶项后代入到问题(1)得到如下差分格式:
− a i + 1 2 , j 11 h 2 u i + 1 , j + ( a i + 1 2 , j 11 + a i − 1 2 , j 11 h 2 + a i , j + 1 2 22 + a i , j − 1 2 22 k 2 ) u i , j − a i − 1 2 , j 11 h 2 u i − 1 , j − a i , j + 1 2 22 k 2 u i , j + 1 − a i , j − 1 2 22 k 2 u i , j − 1 − ( a i + 1 2 , j 12 + a i , j + 1 2 21 k h ) u i + 1 2 , j + 1 2 + ( a i + 1 2 , j 12 + a i , j − 1 2 21 k h ) u i + 1 2 , j − 1 2 + ( a i − 1 2 , j 12 + a i , j + 1 2 21 k h ) u i − 1 2 , j + 1 2 − ( a i - 1 2 , j 12 + a i , j - 1 2 21 k h ) u i − 1 2 , j − 1 2 = f i , j (7)
其中 f i , j = f ( x i , x j ) 。
差分格式(7)是由节点和剖分所形成的网格的中心
( ( i − 1 2 , j − 1 2 ) , ( i − 1 2 , j + 1 2 ) , ( i + 1 2 , j − 1 2 ) , ( i + 1 2 , j + 1 2 ) )
(称为网格的中心点)交错得到的,从节点的角度看,用了五个节点 x i , j + 1 , x i , j − 1 , x i , j , x i − 1 , j , x i + 1 , j ,但是计算的时候我们用到了网格的中心点,又可以看作是九个点的差分格式。因此,我们称差分格式(7)为交错五点差分格式。
观察差分格式(7),我们需要计算节点和网格的中心点,计算量比较大。因此,我们用中点公式把网格的中心点转化到节点上。如下:
u i + 1 2 , j + 1 2 = u i + 1 , j + u i , j + 1 2 + O ( h 2 + k 2 ) , (8)
u i + 1 2 , j − 1 2 = u i + 1 , j + u i , j − 1 2 + O ( h 2 + k 2 ) , (9)
u i − 1 2 , j + 1 2 = u i − 1 , j + u i , j + 1 2 + O ( h 2 + k 2 ) , (10)
u i − 1 2 , j − 1 2 = u i − 1 , j + u i , j − 1 2 + O ( h 2 + k 2 ) , (11)
把所有网格的中心点都转化到节点上,这样方便计算,就得到较简单的五点差分格式:
( − a i + 1 2 , j 11 h 2 + a i , j − 1 2 21 − a i , j + 1 2 21 2 k h ) u i + 1 , j + ( a i + 1 2 , j 11 + a i − 1 2 , j 11 h 2 + a i , j + 1 2 22 + a i , j − 1 2 22 k 2 ) u i , j + ( − a i − 1 2 , j 11 h 2 + a i , j + 1 2 21 − a i , j − 1 2 21 2 k h ) u i − 1 , j + ( − a i , j + 1 2 22 k 2 + a i − 1 2 , j 12 − a i + 1 2 , j 12 2 k h ) u i , j + 1 + ( − a i , j − 1 2 22 k 2 + a i + 1 2 , j 12 − a i − 1 2 , j 12 2 k h ) u i , j − 1 = f i , j (12)
五点差分格式(12)简单,易于编程实现,并且很容易推广到其它复杂情形。由于交错五点差分格式(7)具备九点差分格式的特点,我们可以构造一般的九点差分格式,对比研究新格式(7)。以下是构造的一般九点差分格式。
同交错五点差分格式的离散一样,把问题(1)也用极坐标下的差分格式(2)进行离散,但是每个微分项不都用半个步长的中心差分来离散,构造以下九点差分格式时,微分项 ∂ ∂ x 1 ( a 11 ∂ u ∂ x 1 ) , ∂ ∂ x 2 ( a 22 ∂ u ∂ x 2 ) 与交错五点差分格式的离散一样,分两步,每一步都是用了半个步长的中心差分离散 [
∂ ∂ x 1 ( a 11 ∂ u ∂ x 1 ) = a i + 1 2 , j 11 ( u i + 1 , j − u i , j ) − a i − 1 2 , j 11 ( u i , j − u i − 1 , j ) h 2 + O ( h 2 ) , (13)
∂ ∂ x 1 ( a 12 ∂ u ∂ x 2 ) = a i + 1 , j 12 ( u i + 1 , j + 1 − u i + 1 , j − 1 ) − a i − 1 , j 12 ( u i − 1 , j + 1 − u i − 1 , j − 1 ) 4 k h + O ( k h ) , (14)
∂ ∂ x 2 ( a 21 ∂ u ∂ x 1 ) = a i , j + 1 21 ( u i + 1 , j + 1 − u i − 1 , j + 1 ) − a i , j - 1 21 ( u i + 1 , j − 1 − u i − 1 , j − 1 ) 4 k h + O ( k h ) , (15)
∂ ∂ x 2 ( a 22 ∂ u ∂ x 2 ) = a i , j + 1 2 22 ( u i , j + 1 − u i , j ) − a i , j − 1 2 22 ( u i , j − u i , j − 1 ) h 2 + O ( k 2 ) , (16)
以上离散格式(13),(14),(15),(16)略去高阶项代入到问题(1)得到如下九点差分格式:
− a i + 1 2 , j 11 h 2 u i + 1 , j + ( a i + 1 2 , j 11 + a i − 1 2 , j 11 h 2 + a i , j + 1 2 22 + a i , j − 1 2 22 k 2 ) u i , j − a i − 1 2 , j 11 h 2 u i − 1 , j − a i , j − 1 2 22 k 2 u i , j − 1 − a i , j + 1 2 22 k 2 u i , j + 1 − ( a i + 1 , j 12 + a i , j + 1 21 4 k h ) u i + 1 , j + 1 + ( a i + 1 , j 12 + a i , j − 1 21 4 k h ) u i + 1 , j − 1 + ( a i - 1 , j 12 + a i , j + 1 21 4 k h ) u i − 1 , j + 1 − ( a i − 1 , j 12 + a i , j − 1 21 4 k h ) u i − 1 , j − 1 = f i , j (17)
以下分别讨论三种差分格式的误差。
我们考虑的是变系数椭圆型方程的定解问题,对于交错五点差分格式(7)来说,用微分方程的解 u ( x i , x j ) 来代替差分格式(7)中的近似解 u i , j 这样就得到问题两边的差 u i + 1 , j , u i − 1 , j , u i , j − 1 , u i , j + 1 在点 ( x i , x j ) 处Taylor 展开代入差分格式)就是截断误差:
T ( x 1 , x 2 ) = − h 2 6 ∂ a 11 ∂ x 1 ∂ 3 u ∂ x 1 3 ( ξ , x 2 ) − k 2 6 ∂ a 22 ∂ x 2 ∂ 3 u ∂ x 2 3 ( x 1 , η ) − h 2 24 ∂ a 21 ∂ x 2 ∂ 3 u ∂ x 1 3 ( ξ , x 2 ) − k 2 24 ∂ a 12 ∂ x 1 ∂ 3 u ∂ x 2 3 ( x 1 , η ) − h 2 8 ∂ a 12 ∂ x 1 ∂ 2 u ∂ x 1 2 ( ξ , x 2 ) ∂ u ∂ x 2 ( x 1 , η ) − k 2 8 ∂ a 21 ∂ x 2 ∂ 2 u ∂ x 2 2 ( x 1 , η ) ∂ u ∂ x 1 ( ξ , x 2 ) (18)
其中 ξ ∈ ( x 1 − h 2 , x 1 + h 2 ) , η ∈ ( x 2 − k 2 , x 2 + k 2 ) 。
同理,可得到一般的五点差分格式(12)的截断误差如下:
T ( x 1 , x 2 ) = − h 2 6 ( ∂ a 11 ∂ x 1 + ∂ a 21 ∂ x 2 ) ∂ 3 u ∂ x 1 3 ( ξ , x 2 ) − k 2 6 ( ∂ a 22 ∂ x 2 + ∂ a 12 ∂ x 1 ) ∂ 3 u ∂ x 2 3 ( x 1 , η ) (19)
其中 ξ ∈ ( x 1 − h 2 , x 1 + h 2 ) , η ∈ ( x 2 − k 2 , x 2 + k 2 ) 。
同理,可得到一般九点差分格式(17)的截断误差如下:
T ( x 1 , x 2 ) = − h 2 6 ∂ a 11 ∂ x 1 ∂ 3 u ∂ x 1 3 ( ξ , x 2 ) − k 2 6 ∂ a 22 ∂ x 2 ∂ 3 u ∂ x 2 3 ( x 1 , η ) − h 2 12 ∂ a 21 ∂ x 2 ∂ 3 u ∂ x 1 3 ( ξ , x 2 ) − k 2 12 ∂ a 12 ∂ x 1 ∂ 3 u ∂ x 2 3 ( x 1 , η ) − h 2 12 ∂ a 12 ∂ x 1 ∂ 2 u ∂ x 1 2 ( ξ , x 2 ) ∂ u ∂ x 2 ( x 1 , η ) − k 2 12 ∂ a 21 ∂ x 2 ∂ 2 u ∂ x 2 2 ( x 1 , η ) ∂ u ∂ x 1 ( ξ , x 2 ) (20)
其中 ξ ∈ ( x 1 − h 2 , x 1 + h 2 ) , η ∈ ( x 2 − k 2 , x 2 + k 2 ) 。
由截断误差的讨论可知,只要网格剖分得很细,即 h , k 很小,那么问题(1)的解近似地满足相应的差分格式(7),(12),(17)。因此根据上面的计算,三种差分格式的截断误差为 O ( h 2 + t 2 ) ,即三种格式都是二阶精度的。
为了数值实验,我们考虑如下问题:
{ − ∑ i = 1 2 ∑ j = 1 2 ∂ ∂ x 1 ( a i , j ( x 1 , x 2 ) ∂ u ( x 1 , x 2 ) ∂ x j ) = f ( x 1 , x 2 ) , ∀ ( x 1 , x 2 ) ∈ Ω , a i , j ( x 1 , x 2 ) = x i x j , i , j = 1 , 2 , f ( x 1 , x 2 ) = − 3 x 1 cos x 1 cos x 2 + x 1 2 sin x 1 cos x 2 + 3 x 2 sin x 1 sin x 2 + 2 x 1 x 2 cos x 1 sin x 2 + x 2 2 sin x 1 cos x 2 , u ( x 1 , x 2 ) | Γ = 0 , ( x 1 , x 2 ) ∈ ∂ Ω (21)
我们在 Ω = [ 0 , 1 ] × [ 0 , 1 ] 上计算,准确解为 u ( x 1 , x 2 ) = sin x 1 cos x 2 。在Matlab坏境下编程实现。
我们用交错五点差分格式,一般五点差分格式和一般九点差分格式求解上述例子,分别用Gauss-Seidel迭代法和SOR迭代法解线性方程组,得到数值计算结果如下所示。
表1反映了三种差分格数值解和准确解的计算结果,从表中可以看出,交错五点差分格式与准确解最接近,能很好的保持解原来的面貌。九点差分格式与准确解也比较相似,但是没有交错五点差分格式所求的解准确,一般五点差分格式,从表格中可以看出,误差相对于交错五点差分格式和一般九点差分格式来说比较大,所以交错五点差分格式更具有一般九点差分格式的特点,计算的数值解更准确。
其中KG是用Gauss-Seidel迭代法计算的迭代次数,KS是用SOR迭代法计算的迭代次数。
表2是三种差分格式用Gauss-Seidel迭代法,SOR迭代法求解的结果,不管是Gauss-Seidel迭代法,还是SOR迭代法,从表中可以看出一般五点差分格式比九点差分格式和交错五点差分格式所迭代的次数少,一般九点差分格式比交错五点差分格式迭代的次数少,说明虽然交错五点差分格式求出的解更准确,但是计算量较大,还需要我们对交错五点差分格式的算法进一步研究。
h = k (步长) | 准确解 | 数值解(交错五点) | 数值解(九点) | 数值解(五点) |
---|---|---|---|---|
1/4 | 0.2397 | 0.2292 | 0.2281 | 0.2767 |
1/8 | 0.2455 | 0.2420 | 0.2411 | 0.2731 |
1/16 | 0.1244 | 0.1233 | 0.1230 | 0.1517 |
1/32 | 0.0936 | 0.0932 | 0.0932 | 0.1157 |
表1. 三种差分格式的数值解和准确解的计算结果
表3是三种差分格式最大误差与误差阶的计算结果,从表中可以看出交错五点差分格式的误差小,收敛速度最快,随着网格地加密,收敛阶逐渐趋向二阶,与理论预期的结果一致,九点差分格式结果也是比较理想的,但是收敛速度比交错五点差分格式的慢一些,其误差阶也趋于二阶,与理论结果保持一致。五点差分格式收敛速度较慢,最终误差趋于一个稳定的值。
取 M = N = 32 ,即 h = k = 1 32 ,用上述的三种差分格式解问题(1),得到的准确解与数值解的图像如图1。
图1可以看出准确解与三种差分格式所得的数值解非常接近,图像面貌基本一致,说明这三种差分格式对本文所求问题的数值解有效。
下面给出三种差分格式的误差图。
取 M = N = 32 ,即 h = k = 1 32 ,用上述的三种差分格式求解问题(1),得到准确解与数值解的误差如图2。
图2是三种差分格式的误差图,从图中可以看出,五点差分格式的误差明显比九点差分格式的误差大。从图2中我们还可以看出五点差分格式最大误差来源于内节点,九点差分格式的最大误差来源于边界节点,而交错五点差分格式的误差是由交错点之间计算产生的。
图1. M = N = 32准确解与三种差分格式的数值解
h = k (步长) | KG(交错五点) | KS(交错五点) | KG(九点) | KS(九点) | KG(五点) | KS(五点) |
---|---|---|---|---|---|---|
1/4 | 26 | 26 | 19 | 13 | 16 | 12 |
1/8 | 113 | 112 | 71 | 31 | 57 | 25 |
1/16 | 426 | 402 | 271 | 81 | 205 | 51 |
1/32 | 1330 | 1318 | 1038 | 218 | 752 | 114 |
表2. 三种差分格式用Gauss-Seidel迭代法和SOR迭代法求解的迭代次数
h = k (步长) | Max err1 (交错五点) | rate1 (交错五点) | Maxerr2 (九点) | rate2 (九点) | Maxerr3 (五点) |
---|---|---|---|---|---|
1/4 | 0.0106 | - | 0.0116 | - | 0.0391 |
1/8 | 0.0039 | 1.4283 | 0.0044 | 1.3985 | 0.0431 |
1/16 | 0.0012 | 1.7004 | 0.0014 | 1.6521 | 0.0397 |
1/32 | 3.4069e−04 | 1.8165 | 4.0856e−04 | 1.7751 | 0.0444 |
1/64 | 9.2356e−05 | 1.8832 | 1.1128e−04 | 1.8765 | 0.0444 |
表3. 三种差分格式的误差和误差阶
图2. 三种差分格式的误差
本文提出了变系数椭圆型方程定解问题的交错五点差分格式,并与九点差分格式和五点差分格式进行了比较,数值实验结果表明交错五点差分格式比其他两种格式效果更好,误差更小,收敛速度更快。我们建议,在求解有交叉项的变系数椭圆型定解问题时优先选择交错五点差分格式。
国家自然科学基金资助项目(10971024)。
朱多薇,娜扎开提·阿迪力,伊马木·麦麦提,阿不都热西提·阿不都外力. 变系数椭圆型方程定解问题的一种数值解法A Numerical Solution to a Solution Problem for Elliptic Equation with Variable Coefficients[J]. 应用数学进展, 2018, 07(10): 1299-1307. https://doi.org/10.12677/AAM.2018.710151
https://doi.org/10.1007/BF01386295
https://doi.org/10.1016/j.jcp.2004.07.016
https://doi.org/10.12988/ams.2016.6381
https://doi.org/10.1016/j.jcp.2017.11.007
https://doi.org/10.1080/00207160.2012.659426