高阶线性常微分方程显式Euler法的数值分析
Numerical Analysis of High-Order Linear Ordinary Differential Equations via Explicit Euler Method
摘要: 针对高阶线性常微分方程,建立了显式Euler格式,分析了数值格式的局部截断误差,并在舍入误差条件下,获得了数值解的全局误差,同时,讨论了数值解的渐进稳定性。常系数与变系数二阶算例验证了理论分析结果的正确性与有效性。
Abstract: An explicit Euler scheme is established for high-order linear ordinary differential equations. The local truncation error of the numerical scheme is analyzed. Under the condition of rounding errors, the global error of the numerical solution is obtained. Also, the asymptotic stability of the numerical solution is discussed. The theoretical analysis results are verified to be correct and effective through constant-coefficient and variable-coefficient second-order ordinary differential equations.
文章引用:马林鑫, 周玉鑫, 朱俊博, 胡超悦, 向菁, 张涛. 高阶线性常微分方程显式Euler法的数值分析[J]. 应用数学进展, 2025, 14(6): 308-319. https://doi.org/10.12677/aam.2025.146322

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. 一阶常微分方程组

一般地,一阶常微分方程组可表示为如下形式

y ( x )=f( x,y ),y( x 0 )= y 0 ,x[ x 0 ,b ] , (2.1)

其中,未知向量函数,给定右端函数向量和初始条件分别为

y( x )=( y 1 ( x ) y 2 ( x ) y m ( x ) ),f( x,y )=( f 1 ( x, y 1 , y 2 ,, y m ) f 2 ( x, y 1 , y 2 ,, y m ) f m ( x, y 1 , y 2 ,, y m ) ), y 0 =( y 1,0 y 2,0 y m,0 ) .

定义一阶常微分方程组雅可比矩阵为

f y ( x,y )= [ f i ( x, y 1 ,, y m ) y j ] i,j=1 m .

根据微分中值定理,对于任意分量函数 f i ( x,y ) ,存在某个点 ξ i 介于yz之间,使得

f( x,y )f( x,z )= j=1 m f i ( x, ξ i ) y j ( y j z j ) ,

由此可得

| f( x,y )f( x,z ) | j=1 m | f i ( x, ξ i ) y j || y j z j | . (2.2)

对向量 f( x,y )f( x,z ) 取无穷范数,有

f( x,y )f( x,z ) = max 1im | f i ( x,y ) f i ( x,z ) | , (2.3)

结合式(2.2)与(2.3),可进一步推得

f( x,y )f( x,z ) max 1im j=1 m | f i ( x, ξ i ) y j | yz .

若函数 f( x,y ) 关于 y 满足Lipschitz条件,即存在常数 k ,使得对任意 y,z m

f( x,y )f( x,z ) k yz ,y,z m .

则方程组(2.1)存在唯一解。Lipschitz常数 k 可通过雅可比矩阵的元素进行估计,其上界可取为

k= max t 0 xb ( max 1im ( sup y m j=1 m | f i ( x,y ) y j | ) ) .

特别地,一阶线性常微分方程组的形式为

d y i dx = j=1 m a ij ( x ) y j + f i ( x ),i=1,2,,m , (2.4)

其中, A( x )= ( a ij ( x ) ) m×m 是系数矩阵, f( x )= ( f 1 ( x ),, f m ( x ) ) T 为给定的非齐次项向量函数。该方程组可表示为向量形式

dy dx =A( x )y+f( x ) .

A( x )yA( x )z k yz 成立,则

k= max x 0 xb ( max 1im j=1 m | a ij ( x ) | ).

2.2. 高阶线性常微分方程

一般地,高阶线性常微分方程表示形式如下

y ( m ) + a 1 ( x ) y ( m1 ) ++ a m1 ( x ) y + a m ( x )y=f( x ),x[ x 0 ,b ]. (2.5)

定义变量为

y 1 =y, y 2 = y ,, y m = y ( m1 ) .

则原方程可以写成一阶方程组

dy dx =A( x )y+f( x )=F( x,A( x ),f( x ),y( x ) ), (2.6)

其中,系数矩阵 A( x ) 的具体形式为

A( x )= ( 0 1 0 0 0 0 1 0 0 0 0 1 a m ( x ) a m1 ( x ) a m2 ( x ) a 1 ( x ) ) m×m ,

f( x ) 为向量形式的非齐次项,仅最后一行为 f( x ) ,其余分量为零。

为了保证原方程(2.5)所对应一阶方程组(2.6)解的存在性与唯一性,需要满足Lipschitz条件,即对任意 y,z m ,有

F( x,A( x ),f( x ),y( x ) )F( x,A( x ),f( x ),z( x ) ) k yz ,

