1. 引言
在科学与工程实践中,许多物理问题的求解最终都可归结为常微分方程的求解。然而,绝大多数常微分方程很难获得解析解,部分方程甚至不存在解析表达式。因此,数值解法便成为求解常微分方程初边值问题的重要途径。
目前国内外对数值求解常微分方程已经有了系统性的研究和分析。文献[1]将高阶线性常微分方程转化为一阶线性常微分方程组,构建了含有一阶导数形式的最小二乘支持向量机(LS-SVM)回归模型。文献[2]提出了有效改进的中心支持向量机(Proximal Support Vector Machines, P-SVM)方法。文献[3]针对一阶同型微分方程,利用欧拉公式和改进的欧拉公式探讨了Lipschitz常数及不同的步长对整体误差的影响。文献[4]提出一种求解微分方程的神经网络方法,即通过物理约束耦合神经网络的方法。文献[5]给出三级Runge-Kutta (RK)方法的构造过程和相关细节。文献[6]在常微分方程组形式下使用PM算法,提出了分离原理将微分方程组对应的多目标优化问题转化为多个相对独立的单目标优化问题。文献[7]对线性常微分方程的初值问题的全局误差进行估计和优化求解。文献[8]从Newton-Cotes积分的角度构造了一个带参数的三级二阶显式Runge-Kutta格式和两个带参数的四级三阶显式Runge-Kutta格式。基于分数阶微积分基本定理和三次B样条理论,文献[9]构造了求解线性Caputo-Fabrizio型分数阶微分方程数值解的三次B样条方法针对一类带Caputo导数的变分数阶随机微分方程,[10]构造了Euler-Maruyama方法。文献[11]设计了一种基于文本的常微分方程求解框架,该框架结合了即时编译和耦合的CPU。文献[12]提出了新的加速梯度算法,并构建了Layapunov函数,证明了优化算法的收敛速率。
本文首先讨论了一阶常微分方程组解的存在唯一性条件;然后通过变量代换将高阶线性常微分方程转化为一阶线性常微分方程组,建立了一阶线性常微分方程的显式Euler格式,理论分析了其局部截断误差,并在舍入误差情况下分析了数值解的全局误差,以及显式Euler法的渐进稳定性;最后通过数值实验,验证了高阶线性常微分方程显式Euler法的稳定性与有效性。
2. 问题叙述
2.1. 一阶常微分方程组
一般地,一阶常微分方程组可表示为如下形式
, (2.1)
其中,未知向量函数,给定右端函数向量和初始条件分别为
.
定义一阶常微分方程组雅可比矩阵为
.
根据微分中值定理,对于任意分量函数
,存在某个点
介于y与z之间,使得
,
由此可得
. (2.2)
对向量
取无穷范数,有
, (2.3)
结合式(2.2)与(2.3),可进一步推得
.
若函数
关于
满足Lipschitz条件,即存在常数
,使得对任意
有
.
则方程组(2.1)存在唯一解。Lipschitz常数
可通过雅可比矩阵的元素进行估计,其上界可取为
.
特别地,一阶线性常微分方程组的形式为
, (2.4)
其中,
是系数矩阵,
为给定的非齐次项向量函数。该方程组可表示为向量形式
.
若
成立,则
2.2. 高阶线性常微分方程
一般地,高阶线性常微分方程表示形式如下
(2.5)
定义变量为
则原方程可以写成一阶方程组
(2.6)
其中,系数矩阵
的具体形式为
为向量形式的非齐次项,仅最后一行为
,其余分量为零。
为了保证原方程(2.5)所对应一阶方程组(2.6)解的存在性与唯一性,需要满足Lipschitz条件,即对任意
,有
.
3. 显式Euler格式数值分析
3.1. 显式Euler格式局部截断误差
显式欧拉格式用于求解一阶方程组(1.13),其格式为
(3.1)
其中,
为步长,
和
分别表示
和
在
取值。
定理1 若方程(2.6)右端项
关于
满足Lipschitz条件,假设第
步精确成立,即
,则显式Euler法的局部截断误差
.
证明:将
在
处泰勒展开为:
,
其中,
,
,
,
。又由方程(2.1),则局部截断误差为
因此,显式Euler格式的局部截断误差是
。
3.2. 显式Euler格式全局误差
用计算机进行计算时,由于计算机的字长有限,无法完整显示所有数据,并且计算过程有可能会产生新的误差,这些误差称为舍入误差。本文在舍入误差都可控的情况下,分析显示Euler格式的全局误差。即存在正常数
,使得每步的舍入误差向量
满足
,则有下述定理。
定理2 若方程(2.6)右端项
关于
满足Lipschitz条件,并且满足
,记
,定义全局误差为
其中
是精确解,
是考虑了舍入误差的数值解,则有
证明:根据泰勒公式,函数
在
处展开为
其中
,又因为
,所以有
显式Euler格式的数值解
为
定义全局误差
,
,代入可得
因为
关于
满足Lipschitz条件,即
对
取无穷范数,根据范数性质可得
已知
且
,则
令
,
,则有
,通过多次递推可得
由等比数列求和公式
(
),且
,所以
因为
,根据重要极限
,当
较小时,有
。
又因为
,所以
,将其代入上式可得
把
代入即得到定理结果:
定理3 若定理2的条件成立,若不考虑初始误差和数据的舍入误差,即
,
时,则显式Euler格式的全局误差为
证明:将
,
代入定理2的结论
化简后可得
3.3. 显式Euler格式的渐进稳定性
定义1 称Euler方法是渐进稳定的,如果存在常数
和
,使得
满足
以及区间
内的离散点
,Euler方法的解
和
满足以下不等式:
定理4 在定理2的假设条件下,显式Euler法是渐进稳定的。
证明:考虑Euler方法的迭代公式:
和
两式相减,利用Lipschitz条件,可得
利用指数函数的性质
,进一步推导
从而,当
时,令
有
故对
,显式Euler法的解满足渐进稳定性条件,且连续依赖于初值,因此,显式Euler法是渐进稳定的。
4. 数值实验
4.1. 常系数二阶线性常微分方程
.
设
,则原方程可转化为一阶方程组
记
.
则上述方程可写为一阶线性常微分方程组
将区间
等分为N个子区间,设步长为
,记
。显式Euler格式为
其中
递推过程为
因此,
的第一个分量
即为原始常微分方程在
点的数值解。
图1展示了显式Euler法在不同步数(N = 10, 100, 1000, 10,000)下的数值解与精确解的对比情况。可以明显观察到,随着步数的增加(即步长
减小,
),显式Euler法得到的数值解逐渐逼近精确解。当N = 1000时,数值解几乎与精确解重合,表明在足够小的步长条件下,显式Euler法能够较为准确地逼近精确解。
Figure 1. Comparison of numerical solution and exact solution of explicit Euler method under non-synchronization number
图1. 显式Euler法数值解与精确解在不同步数下的对比
当N = 1000时,精确解与数值解的结果:
Table 1. Comparison of numerical solution and exact solution at N = 1000
表1. 数值解与精确解在N = 1000下的对比结果
x |
精确解 |
数值解 |
0.0 |
−0.40000 |
−0.40000 |
0.1 |
−0.46173 |
−0.46172 |
0.2 |
−0.52556 |
−0.52556 |
0.3 |
−0.58860 |
−0.58866 |
0.4 |
−0.64661 |
−0.64678 |
0.5 |
−0.69356 |
−0.69394 |
0.6 |
−0.72115 |
−0.72185 |
0.7 |
−0.71815 |
−0.71934 |
0.8 |
−0.66971 |
−0.67160 |
0.9 |
−0.55644 |
−0.55933 |
1.0 |
−0.35339 |
−0.35764 |
为验证显式Euler法的有效性,本文选取步数N = 1000,将数值解与精确解关键节点处进行对比。由表1可见,数值解与精确解在各节点处误差极小,显式Euler法能够很好地逼近精确解。
Table 2. Infinite norm of error vector under asynchronous numbers
表2. 不同步数下误差向量的无穷范数
N |
|
50 |
0.08153 |
100 |
0.04165 |
200 |
0.02105 |
400 |
0.01058 |
800 |
0.00531 |
为了考察显式Euler法收敛性,本文选取不同的步数(N = 50, 100, 200, 400, 800)进行计算,并记录相应的误差向量的无穷范数(即数值解与精确解在各离散节点上的最大偏差)。结果如表2所示,随着步数N的增加,步长随之减小,误差呈现出单调递减的趋势。值得注意的是,误差几乎呈线性下降的规律,即当步数加倍(步长减半)时,误差无穷范数近似减小为原来的一半。例如,从N = 100增加至N = 200时,误差由0.04165下降至0.02105,几乎减少一半。因此,显式Euler格式保持一阶收敛,这与定理3的理论分析结果一致。
4.2. 变系数二阶线性常微分方程
设
,则原方程可转化为一阶方程组
记
构造变系数矩阵
则上述方程可写为一阶线性常微分方程组
.
将区间
等分为N个子区间,设步长为
,记
。显式Euler格式为
其中
。
递推过程为
因此,
的第一个分量
即为原始变系数二阶微分方程在
点的数值解。
图2展示了当不同步数(N = 10, 20, 50, 100, 200, 400, 10,000)时所得数值解与精确解之间的对比情况。从图2中可以看出,随着步数的逐渐增加(即步长减小),显式Euler法得到的数值解逐渐逼近精确解。当N ≥ 200时,数值解与精确解几乎重合,说明该方法在步长足够小时能够有效逼近真实解。
Figure 2. Comparison of numerical solution and exact solution of explicit Euler method under different steps N
图2. 不同步数N下显式Euler法数值解与精确解的对比
当N = 200时,精确解与数值解的结果:
Table 3. The comparison between the numerical solution and the exact solution of the Euler method when N = 200
表3. N = 200时显示Euler法数值解与精确解的对比
x |
数值解 |
精确解 |
1.0 |
1.0000 |
1.00000 |
1.1 |
1.20980 |
1.21000 |
1.2 |
1.43481 |
1.44000 |
1.3 |
1.68940 |
1.69000 |
1.4 |
1.95361 |
1.96000 |
1.5 |
2.24900 |
2.25000 |
1.6 |
2.55880 |
2.56000 |
1.7 |
2.88860 |
2.89000 |
1.8 |
3.23840 |
3.24000 |
1.9 |
3.60061 |
3.61000 |
2.0 |
3.99800 |
4.00000 |
为验证显式Euler法的有效性,本文选取步数N = 200,即步长
,并与该初值问题的精确解进行比较。由表3可见,数值解与精确解在各节点处误差极小,最大误差不超过0.002,说明显式Euler法具有良好的数值精度。
当N取不同值时,误差向量的无穷范数如下表所示:
Table 4. Infinite norm of numerical error under different steps N
表4. 不同步数N下数值误差无穷范数
N |
|
50 |
0.02000 |
100 |
0.01000 |
200 |
0.00500 |
400 |
0.00250 |
800 |
0.00125 |
以不同的步数(N = 50, 100, 200, 400, 800)进行数值计算,记录数值解与精确解的最大误差。结果如表4所示,误差向量的无穷范数随着步数的增大而减小,呈现线性收敛趋势,即当步数加倍,误差缩小为原来的一半。例如,当N从50增长至100时,误差由0.02000减小至0.01000。因此,显式Euler格式是线性收敛的,即一阶收敛,这与理论分析结果一致(见定理3)。
5. 结论
本文围绕高阶线性常微分方程,分析了显式Euler法在舍入误差与非舍入误差下的误差估计,并讨论了Euler格式的渐进稳定性。在数值实验部分,分别选取常系数与变系数高阶线性常微分方程,结合不同步长对显式Euler格式的数值误差与渐进稳定性进行了验证。结果表明,显式Euler法在步长足够小的情况下具有良好的渐进稳定性,数值误差随步长减小呈线性收敛,符合理论分析结果,数值实验验证了显式Euler法在数值求解高阶线性常微分方程的稳定性和有效性。
显式Euler法具有结构简单、实现便捷的优势,但仅有一阶数值精度。在后续研究中,将进一步研究梯形格式、Runge-Kutta格式等,提高高阶常微分方程数值解的收敛速度。
基金项目
重庆科技大学2024年度市级大学生科技创新训练项目(S2024115001029);重庆市教育委员会科学技术研究项目(KJQN202301521)。
NOTES
*通讯作者。