常微分方程初值问题的区域分解逼近方法
Domain Decomposition Approximation of Initial Value Problems for Ordinary Differential Equations
摘要: 本文主要借助拉格朗日插值逼近来求解常微分方程初值问题的近似解,利用插值基函数展开数值解,将问题转化为线性或非线性方程组,对非线性方程组采用不动点迭代法求解。数值实验表明,多区域方法比单区域方法误差更小。
Abstract: This article mainly uses Lagrangian interpolation approximation to solve the approximation solution of the initial value problem of ordinary differential equations. The numerical solution is expanded by using interpolation basis functions, and the problem is transformed into a system of linear or nonlinear equations. The fixed-point iteration method is used to solve the system of nonlinear equations. Numerical experiments show that the multi-domain method has a smaller error than the single-region method.
文章引用:宋灵杉, 梁同洋, 刘工业. 常微分方程初值问题的区域分解逼近方法[J]. 应用数学进展, 2025, 14(5): 228-237. https://doi.org/10.12677/aam.2025.145251

1. 引言

常微分方程初值问题是数学和工程学的一个基本问题,它描述了系统状态随时间的演化规律。这类问题在自然科学和工程技术中有着广泛的应用,如物理、化学、生物学、经济学等领域。因此,常微分方程的背景意义不仅仅体现在理论的研究当中,还被广泛地作用于对生活和工作的实际问题的建模和求解过程中,同样在科学研究与工程技术也都具有非常重要的价值。随着科学和技术的进步,对这类问题的求解方法和效率提出了更高的要求。常微分方程初值问题仍有许多问题需解决、算法也有待改进,因此在数学界关注度也比较大。通常学者们会使用数值方法如有限元方法、辛普森法则、微分方程求解器来解决常微分方程的初值问题。有学者采用Milstein方法[1],也有学者采用Birkhoff配点法[2],利用泰勒展开式求解二阶常微分方程[3]。最近,有人利用Lagrange插值[4]函数的优点,采用等距节点来求解偏微分方程[5]单区域时空方向上的数值解,他们的研究结果表明,这些方法都能够有效地进行初值问题的求解,但是仍然没有做出最好的结果,好在初值问题目前备受关注,学者们也都有提出不同的效果、更好的解决方法,拉格朗日插值法求近似解是误差较小的方法之一。我们常用的插值方法[6]主要有:拉格朗日插值法、牛顿插值法、埃尔米特插值法、分段插值法、样条插值法。插值法多种多样,不同插值法使用的条件和适用场景都不同,本文主要采用拉格朗日插值法来解决常微分方程的初值问题并且通过区域分解的方式进而提高精度、减小误差。

先通过构造单区域上的Lagrange插值逼近算法来逼近上述方程的精确解,再将区间(0, 2)分解成两部分,构造多区域上的Lagrange插值逼近算法,通过数值实验发现,该算法所求的近似解能够很好地逼近精确解,而且该算法实施较为容易,且易于理解。所提方法同样适用于求解刚性方程和二阶问题,见例2和例3。

2. 基于等距节点的拉格朗日多项式的微分矩阵

对于任意次数以 a i 为节点, n 次插值基函数为:

l i ( a k )= ( a k a 0 )( a k a 1 )( a k a i1 )( a k a i+1 )( a k a n ) ( a i a 0 )( a i a 1 )( a i a i1 )( a i a i+1 )( a i a n ) = ( a k a 0 )( a k a 1 )( a k a n ) ( a i a 0 )( a i a 1 )( a i a i1 )( a i a i+1 )( a i a n )( a k a i ) ,( ki ),k=0,1,,N.

满足:

l i ( a k )={ 0,ki; 1,k=i.

引入 ω n+1 ( a )=( a a 0 )( a a 1 )( a a n )

ω n+1 ( a i )=( a i a 0 )( a i a k1 )( a i a k+1 )( a i a n )

所以 n 次插值多项式为:

L n ( a )= i=0 n y i ω n+1 ( a ) ( a a i )ω n+1 ( a i )

a l i ( a k )= ( a k a 0 )( a k a 1 )( a k a k1 )( a k a k+1 )( a k a N ) ( a i a 0 )( a i a 1 )( a i a i1 )( a i a i+1 )( a i a N )( a k a i )

x 为等距节点, a k+1 a k =h,h= 1 N ,k=0,1,,N.

x L N ( a k )= j=0 N d ki y i

这里, D=( d ki ) ( N+1 )×( N+1 ) 级的矩阵,且 d ki = a l i ( a k ) ,由文献[5]可知:

d ki ={ ( 1 ) ik k!( Nk )! h( ki )i!( Ni )! ,ki, 1 h ( ( 1+ 1 2 ++ 1 i )( 1+ 1 2 ++ 1 Ni ) ),0<k=i<N, 1 h ( 1+ 1 2 ++ 1 N ),k=i=0, 1 h ( 1+ 1 2 ++ 1 N ),k=i=N.

对于 d ki 的具体推导在文献[5]中有详细推导,由文献[7]可知,m阶微分矩阵与一阶微分矩阵的关系是: D m = D (m)

3. 常微分方程多区域Lagrange插值逼近算法格式

这一章主要考虑常微分方程初值问题多区域配置法。为简单利用等距节点的Lagrange插值逼近,将所求问题转化为线性或非线性方程组求解。

3.1. 单区域

首先考虑单区域方法。利用插值基函数展开数值解,得到以展开系数为未知量的方程组。然后,根据方程组是线性或非线性选择相应的求解方法。

3.1.1. 基于单区域常微分方程拉格朗日插值逼近的算法推导

1

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

下面是关于1的基于单区域一阶非线性常微分方程拉格朗日插值逼近的算法推导:

x j =jh,h= 1 M ,j=0,1,,M ,记 l j ( x ) x( 0,2 ) 上的等距插值基函数,用插值多项式 y M ( x ) 逼近精确解 y( x ) ,利用插值基函数将数值解,即插值多项式 y M ( x ) 展开为:

y M ( x )= j=0 M y( x j ) l j ( x ) = j=0 M y ^ j l j ( x ),y( x j )= y ^ j . (2)

代入(2)式得:

{ y ^ k 2 2 j=0 M d kj y ^ j 1=0,k=1,2,3,,M y( 0 )= j=0 M l j ( 0 ) y ^ j =0 (3)

展开得:

y ^ k 2 2( y ^ 0 d k0 + y ^ 1 d k1 ++ y ^ M1 d k,M1 + y ^ M d k,M )1=0 (4)

初值条件展开为:

{ y 0 =0 } (5)

将(5)式代入(4)式,化简并移项可得:

y ^ k 2 2 j=1 M d kj y ^ j 1=0 (6)

可以得到:

{ y ^ k 2 2 j=1 M d kj y ^ j 1=0,k=1,2,3,,M y 0 =0 (7)

k=1,2,3,,M ,则(7)式可以写成:

2( d 1,1 d 1,M d M,1 d M,M )( y ^ 1 y ^ M )( y ^ 1 2 y ^ M 2 )+b=0

不妨记:

A=( d 1,1 d 1,M d M,1 d M,M ), y ¯ =( y ^ 1 y ^ M ), y ¯ 2 =( y ^ 1 2 y ^ M 2 ),b=( 1 1 )

可以得到如下非线性方程组:

y ¯ = 1 2 A 1 [ y ¯ 2 b ] y ¯ n+1 = 1 2 A 1 [ y ¯ n 2 b ] (8)

下面考虑一个刚性问题。可以证明下面例2为刚性问题。利用配置方法可以求得数值解,但误差没有一般方程求解的效果好,但仍不失为一个有效方法。节点取12时,误差达到10的负3次幂。

2

{ y =1000( ycosx )+sinx,x( 0,2 ) y( 0 )=0 (9)

同理,可以得到:

A 1 =( d 1,1 d 1,M d M,1 d M,M ), y ¯ 1 =( y ^ 1 y ^ M ), c 1 =1000( cos x 1 cos x M )+( sin x 1 sin x M )

则可以得到方程:

y ¯ 1 = ( 1000E+ A 1 ) 1 c 1 (10)

其中, E 表示为 M 阶单位阵。

3

{ y y=3 e 2x ,x( 1,1 ) y( 1 )= e 2 y( 1 )= e 2 (11)

同理可得:令

A 2 =( d 1,1 (2) d 1,M1 (2) d M1,1 (2) d M1,M1 (2) ), y ¯ 2 =( y ^ 1 y ^ M1 ), c 2 =3( e 2 x 1 e 2 x M1 ),H= y 0 ( d 1,0 (2) d M1,0 (2) )+ y M ( d 1,M (2) d M1,M (2) )

则解得方程为:

y ¯ 2 = ( A 2 E ) 1 ( c 2 H ) (12)

其中, E 表示为 M1 阶单位阵。

3.1.2. 基于单区域常微分方程拉格朗日差值逼近的数值解及误差分析

L 来衡量精确解与数值解之间的误差:

E M =max| y( x k ) y M ( x k ) |,1kM.

1,由(8)式,使用不动点迭代法可得出近似解 y M ( x ) ,而方程(1)的精确解为:

y= 1 e x 1+ e x

可以得到误差图(图1),对最大误差 E M 取对数可以得到随着插值次数 M 的增大,最大误差 E M 呈下降趋势,且误差效果良好,可以说明上述所提算法格式良好,具有高精度。

Figure 1. Single area error plot

1. 单区域误差图

同理,对2,由(10)式求得其数值解。方程(9)的精确解为:

y 1 = 999999 1000001 e 1000x + 999999 1000001 cosx+ 2000 1000001 sinx

图22刚性方程单区域误差图,可以看到随着节点的增大,误差在减小。单区域实验显示,数值解在初始阶段能快速捕捉解的剧烈衰减特性。

Figure 2. Stiff Equation single area error plot

2. 刚性方程单区域误差图

同理,对3,由(12)式求得其数值解。方程(11)的精确解为:

y 2 = e 2x .

Figure 3. Single area error plot 1

3. 单区域误差图1

图33二阶常微分方程单区域误差图,对最大误差 E M 取对数可以得到随着插值次数 M 的增大,最大误差 E M 呈下降趋势,且误差效果良好,可以说明上述所提算法格式良好,具有高精度。

3.2. 多区域

3.2.1. 基于多区域常微分方程拉格朗日差值逼近的算法推导

为了能够得到更高的误差精度,我们将整个求解区域 ( 0,2 ) 分解成两个区域 Ω 1 =( 0,1 ), Ω 2 =( 1,2 ) 。数值解展开为:

y M ( x )| Ω i = y M i ( x )= n=0 M i y M (i) l n ( x ),x Ω i ,i=1,2.

由已知 y H 2 ( Ω ) ,在公共边界处有数值解的函数值和导数值相等,即:

函数值: n=0 M 1 y ^ n (1) l n ( x M 1 )= n=0 M 2 y ^ n (2) l n ( x ˜ 0 )

由于未知量为 M 1 + M 2 +2 个可列方程,区域一为 M 1 个、区域二为 M 2 个函数值,故未知量大于方程数还需一个条件可加入:导数值相等。

导数值: n=0 M 1 y ^ n (1) x l n ( x M 1 )= n=0 M 2 y ^ n (2) x l n ( x ˜ 0 )

由微分矩阵定义,将上述两式联立可以得到:

y ^ M 1 (1) = y ^ 0 (2) = n=1 M 2 y ^ n (2) d ˜ 0,n n=1 M 1 1 y ^ n (1) d M 1 ,n d M 1 , M 1 d ˜ 0,0 . (13)

其中, d k,m 表示区域 Ω 1 上的微分矩阵, d ˜ k,m 表示区域 Ω 2 上的微分矩阵, x k Ω 1 ,k=1,2,, M 1 ,

x ˜ k Ω 2 ,k=1,2,, M 2 .

在区域 Ω 1 用数值解逼近区域 Ω 2 的精确解得到:

{ y ^ k 2 2 n=0 M 1 y ^ n (1) x l n ( x k )1=0,k=1,2,, M 1 , n=0 M 1 y ^ n (1) l n ( x 0 )=0 (14)

对(14)利用微分矩阵定义并将端点值提出可以得到:

{ y ^ k 2 2 n=1 M 1 y ^ n (1) d k,n 2 y ^ 0 (1) d k,0 1=0 k=1,2,, M 1 1 (15)

将(13)式代入到(15)式中有:

{ y ^ k 2 2 n=1 M 1 1 y ^ n (1) d k,n 1=2 y 0 (1) d k,0 +2 n=1 M 2 y ^ n (2) d ˜ 0,n n=1 M 1 1 y ^ n (1) d M 1 ,n d M 1 , M 1 d ˜ 0,0 d k, M 1 2 y ^ 0 (1) d M 1 ,0 d M 1, M 1 d ˜ 0,0 d k, M 1 k=1,2,, M 1 1 (16)

将(16)式展开,并记:

G=( d 1,1 d 1, M 1 1 d M 1 1,1 d M 1 1, M 1 1 ), x 1 =( y ^ 1 (1) y ^ M 1 1 (1) ), x 1 2 =( y ^ 1 2 y ^ M 1 1 2 ), x 2 =( y ^ 1 (2) y ^ M 2 (2) )

E 1 =( d M 1 ,1 d M 1 , M 1 1 ), E 2 =( d ˜ 0,1 d ˜ 0, M 2 ), F 1 =( d 1, M 1 d M 1 1, M 1 ), b 1 =( 1 1 ).

则(16)式可以转化成下列矩阵方程:

x 1 2 2G x 1 b 1 =2 E 2 x 2 E 1 x 1 d M 1 , M 1 d ˜ 0,0 F 1 (17)

同理,对区域 Ω 2 仿照区域 Ω 1 可以得到:

{ y ^ k 2 2 n=0 M 2 y ^ n (2) x l n ( x ˜ k )1=0 k=1,2,, M 2 (18)

对(18)式利用微分矩阵定义并将端点值提出可以得到:

{ y ^ k 2 2 n=1 M 2 y ^ n (2) d ˜ k,n 2 y ^ 0 (2) d ˜ k,0 1=0 k=1,2,, M 2 (19)

将(13)代入(19)式得:

{ y ^ k 2 2 n=1 M 2 y ^ n ( 2 ) d ˜ k,n 1=2 n=1 M 2 y ^ n ( 2 ) d ˜ 0,n n=1 M 1 1 y ^ n ( 1 ) d M 1 ,n d M 1 , M 1 d ˜ 0,0 d ˜ k,0 2 y ^ 0 ( 1 ) d M 1 ,0 d M 1, M 1 d ˜ 0,0 d k,0 k=1,2,, M 2 (20)

将(20)式展开,并记:

P=( d ˜ 1,1 d ˜ 1, M 2 d ˜ M 2 ,1 d ˜ M 2 , M 2 ), x 2 2 =( y ^ 1 2 y ^ M 2 2 ), F 2 =( d ˜ 1,0 d ˜ M 2 ,0 ), b 2 =( 1 1 )

转化成如下矩阵方程:

x 2 2 2P x 2 b 2 =2 E 2 x 2 E 1 x 1 d M 1 , M 1 d ˜ 0,0 F 2 (21)

联立(17)和(21)可以得到:

( x 1 2 x 2 2 )2( G 0 0 P )( x 1 x 2 )( b 1 b 2 )=2 1 d M 1 , M 1 d ˜ 0,0 ( F 1 F 2 )( E 1 E 2 )( x 1 x 2 ) (22)

(22)式可以等价于:

( x 1 2 x 2 2 )( b 1 b 2 )=2 1 d M 1 , M 1 d ˜ 0,0 ( F 1 F 2 )( E 1 E 2 )( x 1 x 2 )+2( G 0 0 P )( x 1 x 2 )

提取公因式得:

( x 1 2 x 2 2 )( b 1 b 2 )=2( x 1 x 2 )[ 1 d M 1 , M 1 d ˜ 0,0 ( F 1 F 2 )( E 1 E 2 )+( G 0 0 P ) ]

不妨令 I= 1 d M 1 , M 1 d ˜ 0,0 ( F 1 F 2 )( E 1 E 2 )+( G 0 0 P ), X ¯ =( x 1 x 2 ), X ¯ 2 =( x 1 2 x 2 2 ), B ¯ =( b 1 b 2 )

可以得到以下方程:

X ¯ =0.5 I 1 [ X ¯ 2 B ¯ ] X ¯ n =0.5 I 1 [ X ¯ n+1 2 B ¯ ] (23)

3.2.2. 基于多区域常微分方程拉格朗日插值逼近的数值解及误差分析

X ¯ n =0.5 I 1 [ X ¯ n+1 2 B ¯ ] 进行迭代法求出近似解 X ¯ n ,然后用MATLAB编程计算多项式次数 N 和误差的关系,误差表示为 E k ,近似解为 y ,真解为 x ,仍然用 L 来衡量精确解与数值解之间的误差:

E M =max| xy |,1kM1

而方程的精确解为:

y= 1 e x 1+ e x

能够取得误差图,对最大误差 E M 取对数可以得到随着插值次数 M 的增大,最大的误差 E M 呈下降趋势,并且误差的结果比较好,能够说明以上所用的算法格式比较好,有高精度。其中, E M1 表示区域一上的误差, E M2 表示区域二上的误差, E M 使整个区域上的误差 M= M 1 + M 2

E M1 =max| u 1 ( x k ) u M1 ( x k ) |,1k M 1 1 E M2 =max| u 2 ( x k ) u M2 ( x k ) |,1k M 2 1 E M =max( E M1 , E M2 )

Figure 4. Multi region error plot 2

4. 多区域误差图2

图4是多区域误差图,可以看出,随着次数M的增大,误差 E k 减小。由图可知,随着插值次数M的增加,最大误差减小,单区域精度在−8,多区域误差精度在−9,所以多区域明显好于单区域,故多区域拉格朗日插值效果好于单区域拉格朗日插值效果。

为节省篇幅,这里略去例2、例3的多区域数值结果,有兴趣的读者可以利用本文例1所提供的多区域方法去自行求解。

4. 结论

本文采用拉格朗日插值法对区间分解逼近求解常微分方程的数值解,将常微分方程化成矩阵求解,由数值实验结果可知,算法格式较好。为了继续提高算法精度,对区域进行分解逼近,然后分别在单区域和多区域上进行数值解求取,将数值解与原方程精确解作对比,利用MATLAB画出结果图,通过实验结果可知单区域上的误差要远大于多区域上的误差,故可以体现出多区域的优越性。

基金项目

河南省大学生创新创业训练计划项目(No. 2024232);河南省大学生创新创业训练计划项目(No. 202310464051)。

参考文献

[1] 李焕荣. 随机常微分方程的几种数值求解方法及其应用[J]. 重庆工商大学学报(自然科学版), 2021, 38(6): 82-88.
[2] 庄清渠, 王金平. 四阶常微分方程Birkhoff配点法[J]. 华侨大学学报(自然科学版), 2018, 39(2): 306-311.
[3] 户永清, 陈正文. 一种二阶常微分方程的数值解法[J]. 四川文理学院学报, 2023, 33(5): 39-44.
[4] 唐仁献. Lagrange基本插值多项式的性质及应用[J]. 零陵学院学报, 1995(S1): 49-51.
[5] 乔炎, 王川, 王秦. Burgers方程混合问题的Lagrange插值逼近[J]. 应用数学进展, 2022, 11(5): 2507-2514.
[6] 李庆扬, 王能超, 易大义. 数值分析[M]. 第5版. 北京: 清华大学出版社, 2001: 1-326.
[7] Shen, J., Tang, T. and Wang, L.L. (2011) Spectral Methods: Algorithms, Analysis and Applications. Springer.
https://doi.org/10.1007/978-3-540-71041-7