k=max{ 1, i=1 m | a i ( x ) | } .

3. 显式Euler格式数值分析

3.1. 显式Euler格式局部截断误差

显式欧拉格式用于求解一阶方程组(1.13),其格式为

y n+1 = y n +Δx( A( x n ) y n +f( x n ) ), (3.1)

其中, Δx= x n+1 x n =h 为步长, A( x n ) f( x n ) 分别表示 A( x ) f( x ) x n 取值。

定理1 若方程(2.6)右端项 F( x,A( x ),f( x ),y( x ) ) 关于 y 满足Lipschitz条件,假设第 n 步精确成立,即 y( x n )= y n ,则显式Euler法的局部截断误差

y( x n+1 ) y n+1 =O( h 2 ) .

证明:将 y( x n+1 ) x n 处泰勒展开为:

y( x n+1 )=y( x n )+y'( x n )Δx+ 1 2 Δ x 2 y ( θ n ) ,

其中, y ( x n )= ( y 1 ( x n ), y 2 ( x n ),, y m ( x n ) ) T y ( θ n )= ( y 1 ( θ 1 n ), y 2 ( θ 2 n ),, y m ( θ m n ) ) T θ n = ( θ 1 n , θ 2 n ,, θ m n ) T m θ i n ( x n , x n+1 ) 。又由方程(2.1),则局部截断误差为

y( x n+1 ) y n+1 =y( x n )+ y ( x n )Δx+ 1 2 Δ x 2 y ( θ n )( y n +Δx( A( x n ) y n +f( x n ) ) ) = 1 2 Δ x 2 y ( θ n )=O( h 2 ).

因此,显式Euler格式的局部截断误差是 O( h 2 )

3.2. 显式Euler格式全局误差

用计算机进行计算时,由于计算机的字长有限,无法完整显示所有数据,并且计算过程有可能会产生新的误差,这些误差称为舍入误差。本文在舍入误差都可控的情况下,分析显示Euler格式的全局误差。即存在正常数 γ ,使得每步的舍入误差向量 η n m 满足 sup n η n γ ,则有下述定理。

定理2 若方程(2.6)右端项 F( x,A( x ),f( x ),y( x ) ) 关于 y 满足Lipschitz条件,并且满足 max axb y ( x ) M ,记 x n+1 = x 0 +( n+1 )Δx ,定义全局误差为

E n+1 =y( x n+1 ) y ˜ n+1 ,

其中 y( x n+1 ) 是精确解, y ˜ n+1 是考虑了舍入误差的数值解,则有

E n+1 e k( x n+1 x 0 ) E 0 +( e k( x n+1 x 0 ) 1 )( ΔxM 2k + γ Δxk ).

证明:根据泰勒公式,函数 y( x ) x n+1 = x n +Δx 处展开为

y( x n+1 )=y( x n )+Δx y ( x n )+ ( Δx ) 2 2 y ( ξ n ),

其中 ξ n = ( ξ 1 n , ξ 2 n ,, ξ m n ) T m , ξ i n ( x n , x n+1 ) ,又因为 y ( x )=F( x,A( x ),f( x ),y ) ,所以有

y( x n+1 )=y( x n )+ΔxF( x n ,A( x n ),f( x n ),y( x n ) )+ ( Δx ) 2 2 y( ξ n ).

显式Euler格式的数值解 y ˜ n+1

y ˜ n+1 = y ˜ n +ΔxF( x n ,A( x n ),f( x n ), y ˜ n )+ η n ,

定义全局误差 E n+1 =y( x n+1 ) y ˜ n+1 E n =y( x n ) y ˜ n ,代入可得

E n+1 =y( x n )+ΔxF( x n ,A( x n ),f( x n ),y( x n ) )+ ( Δx ) 2 2 y ( ξ n )+ ( Δx ) 2 2 y ( ξ n ) ( y ˜ n +ΔxF( x n ,A( x n ),f( x n ), y ˜ n )+ η n ) = E n +Δx( F( x n ,A( x n ),f( x n ),y( x n ) )F( x n ,A( x n ),f( x n ), y ˜ n ) )+ ( Δx ) 2 2 y ( ξ n ) η n .

因为 F( x,A( x ),f( x ),y ) 关于 y 满足Lipschitz条件,即

F( x n ,A( x n ),f( x n ),y( x n ) )F( x n ,A( x n ),f( x n ), y ^ n ) k y( x n ) y ^ n =k E n ,

E n+1 取无穷范数,根据范数性质可得

