1. 引言
很多科学和工程问题最终都归结为求解非线性偏微分方程,如等离子体物理、非线性光学,激光脉冲中的自聚焦、热脉冲在晶体中的传播以及在极低温下玻色–爱因斯坦凝聚的动力学可由非线性薛定谔方程来描述 [1] [2] [3] [4] [5];在材料科学和流体动力学中的许多复杂的运动界面问题可由Allen-Cahn和Cahn-Hilliard方程来描述 [6] [7] [8] [9] [10]。因此,提出一种有效求解非线性偏微分方程的高精度数值方法是非常有意义的。
到目前为止,已有很多数值方法求解非线性偏微分方程 [11] - [18]。但它们主要都是基于有限元方法和有限差分方法,要获得高精度的数值解需要花费很多计算时间和内存容量。在 [19] 中,非线性特征值问题在矩形网格一定条件下,证明了光谱的高精度。据我们所知,很少有关于周期边界条件下变系数非线性二阶问题的Fourier谱方法的报道。因此,本文的目的是针对周期边界条件下变系数非线性二阶问题提出了一种有效的Fourier谱方法。首先,根据边界条件引入了适当的Sobolev空间及其逼近空间,建立了变系数非线性二阶问题的弱形式和相应的离散格式。基于这非线性的离散格式,我们建立了一种线性迭代算法,并给出了该算法相应的Matlab程序设计。最后,我们给出了数值算例,数值结果表明我们提出的算法是收敛的和高精度的。
本文剩余部分安排如下:在第二节中,我们推导了变系数非线性二阶问题的弱形式及其离散格式。在第三节中,我们详细描述了算法的实现过程及其程序设计。在第四节中,我们给出了一些数值算例。
2. 弱形式及其离散格式
作为一个模型,我们考虑如下的变系数非线性二阶问题:
(2.1)
(2.2)
其中
为非负变系数,
为非线性项,
为计算区域。
下面我们将推导(2.1)~(2.2)的弱形式及其离散格式,用
表示s阶Sobolev空间,
表示
中的范数。特别地,我们有
相应的内积和范数分别为:
定义Sobolev空间:
相应的内积和范数分别为:
其中
,
,
。
由格林公式及周期边界条件可知,问题(2.1)~(2.2)的弱形式为:找
,使得
(2.3)
其中
定义逼近空间:
则弱形式(2.3)相应的离散格式为:找
,使得
(2.4)
3. 算法的实现及其程序设计
3.1. 算法的实现
在这一节,我们将详细描述算法的实现过程,并给出该算法相应的程序设计。由于离散格式(2.4)是非线性的,我们将通过Picard迭代法进行求解。我们将(2.4)相应的线性问题的解作为迭代初值,即:找
,使得
(3.1)
其中
表示u与v的离散内积,则可建立(2.4)的一种Picard迭代格式:找
,使得
(3.2)
其中
由(3.1)求出。下面我们将分别建立(3.1)和(3.2)的矩阵形式,令
(3.3)
(3.4)
我们用
表示由
的列构成的长度为
的列向量。令
,
,用
分别表示傅里叶积分的高斯点和权,将(3.3)代入(3.1),并取
,
,则有
则(2.3)可以写为下列的矩阵形式
(3.5)
其中
类似地,将(3.4)代入(3.2)可得
则(2.4)可以写为下列的矩阵形式
(3.6)
其中
3.2. 算法的程序设计
4. 数值实验
为了表明算法的有效性,我们将进行数值实验。我们在MATLAB2018b平台上编程计算。定义逼近解与精确解之间的误差如下:
其中K表示迭代次数。
例1 我们取
,
,
,显然u满足周期边界条件,将
代入(2.3)可算出f。我们取迭代次数
,对于不同的M和N,我们在表1中列出了逼近解与精确解之间的误差结果。
Table 1. The error results between the approximate solution and the exact solution for different M and N at the time K = 50
表1. 当K = 50时,对于不同的M和N,逼近解与精确解之间的误差结果
为了进一步表明算法的收敛性和高精度,我们还在图1中分别画出了精确解和逼近解的图像,在图2中分别画出了精确解与
,
和
,
时的逼近解之间的误差图像。
Figure 1. Images of the exact solution (left) and the approximate solution (right) for N = 40 and M = 20
图1. 精确解(左)与N = 40和M = 20时的逼近解(右)的图像
Figure 2. Error image between the exact solution and the approximated solution for N = 30, M = 10 (left) and N = 40, M = 20 (right)
图2. 精确解与N = 30, M = 10 (左)和N = 40, M = 20 (右)时的逼近解之间的误差图像
从表1中可以看出,当迭代次数
,
,
时,逼近解
达到了大约10−13的精度。另外,从图1,图2进一步观察到我们的算法是收敛的和高精度的。