1. 引言
常微分方程初值问题是数学和工程学的一个基本问题,它描述了系统状态随时间的演化规律。这类问题在自然科学和工程技术中有着广泛的应用,如物理、化学、生物学、经济学等领域。因此,常微分方程的背景意义不仅仅体现在理论的研究当中,还被广泛地作用于对生活和工作的实际问题的建模和求解过程中,同样在科学研究与工程技术也都具有非常重要的价值。随着科学和技术的进步,对这类问题的求解方法和效率提出了更高的要求。常微分方程初值问题仍有许多问题需解决、算法也有待改进,因此在数学界关注度也比较大。通常学者们会使用数值方法如有限元方法、辛普森法则、微分方程求解器来解决常微分方程的初值问题。有学者采用Milstein方法[1],也有学者采用Birkhoff配点法[2],利用泰勒展开式求解二阶常微分方程[3]。最近,有人利用Lagrange插值[4]函数的优点,采用等距节点来求解偏微分方程[5]单区域时空方向上的数值解,他们的研究结果表明,这些方法都能够有效地进行初值问题的求解,但是仍然没有做出最好的结果,好在初值问题目前备受关注,学者们也都有提出不同的效果、更好的解决方法,拉格朗日插值法求近似解是误差较小的方法之一。我们常用的插值方法[6]主要有:拉格朗日插值法、牛顿插值法、埃尔米特插值法、分段插值法、样条插值法。插值法多种多样,不同插值法使用的条件和适用场景都不同,本文主要采用拉格朗日插值法来解决常微分方程的初值问题并且通过区域分解的方式进而提高精度、减小误差。
先通过构造单区域上的Lagrange插值逼近算法来逼近上述方程的精确解,再将区间(0, 2)分解成两部分,构造多区域上的Lagrange插值逼近算法,通过数值实验发现,该算法所求的近似解能够很好地逼近精确解,而且该算法实施较为容易,且易于理解。所提方法同样适用于求解刚性方程和二阶问题,见例2和例3。
2. 基于等距节点的拉格朗日多项式的微分矩阵
对于任意次数以
为节点,
次插值基函数为:
满足:
引入
,
则
。
所以
次插值多项式为:
设
为等距节点,
这里,
是
级的矩阵,且
,由文献[5]可知:
对于
的具体推导在文献[5]中有详细推导,由文献[7]可知,m阶微分矩阵与一阶微分矩阵的关系是:
。
3. 常微分方程多区域Lagrange插值逼近算法格式
这一章主要考虑常微分方程初值问题多区域配置法。为简单利用等距节点的Lagrange插值逼近,将所求问题转化为线性或非线性方程组求解。
3.1. 单区域
首先考虑单区域方法。利用插值基函数展开数值解,得到以展开系数为未知量的方程组。然后,根据方程组是线性或非线性选择相应的求解方法。
3.1.1. 基于单区域常微分方程拉格朗日插值逼近的算法推导
例1:
(1)
下面是关于例1的基于单区域一阶非线性常微分方程拉格朗日插值逼近的算法推导:
令
,记
为
上的等距插值基函数,用插值多项式
逼近精确解
,利用插值基函数将数值解,即插值多项式
展开为:
. (2)
代入(2)式得:
(3)
展开得:
(4)
初值条件展开为:
(5)
将(5)式代入(4)式,化简并移项可得:
(6)
可以得到:
(7)
取
,则(7)式可以写成:
不妨记:
可以得到如下非线性方程组:
(8)
下面考虑一个刚性问题。可以证明下面例2为刚性问题。利用配置方法可以求得数值解,但误差没有一般方程求解的效果好,但仍不失为一个有效方法。节点取12时,误差达到10的负3次幂。
例2:
(9)
同理,可以得到:
令
则可以得到方程:
(10)
其中,
表示为
阶单位阵。
例3:
(11)
同理可得:令
则解得方程为:
(12)
其中,
表示为
阶单位阵。
3.1.2. 基于单区域常微分方程拉格朗日差值逼近的数值解及误差分析
用
来衡量精确解与数值解之间的误差:
对例1,由(8)式,使用不动点迭代法可得出近似解
,而方程(1)的精确解为:
可以得到误差图(图1),对最大误差
取对数可以得到随着插值次数
的增大,最大误差
呈下降趋势,且误差效果良好,可以说明上述所提算法格式良好,具有高精度。
Figure 1. Single area error plot
图1. 单区域误差图
同理,对例2,由(10)式求得其数值解。方程(9)的精确解为:
图2是例2刚性方程单区域误差图,可以看到随着节点的增大,误差在减小。单区域实验显示,数值解在初始阶段能快速捕捉解的剧烈衰减特性。
Figure 2. Stiff Equation single area error plot
图2. 刚性方程单区域误差图
同理,对例3,由(12)式求得其数值解。方程(11)的精确解为:
.
Figure 3. Single area error plot 1
图3. 单区域误差图1
图3是例3二阶常微分方程单区域误差图,对最大误差
取对数可以得到随着插值次数
的增大,最大误差
呈下降趋势,且误差效果良好,可以说明上述所提算法格式良好,具有高精度。
3.2. 多区域
3.2.1. 基于多区域常微分方程拉格朗日差值逼近的算法推导
为了能够得到更高的误差精度,我们将整个求解区域
分解成两个区域
。数值解展开为:
由已知
,在公共边界处有数值解的函数值和导数值相等,即:
函数值:
。
由于未知量为
个可列方程,区域一为
个、区域二为
个函数值,故未知量大于方程数还需一个条件可加入:导数值相等。
导数值:
。
由微分矩阵定义,将上述两式联立可以得到:
(13)
其中,
表示区域
上的微分矩阵,
表示区域
上的微分矩阵,
在区域
用数值解逼近区域
的精确解得到:
(14)
对(14)利用微分矩阵定义并将端点值提出可以得到:
(15)
将(13)式代入到(15)式中有:
(16)
将(16)式展开,并记:
则(16)式可以转化成下列矩阵方程:
(17)
同理,对区域
仿照区域
可以得到:
(18)
对(18)式利用微分矩阵定义并将端点值提出可以得到:
(19)
将(13)代入(19)式得:
(20)
将(20)式展开,并记:
转化成如下矩阵方程:
(21)
联立(17)和(21)可以得到:
(22)
(22)式可以等价于:
提取公因式得:
不妨令
,
可以得到以下方程:
(23)
3.2.2. 基于多区域常微分方程拉格朗日插值逼近的数值解及误差分析
对
进行迭代法求出近似解
,然后用MATLAB编程计算多项式次数
和误差的关系,误差表示为
,近似解为
,真解为
,仍然用
来衡量精确解与数值解之间的误差:
而方程的精确解为:
能够取得误差图,对最大误差
取对数可以得到随着插值次数
的增大,最大的误差
呈下降趋势,并且误差的结果比较好,能够说明以上所用的算法格式比较好,有高精度。其中,
表示区域一上的误差,
表示区域二上的误差,
使整个区域上的误差
:
Figure 4. Multi region error plot 2
图4. 多区域误差图2
图4是多区域误差图,可以看出,随着次数M的增大,误差
减小。由图可知,随着插值次数M的增加,最大误差减小,单区域精度在−8,多区域误差精度在−9,所以多区域明显好于单区域,故多区域拉格朗日插值效果好于单区域拉格朗日插值效果。
为节省篇幅,这里略去例2、例3的多区域数值结果,有兴趣的读者可以利用本文例1所提供的多区域方法去自行求解。
4. 结论
本文采用拉格朗日插值法对区间分解逼近求解常微分方程的数值解,将常微分方程化成矩阵求解,由数值实验结果可知,算法格式较好。为了继续提高算法精度,对区域进行分解逼近,然后分别在单区域和多区域上进行数值解求取,将数值解与原方程精确解作对比,利用MATLAB画出结果图,通过实验结果可知单区域上的误差要远大于多区域上的误差,故可以体现出多区域的优越性。
基金项目
河南省大学生创新创业训练计划项目(No. 2024232);河南省大学生创新创业训练计划项目(No. 202310464051)。