E n+1 E n +Δx F( x n ,A( x n ),f( x n ),y( x n ) )F( x n ,A( x n ),f( x n ), y ^ n ) + ( Δx ) 2 2 y ( ξ n ) + η n E n +Δxk E n + ( Δx ) 2 2 y ( ξ n ) + η n ,

已知 max axb y ( t ) M sup n η n γ ,则

E n+1 ( 1+Δxk ) E n + ( Δx ) 2 2 M+γ,

α=1+Δxk β= ( Δx ) 2 2 M+γ ,则有 E n+1 α E n +β ,通过多次递推可得

E n+1 α n+1 E 0 +( i=0 n α i )β,

由等比数列求和公式 i=0 n α i = α n+1 1 α1 ( α1 ),且 α1=Δxk ,所以

E n+1 α n+1 E 0 + α n+1 1 Δxk β.

因为 α=1+Δxk ,根据重要极限 lim x0 ( 1+x ) 1 x =e ,当 Δx 较小时,有 ( 1+Δxk ) 1 Δxk e

又因为 ( n+1 )Δx= x n+1 x 0 ,所以

α n+1 = ( 1+Δxk ) n+1 = ( 1+Δxk ) ( n+1 )Δxk Δt e k( x n+1 x 0 ) ,将其代入上式可得

E n+1 e k( x n+1 x 0 ) E 0 + e k( x n+1 x 0 ) 1 Δxk β,

β= ( Δx ) 2 2 M+γ 代入即得到定理结果:

E n+1 e k( x n+1 x 0 ) E 0 +( e k( x n+1 x 0 ) 1 )( ΔxM 2k + γ Δxk ).

定理3 若定理2的条件成立,若不考虑初始误差和数据的舍入误差,即 E 0 =0 γ=0 时,则显式Euler格式的全局误差为

E n+1 ( e k( x n+1 x 0 ) 1 ) ΔxM 2k .

证明:将 E 0 =0 γ=0 代入定理2的结论

E n+1 e k( x n+1 x 0 ) ×0+( e k( x n+1 x 0 ) 1 )( ΔxM 2k + 0 Δxk ),

化简后可得

E n+1 ( e k( x n+1 x 0 ) 1 ) ΔxM 2k .

3.3. 显式Euler格式的渐进稳定性

定义1 称Euler方法是渐进稳定的,如果存在常数 C h 0 ,使得 h=Δx 满足 0<h< h 0 以及区间 [ a,b ] 内的离散点 x n =a+nh ,Euler方法的解 y n z n 满足以下不等式:

y n z n C y 0 z 0 .

定理4 在定理2的假设条件下,显式Euler法是渐进稳定的。

证明:考虑Euler方法的迭代公式:

y n+1 = y n +ΔxF( x n ,A( x n ),f( x n ), y n ),

z n+1 = z n +ΔxF( x n ,A( x n ),f( x n ), z n ),

两式相减,利用Lipschitz条件,可得

y n+1 z n+1 ( 1+Δxk ) y n z n ( 1+Δxk ) n+1 y 0 z 0 .

利用指数函数的性质 ( 1+hk ) n+1 e ( n+1 )hk ,进一步推导

y n+1 z n+1 e ( n+1 )hk y 0 z 0 e ( ba )k y 0 z 0 .

从而,当 a x n =a+nhb 时,令 C= e ( ba )K

y n z n e ( ba )k y 0 z 0 =C y 0 z 0 .

故对 h( 0, h 0 ) ,显式Euler法的解满足渐进稳定性条件,且连续依赖于初值,因此,显式Euler法是渐进稳定的。

4. 数值实验

4.1. 常系数二阶线性常微分方程

