奇异摄动问题一直需要高精度的数值方法,本文提出了重心拉格朗日插值配点法来求解一类奇异摄动抛物型反应扩散问题,与其他方法相比,数值实验表明该方法是解决这类问题的一种高精度方法。 The singularly perturbed problem’s high accuracy numerical method is always needed. In this paper, barycentric Lagrange interpolation collocation method (BLICM) is proposed for solving a class of singularly perturbed parabolic reaction-diffusion problem. Compared with other methods, the numerical experiment shows BLICM is a high precision method to solve this class of problems.
赵辰辉,王玉兰
内蒙古工业大学,内蒙古 呼和浩特
收稿日期:2019年6月11日;录用日期:2019年6月21日;发布日期:2019年6月28日
奇异摄动问题一直需要高精度的数值方法,本文提出了重心拉格朗日插值配点法来求解一类奇异摄动抛物型反应扩散问题,与其他方法相比,数值实验表明该方法是解决这类问题的一种高精度方法。
关键词 :奇异摄动,重心拉格朗日插值配点法,抛物型反应扩散问题
Copyright © 2019 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
我们考虑下列的奇异摄动抛物型反应扩散问题:
{ ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + α 1 u + α 2 v + α 3 r = f 1 ( x , t ) , ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 + β 1 u + β 2 v + β 3 r = f 2 ( x , t ) , ( x , t ) ∈ [ 0 , 1 ] × [ 0 , 1 ] , ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 + γ 1 u + γ 2 v + γ 3 r = f 3 ( x , t ) , (1)
具有初始边界条件
u ( x , 0 ) = f 0 ( x ) , v ( x , 0 ) = g 0 ( x ) , r ( x , 0 ) = s 0 ( x ) , x ∈ [ 0 , 1 ] u ( 0 , t ) = f 1 ( t ) , u ( 1 , t ) = f 2 ( t ) , v ( 0 , t ) = g 1 ( t ) , v ( 1 , t ) = g 2 ( t ) , t ∈ [ 0 , 1 ] r ( 0 , t ) = s 1 ( t ) , r ( 1 , t ) = s 2 ( t ) , (2)
其中 ε 是任意小参数, α i , β i , γ i 为给定常数, f 1 ( x , t ) , f 2 ( x , t ) , f 3 ( x , t ) , f 1 ( t ) , f 2 ( t ) , g 1 ( t ) , g 2 ( t ) , s 1 ( t ) , s 2 ( t ) 是已知函数, u ( x , t ) , v ( x , t ) , r ( x , t ) 分别是未知函数。
奇异摄动抛物型反应扩散问题 [
我们考虑规则区域 Ω = [ 0 , 1 ] × [ 0 , 1 ] ,区间 [ 0 , 1 ] 被分成M个不同的节点,区间 [ 0 , 1 ] 也被分成N个不同
的节点。
为了提高计算精度,我们选则Chebyshev节点,切比雪夫节点计算公式如下:
x i = − cos ( i − 1 M − 1 ) π , i = 1 , 2 , ⋯ , M , t j = − cos ( j − 1 N − 1 ) π , j = 1 , 2 , ⋯ , N . (3)
节点 ( x i , t j ) 处的 u ( x , t ) , v ( x , t ) 和 r ( x , t ) 的重心插值可写为:
u ( x , t ) = ∑ i = 1 M ∑ j = 1 N ξ i ( x ) η j ( t ) u ( x i , t j ) , v ( x , t ) = ∑ i = 1 M ∑ j = 1 N ξ i ( x ) η j ( t ) v ( x i , t j ) , r ( x , t ) = ∑ i = 1 M ∑ j = 1 N ξ i ( x ) η j ( t ) r ( x i , t j ) , (4)
其中, ξ i ( x ) = ∏ k = 1 , k ≠ i M ( x − x k ) ∏ k = 1 , k ≠ i M ( x i − x k ) , i = 1 , 2 , ⋯ , M , η j ( t ) = ∏ k = 1 , k ≠ j N ( t − t k ) ∏ k = 1 , k ≠ j N ( t j − t k ) , j = 1 , 2 , ⋯ , N 。
使用公式(4),节点上函数 u ( x , t ) 的l + k阶偏导数可表示为:
∂ l + k u ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x ) η j ( k ) ( t ) u ( x i , t j ) , l , k = 1 , 2 , ⋯ , ∂ l + k v ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x ) η j ( k ) ( t ) v ( x i , t j ) , l , k = 1 , 2 , ⋯ , ∂ l + k r ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x ) η j ( k ) ( t ) r ( x i , t j ) , l , k = 1 , 2 , ⋯ , (5)
在节点 ( x p , t q ) 处,偏导数的函数值定义为:
u ( l , k ) ( x p , t q ) = ∂ l + k u ( x p , t q ) ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x p ) η j ( k ) ( t q ) u ( x p , t q ) , p = 1 , 2 , ⋯ , M ; q = 1 , 2 , ⋯ , N , v ( l , k ) ( x p , t q ) = ∂ l + k v ( x p , t q ) ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x p ) η j ( k ) ( t q ) v ( x p , t q ) , p = 1 , 2 , ⋯ , M ; q = 1 , 2 , ⋯ , N , r ( l , k ) ( x p , t q ) = ∂ l + k r ( x p , t q ) ∂ x l ∂ t k = ∑ i = 1 M ∑ j = 1 N ξ i ( l ) ( x p ) η j ( k ) ( t q ) r ( x p , t q ) , p = 1 , 2 , ⋯ , M ; q = 1 , 2 , ⋯ , N . (6)
令 x 0 = [ x 1 , x 2 , ⋯ , x M ] T , t 0 = [ t 1 , t 2 , ⋯ , t N ] T 分别定义为x轴和t轴,由张量型节点坐标组成的矩阵X和T
分别定义为:
X = [ ( x 0 ) T , ( x 0 ) T , ⋯ , ( x 0 ) T ] T , T = [ t 0 , t 0 , ⋯ , t 0 ] . (7)
x , t 是由矩阵 X , T 拉伸的 ( N × M ) 维列向量:
x = [ X 1 , X 2 , ⋯ , X M × N ] T , t = [ T 1 , T 2 , ⋯ , T M × N ] T . (8)
向量 x , t 和向量 x 0 , t 0 的分量之间的关系如下:
X k = X ( i − 1 ) N + j = x i , T k = T ( i − 1 ) N + j = t j , i = 1 , 2 , ⋯ , M ; J = 1 , 2 , ⋯ , N ; k = 1 , 2 , ⋯ , M × N . (9)
假设u和 u ( l , k ) 是由 u ( x i , t j ) 和 u ( l , k ) ( x i , t j ) ( i = 1 , 2 , ⋯ , M ; j = 1 , 2 , ⋯ , N ) 组成的列向量,即:
u = [ u 1 , u 2 , ⋯ , u M × N ] T , u ( l , k ) = [ u 1 ( l , k ) , u 2 ( l , k ) , ⋯ , u M × N ( l , k ) ] T ,
u p = u ( X p , T p ) , u p ( l , k ) = u ( l , k ) ( X p , T p ) , p = 1 , 2 , ⋯ , M × N .
v = [ v 1 , v 2 , ⋯ , v M × N ] T , v ( l , k ) = [ v 1 ( l , k ) , v 2 ( l , k ) , ⋯ , v M × N ( l , k ) ] T ,
v p = v ( X p , T p ) , v p ( l , k ) = v ( l , k ) ( X p , T p ) , p = 1 , 2 , ⋯ , M × N .
r = [ r 1 , r 2 , ⋯ , r M × N ] T , r p ( l , k ) = [ r 1 ( l , k ) , r 2 ( l , k ) , ⋯ , r M × N ( l , k ) ] T ,
r p = r ( X p , T p ) , r p ( l , k ) = r ( l , k ) ( X p , T p ) , p = 1 , 2 , ⋯ , M × N .
因此,(4)可写成下列的矩阵形式:
u ( l , k ) = D ( l , k ) u , v ( l , k ) = D ( l , k ) v , r ( l , k ) = D ( l , k ) r . (10)
在上面的公式中, D ( l , k ) = C ( l ) ⊗ D ( k ) 是矩阵 C ( l ) 和 D ( k ) 的Kronecker乘积,也被称为在节点 { ( x i , t j ) , i = 1 , 2 , ⋯ , M ; j = 1 , 2 , ⋯ , N } 的 ( l , k ) 阶部分差分矩阵。 C ( l ) 是x方向节点上的l阶差分矩阵, D ( k ) 是t方向节点上的k阶差分矩阵。因此,(1)可写成以下矩阵形式:
[ D ( 0 , 1 ) − ε 1 D ( 2 , 0 ) + α 1 I α 2 I α 3 I β 1 I D ( 0 , 1 ) − ε 2 D ( 2 , 0 ) + β 2 I β 3 I γ 1 I γ 2 I D ( 0 , 1 ) − ε 3 D ( 2 , 0 ) + γ 3 I ] [ u v r ] = [ f 1 f 2 f 3 ] (11)
将公式(3)代入初始边界条件(2),我们可以得到关于 u ( x , t ) , v ( x , t ) , r ( x , t ) 在 q = 1 , 2 , ⋯ , N 的初始边界条件的离散方程:
∑ i = 1 M ∑ j = 1 N ξ i ( x p ) η j ( 0 ) u i j = f 0 ( x p ) , ∑ i = 1 M ∑ j = 1 N ξ ′ i ( x p ) η ′ j ( 0 ) v i j = g 0 ( x p ) , ∑ i = 1 M ∑ j = 1 N ξ ″ i ( x p ) η ″ j ( 0 ) r i j = s 0 ( x p ) , ∑ i = 1 M ∑ j = 1 N ξ i ( 0 ) η j ( t q ) u i j = f 1 ( t q ) , ∑ i = 1 M ∑ j = 1 N ξ ′ i ( 0 ) η ′ j ( t q ) v i j = g 1 ( t q ) , ∑ i = 1 M ∑ j = 1 N ξ ″ i ( 0 ) η ″ j ( t q ) r i j = s 1 ( t q ) , ∑ i = 1 M ∑ j = 1 N ξ i ( 1 ) η j ( t q ) u i j = f 2 ( t q ) , ∑ i = 1 M ∑ j = 1 N ξ i ′ ( 1 ) η ′ j ( t q ) v i j = g 2 ( t q ) , ∑ i = 1 M ∑ j = 1 N ξ ″ i ( 1 ) η ″ j ( t q ) r i j = s 2 ( t q ) , (12)
在本文中,我们用置换法来施加初始边界条件。
在此部分中,我们展示了用此数值方法得到的数值结果,从而求出下面例子的近似解。
例1 我们考虑以下具有不连续源项的奇异摄动抛物型反应扩散问题 [
{ ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + 5 u − t v = f 1 ( x , t ) , ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − t u + 5 ( 1 + x t ) v − r = f 2 ( x , t ) , ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − 2 u − ( 1 + x 2 ) v + ( 7 + x t ) r = f 3 ( x , t ) , (13)
具有初始边界条件:
u ( 0 , t ) = v ( 0 , t ) = r ( 0 , t ) = 0 , u ( 1 , t ) = v ( 1 , t ) = r ( 1 , t ) = 0 , u ( x , 0 ) = v ( x , 0 ) = r ( x , 0 ) = 0 , (14)
其中
f 1 ( x , t ) = { 2 + x + t , 0 ≤ x ≤ 0.5 , 1 , 0.5 < x ≤ 1 ,
f 2 ( x , t ) = { 2 0 ≤ x ≤ 0.5 , t , 0.5 < x ≤ 1 , (15)
和
f 3 ( x , t ) = { 1 + x , 0 ≤ x ≤ 0.5 , x 2 + t , 0.5 < x ≤ 1.
图1和图2分别给出了选取不同的节点M和N时得到的数值解。表1给出了参数N变为2倍时的数值结果,在表2中,得到了参数N除以2,参数 Δ t 除以2时的数值结果。在这种情况下,观察到一阶均匀收敛。 ε 的值越大,结果越小,当 ε 的值达到某一值时,数值结果是稳定的。从表1和表2我们可以看出,此方法比以前的方法具有更高的精度,我们推断,时间离散化的误差控制了数值格式的全局误差。
图1. 例1的数值解图当 ε 1 = 10 − 9 , ε 2 = 10 − 5 , ε 3 = 10 − 3 和 N = 256 , M = 8
图2. 例1的数值解图当 ε 1 = 10 − 9 , ε 2 = 10 − 5 , ε 3 = 10 − 3 和 N = 128 , M = 2
Ref. [
|
||||||||
---|---|---|---|---|---|---|---|---|
ε 1 = 10 − j | N = 128 M = 2 | N = 256 M = 8 | N = 512 M = 32 | N = 1024 M = 128 | N = 128 M = 2 | N = 256 M = 8 | N = 512 M = 32 | N = 1024 M = 128 |
j = 1 | 3.22E−02 | 1.71E−02 | 5.92E−03 | 1.63E−03 | 2.33E−04 | 1.27E−06 | 4.27E−08 | 3.73E−10 |
j = 2 | 3.84E−02 | 1.84E−02 | 5.88E−03 | 1.59E−03 | 2.45E−04 | 1.34E−06 | 4.34E−08 | 3.91E−10 |
---|---|---|---|---|---|---|---|---|
j = 3 | 4.00E−02 | 1.90E−02 | 6.05E−03 | 1.63E−03 | 3.05E−04 | 2.08E−06 | 5.02E−08 | 4.21E−10 |
j = 4 | 4.24E−02 | 1.98E−02 | 6.31E−03 | 1.70E−03 | 3.78E−04 | 2.57E−06 | 5.17E−08 | 4.59E−10 |
j = 5 | 4.42E−02 | 2.24E−02 | 8.90E−03 | 2.84E−03 | 4.02E−04 | 2.96E−06 | 5.63E−08 | 5.10E−10 |
j = 8 | 4.42E−02 | 2.24E−02 | 8.90E−03 | 2.84E−03 | 4.28E−04 | 3.03E−06 | 6.12E−08 | 5.33E−10 |
j = 10 | 4.42E−02 | 2.24E−02 | 8.90E−03 | 2.84E−03 | 4.28E−04 | 3.03E−06 | 6.12E−08 | 5.33E−10 |
j = 12 | 4.42E−02 | 2.42E−02 | 8.90E−03 | 2.84E−03 | 4.28E−04 | 3.03E−06 | 6.12E−08 | 5.33E−10 |
表1. 例1最大点积误差与 ε 1 , ε 2 , ε 3 均匀收敛速度的比较
Ref. [
|
||||||||
---|---|---|---|---|---|---|---|---|
ε 1 = 10 − j | N = 128 M = 2 | N = 256 M = 8 | N = 512 M = 32 | N = 1024 M = 128 | N = 128 M = 2 | N = 256 M = 8 | N = 512 M = 32 | N = 1024 M = 128 |
j = 1 | 3.22E−02 | 2.68E−02 | 1.71E−02 | 1.06E−02 | 2.33E−04 | 2.02E−05 | 4.01E−07 | 3.21E−09 |
j = 2 | 3.84E−02 | 2.89E−02 | 1.84E−02 | 1.07E−02 | 2.45E−04 | 2.31E−05 | 4.21E−07 | 3.33E−09 |
j = 3 | 4.00E−02 | 2.98E−02 | 1.90E−02 | 1.09E−02 | 3.05E−04 | 2.76E−05 | 4.83E−07 | 3.89E−09 |
j = 4 | 4.24E−02 | 3.05E−02 | 1.93E−02 | 1.11E−02 | 3.78E−04 | 3.03E−05 | 5.21E−07 | 4.15E−09 |
j = 5 | 4.42E−02 | 3.25E−02 | 2.01E−02 | 1.14E−02 | 4.02E−04 | 3.28E−05 | 5.38E−07 | 4.27E−09 |
j = 8 | 4.42E−02 | 3.25E−02 | 2.01E−02 | 1.15E−02 | 4.28E−04 | 3.56E−05 | 5.92E−07 | 4.83E−09 |
j = 10 | 4.42E−02 | 3.25E−02 | 2.01E−02 | 1.15E−02 | 4.28E−04 | 3.56E−05 | 5.92E−07 | 4.83E−09 |
j = 12 | 4.42E−02 | 3.25E−02 | 2.01E−02 | 1.15E−02 | 4.28E−04 | 3.56E−05 | 5.92E−07 | 4.83E−09 |
表2. 例1最大点积误差与 ε 1 , ε 2 , ε 3 均匀收敛速度的比较
表3例举了当 ε ,N和t选取不同的值时,实例1的算法所需的迭代次数。可以观察到,当 ε 较大时,迭代次数随着N略微减小;但对于取值小的 ε ,只需要一次迭代。
Ref. [
|
|||||
---|---|---|---|---|---|
ε 1 = 10 − j | N = 128 M = 2 | N = 256 M = 8 | N = 512 M = 32 | N = 1024 M = 128 | N = 2048 M = 512 |
j = 1 | 5 | 4 | 3 | 3 | 2 |
j = 2 | 2 | 2 | 2 | 1 | 1 |
j = 3 | 1 | 1 | 1 | 1 | 1 |
j = 4 | 1 | 1 | 1 | 1 | 1 |
j = 5 | 1 | 1 | 1 | 1 | 1 |
j = 6 | 1 | 1 | 1 | 1 | 1 |
j = 7 | 1 | 1 | 1 | 1 | 1 |
j = 8 | 1 | 1 | 1 | 1 | 1 |
表3. 例1算法所需的迭代次数
例2:我们考虑以下的时间延迟奇异摄动反应扩散问题 [
{ ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + 2.1 u − ( 1 − x ) v − ( 1 + x ) r = 16 x 2 ( 1 − x ) 2 , ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − x u + ( 1.1 + x ) v − x r = t 2 , ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − ( 2 + x ) u − ( 1 − x ) v − ( 3.1 + x ) r = − 16 x 2 ( 1 − x ) 2 , (16)
具有初始边界条件
u ( 0 , t ) = v ( 0 , t ) = r ( 0 , t ) = 0 , u ( 1 , t ) = v ( 1 , t ) = r ( 1 , t ) = 0.
我们计算了对不同 ε 值的最大误差,图3和表4展现了相应的结果。与Shishkin的方法相比,通过本方法获得的最大误差更小。这表明此方法具有更高的精确度,可以看到,随着 ε 值的增加,误差变小。
图3. 对 ε 1 = 10 − 1 , ε 2 = 10 − 2 , ε 3 = 10 − 3 和 N = 64 , M = 8 时例2的数值解
Ref. [
|
||||||||
---|---|---|---|---|---|---|---|---|
ε 1 = 10 − j | N = 32 t = 0.1 | N = 64 t = 0.1 / 4 | N = 128 t = 0.1 / 4 2 | N = 256 t = 0.1 / 4 3 | N = 32 t = 0.1 | N = 64 t = 0.1 / 4 | N = 128 t = 0.1 / 4 2 | N = 256 t = 0.1 / 4 3 |
j = 0 | 8.01E−02 | 2.90E−02 | 9.95E−03 | 2.75E−03 | 3.03E−03 | 1.08E−03 | 3.27E−04 | 2.08E−06 |
j = 1 | 1.70E−01 | 6.88E−02 | 1.99E−02 | 5.19E−03 | 3.17E−03 | 1.27E−03 | 3.62E−04 | 2.16E−06 |
j = 2 | 2.44E−01 | 9.34E−02 | 2.65E−02 | 6.86E−03 | 3.58E−03 | 2.45E−03 | 3.76E−04 | 2.53E−06 |
j = 3 | 2.57E−01 | 9.77E−02 | 2.77E−02 | 7.16E−03 | 4.02E−03 | 2.87E−03 | 4.05E−04 | 3.21E−06 |
j = 4 | 2.59E−01 | 9.81E−02 | 2.78E−02 | 7.17E−03 | 4.55E−03 | 2.99E−03 | 4.16E−04 | 3.45E−06 |
j = 5 | 2.59E−01 | 9.81E−02 | 2.78E−02 | 7.17E−03 | 4.55E−03 | 2.99E−03 | 4.16E−04 | 3.45E−06 |
j = 6 | 2.59E−01 | 9.81E−02 | 2.78E−02 | 7.17E−03 | 4.55E−03 | 2.99E−03 | 4.16E−04 | 3.45E−06 |
表4. 比较例2的最大点误差和收敛速度
例3:
{ ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + ( 5 + x t ) u − ( x 2 + t 2 ) v − ( 2 + x t ) r = 2 ( 1 − e − t ) + 5 t cos ( x t ) , ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − 5 x t e − x u + ( 6 + cos ( x t ) ) v − cos ( x t ) r = ( 10 x + 1 ) t ( x 2 + t 2 − 5 sin ( x t ) ) , ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − 3 x e − t u − ( x t + sin ( x + t ) ) v + ( 5 + ( x + 1 ) e − x t ) r = − 3 t cos ( x + t ) . u ( 0 , t ) = u ( 1 , t ) = 0 , t ∈ [ 0 , 1 ] , u ( x , 0 ) = 0 , x ∈ [ 0 , 1 ] . (17)
我们选取参数 ε 1 = 10 − 8 , ε 2 = 10 − 6 , ε 3 = 10 − 4 和 N = 60 , M = 64 ,初始条件 u ( x , 0 ) = v ( x , 0 ) = r ( x , 0 ) = 0 ,边界条件 u ( 0 , y ) = v ( 0 , y ) = r ( 0 , y ) = 0 。图4显示了方程组的数值近似值,为了将我们的算法与另一种经典的方法比较,表5显示了与之前相同的 ε 1 , ε 2 , ε 3 值的最大误差。从中可以看出,在这种情况下,最大误差的大小与表中相似,但小于表中所示的误差。根据所考虑的问题,使用重心插值配点法得到的误差有时会更好,有时会更差点。
图4. 当 ε 1 = 10 − 8 , ε 2 = 10 − 6 , ε 3 = 10 − 4 时例3的数值解
Present method | Ref. [
|
|||||||
---|---|---|---|---|---|---|---|---|
ε 3 | N = 366 M = 16 | N = 144 M = 64 | N = 288 M = 128 | N = 5766 M = 256 | N = 366 M = 16 | N = 144 M = 64 | N = 288 M = 128 | N = 5766 M = 256 |
2−5 | 0.574E−1 | 0.332E−1 | 0.160E−1 | 0.406E−2 | 0.895E−1 | 0.392E−1 | 0.188E−1 | 0.567E−2 |
0.184 | 1.071 | 1.352 | 1.456 | 0.571 | 1.060 | 1.728 | 1.731 | |
2−7 | 0.573E−1 | 0.221E−1 | 0.088E−1 | 0.466E−2 | 0.901E−1 | 0.392E−1 | 0.188E−1 | 0.568E−2 |
0.188 | 0.998 | 1.453 | 1.624 | 0.528 | 1.060 | 1.726 | 1.729 | |
2−9 | 0.874E−1 | 0.208E−1 | 0.074E−1 | 0.367E−2 | 0.947E−1 | 0.390E−1 | 0.187E−1 | 0.567E−2 |
0.435 | 0.932 | 1.533 | 1.756 | 0.595 | 1.062 | 1.722 | 1.726 | |
2−11 | 0.084E−1 | 0.321E−1 | 0.096E−1 | 0.427E−2 | 0.109E−1 | 0.423E−1 | 0.186E−1 | 0.563E−2 |
0.430 | 1.045 | 1.629 | 1.834 | 0.530 | 1.186 | 1.723 | 1.727 | |
d 1 N , M | 0.403E−1 | 0.314E−1 | 0.091E−1 | 0.513E−2 | 0.109E+0 | 0.425E−1 | 0.188E−1 | 0.691E−2 |
p 1 u n i | 0.228 | 1.048 | 1.032 | 1.425 | 0.529 | 1.175 | 1.444 | 1.525 |
表5. 比较例3的最大误差和收敛阶数
为了比较两种算法的计算成本,我们在表6中显示了几个N和M值所需的CPU时间,选择固定值 ( ε 1 = 10 − 8 , ε 2 = 10 − 6 , ε 3 = 10 − 4 ) 作为扩散参数。相对于与经典的方法比较,当n值增加时,我们的方法产生了一个加速。
Method | N = 72 M = 32 | N = 144 M = 64 | N = 288 M = 128 | N = 576 M = 256 | N = 1152 M = 512 |
---|---|---|---|---|---|
Present method | 0.00566 | 0.00796 | 0.12430 | 0.32683 | 1.68447 |
Ref. [
|
0.03120 | 0.09360 | 0.32760 | 1.21681 | 4.83603 |
表6. 例3的CPU时间比较
例4:我们考虑以下二维时间延迟奇异摄动反应扩散问题
{ ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + ( 1 + 0.5 x y ) ∂ u ∂ x + e x 2 y ∂ u ∂ y + e x + y ( 1 + t ) u − t ( x + y ) v − t x r = 10 t 2 sin ( x + y ) , ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 + ( 5 + x 2 y ) ∂ u ∂ x + ( 3 + sin ( x + y ) ) ∂ u ∂ y − ( x + y ) u + ( 1 + t ) ( 3 + x + y ) v − t sin ( y ) r = − 5 ( 1 − e − t ) ( x 2 + y 2 ) , ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 + ( 3 − x y ) ∂ u ∂ x + ( 1 + x + y ) ∂ u ∂ y − x y 2 u − t ( sin x + sin y ) v + e t ( 2 + cos ( x + y ) ) r = − 4 t e t cos ( x y ) ,
具有初始边界条件
u ( 0 , y , t ) = 4 y sin ( t ) , u ( x , 0 , t ) = 4 x sin ( t ) , v ( 0 , y , t ) = 0 , v ( x , 0 , t ) = 0 , r ( 0 , y , t ) = 3 ( 1 − e t ) , r ( x , 0 , t ) = 3 ( 1 − e t ) ,
u ( x , y , 0 ) = v ( x , y , 0 ) = r ( x , y , 0 ) = 0 ,
u ( 1 , y , t ) = 4 ( 1 + y ) sin ( t ) , u ( x , 1 , t ) = 4 ( x + 1 ) sin ( t ) , v ( 1 , y , t ) = y t 2 , v ( x , 1 , t ) = x t 2 , r ( 1 , y , t ) = 3 e y ( 1 − e t ) , r ( x , 1 , t ) = 3 e x ( 1 − e t ) .
为了获得数值解,我们运用相同的思想来分割具有更多元素的系统。
图5显示了当 ε = 10 − 4 时例3的数值解,表7分别为第一,第二,第三分量 ε 值的结果。我们可以看到, ε 的值越小,最大误差也越小。由此可见,本文方法具有较好的精度。
图5. 在T = 1, N = 32 , M = 32 时例4的数值解
Ref. [
|
Present method | |||||||
---|---|---|---|---|---|---|---|---|
ε 1 = 10 − j | N = 16 M = 8 | N = 32 M = 16 | N = 64 M = 32 | N = 128 M = 64 | N = 16 M = 8 | N = 32 M = 16 | N = 64 M = 32 | N = 128 M = 64 |
2−6 | 6.6804E−2 | 5.7987E−2 | 3.9483E−2 | 2.4603E−2 | 7.8068E−4 | 5.6213E−4 | 4.27E−08 | 3.6216E−5 |
0.2042 | 0.5545 | 0.6824 | 0.7396 | 0.1083 | 0.4545 | 0.5532 | 0.6842 | |
2−8 | 6.8721E−2 | 5.8378E−2 | 4.0315E−2 | 2.5349E−2 | 7.9731E−4 | 5.7897E−4 | 8.3764E−5 | 3.8716E−5 |
0.2353 | 0.5341 | 0.6694 | 0.7285 | 0.1527 | 0.4721 | 0.5872 | 0.7011 | |
2−10 | 7.1566E−2 | 5.8489E−2 | 4.0574E−2 | 2.5602E−2 | 8.0124E−04 | 5.8849E−4 | 8.6019E−5 | 3.9663E−5 |
0.2911 | 0.5276 | 0.6643 | 0.7252 | 0.2352 | 0.4920 | 0.6013 | 0.7834 | |
2−12 | 7.2293E−2 | 5.8520E−2 | 4.0643E−2 | 2.5668E−2 | 8.2236E−4 | 5.9013E−4 | 8.3456E−5 | 4.0021E−5 |
0.3049 | 0.5259 | 0.6630 | 0.7242 | 0.2901 | 0.4971 | 0.6725 | 0.7991 |
表7. 例4中对v的最大误差和收敛阶数的比较
在本文中,我们首次使用重心插值配点法来解决奇异摄动问题。该方法的一些计算结果与其他方法的比较表明,该方法具有较高的精度和收敛性。从这篇文章中,我们可以发现我们的方法可以应用于解决这样的人口统计模型。因此,我们可以将此方法扩展到更广泛的领域。本文的所有数值计算结果都是通过数学软件MatlabR2007b给出。
感谢王玉兰老师的支持与帮助。
赵辰辉,王玉兰. 一类奇异摄动抛物型反应扩散问题的数值解Numerical Solution of a Class of Singularly Perturbed Parabolic Reaction-Diffusion Problem[J]. 应用数学进展, 2019, 08(06): 1181-1191. https://doi.org/10.12677/AAM.2019.86136
https://doi.org/10.1016/0041-5553(89)90109-2
https://doi.org/10.1007/s10444-008-9086-3
https://doi.org/10.1007/s00607-010-0104-1
https://doi.org/10.1002/num.20220
https://doi.org/10.1016/S0377-0427(99)00380-5
https://doi.org/10.1016/j.apnum.2018.01.006
https://doi.org/10.1016/j.cam.2013.10.053
https://doi.org/10.2307/2008095
https://doi.org/10.1007/BF00945179
https://doi.org/10.1016/0898-1221(88)90067-3
https://doi.org/10.1137/S0036144502417715
https://doi.org/10.1093/imanum/24.4.547
https://doi.org/10.1007/s00211-014-0612-6
https://doi.org/10.2298/TSCI160615040W
https://doi.org/10.1080/00207160.2017.1384546
https://doi.org/10.1155/2018/7260346
https://doi.org/10.1177/1461348418824898
https://doi.org/10.1155/2019/1739785
https://doi.org/10.1155/2019/1030318
https://doi.org/10.1016/j.cam.2017.06.004
https://doi.org/10.1016/j.aml.2016.12.011