{ y 2 y +2y= e 2x sinx,0x1 y( 0 )=0.4, y ( 0 )=0.6 .

y 1 =y, y 2 = y ,则原方程可转化为一阶方程组

{ y 1 = y 2 y 2 =2 y 2 2 y 1 + e 2x sinx

y ¯ =( y 1 y 2 ),A=( 0 1 2 2 ), f ¯ ( x )=( 0 e 2x sinx ) .

则上述方程可写为一阶线性常微分方程组

y ¯ =A y ¯ + f ¯ ( x ), y ¯ 0 =( y 1 ( 0 ) y 2 ( 0 ) )=( 0.4 0.6 ).

将区间 [ 0,1 ] 等分为N个子区间,设步长为 Δx= 1 N ,记 x n =nh 。显式Euler格式为

y ¯ n+1 = y ¯ n +Δx( A y ¯ n + f ¯ ( x n ) ),n=0,1,,N1.

其中

f ¯ n = f ¯ ( x n )=( 0 e 2 x n sin x n ), y ¯ n y ¯ ( x n )=( y n 1 y n 2 ),

递推过程为

y ¯ 1 = y ¯ 0 +Δx( A y ¯ 0 + f ¯ 0 ) y ¯ 2 = y ¯ 1 +Δx( A y ¯ 1 + f ¯ 1 ) y ¯ n+1 = y ¯ n +h( A y ¯ n + f ¯ n )

因此, y ¯ n 的第一个分量 y n 1 即为原始常微分方程在 x n 点的数值解。

图1展示了显式Euler法在不同步数(N = 10, 100, 1000, 10,000)下的数值解与精确解的对比情况。可以明显观察到,随着步数的增加(即步长 Δx 减小, Δx= 1 N ),显式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

= max 1nN | y 1 ( x n ) y n 1 |

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. 变系数二阶线性常微分方程

{ y 1 x y =0,1x2 y( 1 )=1, y ( 1 )=2

y 1 =y, y 2 = y = y 1 ,则原方程可转化为一阶方程组

{ y 1 = y 2 y 2 = 1 x y 2

y ¯ =( y 1 y 2 ), y ¯ =( y 1 y 2 ),

构造变系数矩阵

A( x )=( 0 1 0 1 x ).

则上述方程可写为一阶线性常微分方程组

y ¯ =A( x ) y ¯ , y ¯ ( x 0 )= y ¯ 0 =( y( 1 ) y ( 1 ) )=( 1 2 ) .

将区间 [ 1,2 ] 等分为N个子区间,设步长为 Δx= 1 N ,记 x n =nh 。显式Euler格式为

y ¯ n+1 = y ¯ n +ΔxA( x n ) y ¯ n ,

其中 y ¯ n y ¯ ( x n )=( y n 1 y n 2 )

递推过程为

y ¯ 1 = y ¯ 0 +ΔxA( x 0 ) y ¯ 0 y ¯ 2 = y ¯ 1 +ΔxA( x 1 ) y ¯ 1 y ¯ n+1 = y ¯ n +ΔxA( x n ) y ¯ n

因此, y ¯ n 的第一个分量 y n 1 即为原始变系数二阶微分方程在 x n 点的数值解。

图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,即步长 h= 1 200 ,并与该初值问题的精确解进行比较。由表3可见,数值解与精确解在各节点处误差极小,最大误差不超过0.002,说明显式Euler法具有良好的数值精度。

N取不同值时,误差向量的无穷范数如下表所示:

Table 4. Infinite norm of numerical error under different steps N

4. 不同步数N下数值误差无穷范数

N

= max 1nN | y 1 ( x n ) y n 1 |

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

*通讯作者。

参考文献

[1] 周水生, 王保军, 安亚利. 基于LS-SVM方法求高阶线性ODE近似解[J]. 计算机工程与应用, 2018, 54(23): 51-56+73.
[2] 姚翊飞. 基于中心支持向量机的几类常微分方程近似解法[D]: [硕士学位论文]. 北京: 华北电力大学(北京), 2023.
[3] 王祝园, 沈进. 一类微分方程的数值解法误差分析[J]. 佳木斯大学学报(自然科学版), 2024, 42(11): 177-180.
[4] 黑亚芳, 胡建成. 常微分方程的数值求解与方法[J]. 成都信息工程大学学报, 2024, 39(4): 499-511.
[5] 王兰, 陈萌. 三级Runge-Kutta方法阶条件的推导[J]. 赣南师范大学学报, 2024, 45(6): 25-28.
[6] 谢正荣, 艾轶博, 张卫冬. 改进PM算法数值求解常微分方程边值问题[J]. 工程数学学报, 2023, 40(6): 941-967.
[7] 杨文强, 吴文渊. 线性常微分方程的全局误差估计和优化求解方法[J]. 中国科学: 数学, 2021, 51(1): 239-256.
[8] 阮春蕾, 徐玉倩, 董层层. 运用Newton-Cotes积分构造显式Runge-Kutta格式[J]. 数值计算与计算机应用, 2024, 45(1): 1-12.
[9] 刘家惠, 邵林馨, 黄健飞. 带Caputo导数的变分数阶随机微分方程的Euler-Maruyama方法[J]. 应用数学和力学, 2023, 44(6): 731-743.
[10] 胡行华, 蔡俊迎. 一类Caputo-Fabrizio型分数阶微分方程的三次B样条方法[J]. 应用数学和力学, 2023, 44(6): 744-756.
[11] 马琳. 面向CPU、GPU的常微分方程求解模型[D]: [硕士学位论文]. 长春: 吉林大学, 2023.
[12] 谢旭东. 基于常微分方程的加速梯度算法研究[D]: [硕士学位论文]. 北京: 北京邮电大学, 2024.