常微分方程欧拉折线法的Picard迭代改进
Improvement of Euler Method for Ordinary Differential Equations by Picard Iteration
DOI: 10.12677/AAM.2023.128370, PDF, HTML, XML, 下载: 200  浏览: 275 
作者: 孙 波, 熊常鹏:湖南科技学院理学院,湖南 永州
关键词: 常微分方程欧拉折线法Picard迭代修正Ordinary Differential Equation Euler Method Picard Iteration Correct
摘要: 考虑常微分方程数值解法,对欧拉折线法加以改进。主要方法是,对每个节点处局部线性近似解进行一次Picard迭代修正,用局部修正解估算下一节点处解值。证明了算法局部截断误差比欧拉折线法高一阶,分析了算法的收敛性与稳定性。通过方程实例数值计算进一步验证了本文算法所得近似解比欧拉折线法近似解更接近精确解。
Abstract: In this paper we study numerical algorithms for ordinary differential equations, and improve the Euler method. We refine local linear approximate solution at each node by Picard iteration, and then estimate the numerical solution at next node by the refined local approximate solution. The local truncation error of our algorithm is smaller than that of Euler method by one order. The con-vergence and stability are proven. Finally, we show that our algorithm gives approximate solution closer to the exact solution than Euler method by an example.
文章引用:孙波, 熊常鹏. 常微分方程欧拉折线法的Picard迭代改进[J]. 应用数学进展, 2023, 12(8): 3763-3769. https://doi.org/10.12677/AAM.2023.128370

1. 引言

一阶常微分方程初值问题形如

{ d y d x = f ( x , y ) , y | x = x 0 = y 0 . (1.1)

为保证解的存在唯一性, f ( x , y ) 在含点 ( x 0 , y 0 ) 的某区域连续,且关于y局部Lipschitz连续。当 f ( x , y ) 表达式较复杂时,难以用分离变量积分等办法求出解析解,只能通过数值方法计算近似解了。

数值方法主要思想是,用差商近似代替微商,将方程差分化,离散化。经典方法主要有Euler方法和Runge-Kutta方法。Euler方法的简单体现形式为显式Euler公式,即Euler折线法:

y n + 1 = y n + h f ( x n , y n ) , n = 0 , 1 , .

其局部截断误差为 O ( h 2 ) ,其中h为离散化步长。

若用向后差商 y ( x n + 1 ) y ( x n ) h 近似代替导数 y ( x n + 1 ) ,还可得隐式或后退Euler公式:

y n + 1 = y n + h f ( x n + 1 , y n + 1 ) .

其局部截断误差也是 O ( h 2 ) 。具体计算时要先用显式Euler公式给出初步近似解,再由隐式公式进行迭代修正。

Euler方法的高级体现形式主要为梯形公式和预估–校正公式。梯形公式可表述为

y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y n + 1 ) ] ,

其局部截断误差为 O ( h 3 ) 。由于是隐式,具体计算时也需先用显式Euler公式给出初步近似解,再由隐式公式进行迭代修正。

预估–校正公式即对显式Euler公式所给初步近似解进行一次迭代修正,可表述为

y ¯ n + 1 = y n + h f ( x n , y n ) ,

y n + 1 = y n + h 2 [ f ( x n , y n ) + f ( x n + 1 , y ¯ n + 1 ) ] .

其局部截断误差为 O ( h 3 )

Runge-Kutta算法思想是,用几个点处f预估值加权平均作为当前节点处 y 估计值,以提高计算精度。

为了进一步提高计算精度,还可利用当前节点 x n + 1 前面多个节点 x n , x n 1 , , x n r 处的数值结果 y n , y n 1 , , y n r 估算 y n + 1 ,即线性多步法。

据我们所查阅数值分析教材和参考书所述( [1] - [6] ),一阶常微分方程初值问题经典数值解法主要就是这些。

期刊文献上也发表了一些探索性工作。如2011年,钟巍提出的一种数值解法,先将方程变形为

d y y = f ( x , y ) y d x ,

再根据右端在当前节点值的正负给出下一节点数值解。文章举例说明了算法的近似效果,但未给出收敛性证明和误差估计( [7] )。

现代人工神经网络理论和应用的发展也丰富了微分方程数值解法,通过训练带权重参数的试验解(trial solution),使其逐渐适应方程,这便是微分方程的神经网络数值解法( [8] )。应该说,常微分方程人工神经网络数值解法具有一定开创性。

2022年,孙波、陈慧雄对一阶常微分方程初值问题解的存在唯一性Picard迭代证明法加以改进,提高了迭代收敛速度 [9] 。微分方程初值问题(1.1)可转化为等价积分方程

y = y 0 + x 0 x f ( x , y ) d x .(1.2)

通过构造迭代函数序列

φ n + 1 ( x ) = y 0 + x 0 x f ( x , φ n ( x ) ) d x (1.3)

可推导解的存在性。一般教科书拿 φ 0 ( x ) y 0 起始迭代,只要 f ( x , y ) ( x 0 , y 0 ) 的某矩形邻域内连续,且关于y李普希兹连续,则 { φ n ( x ) } x 0 的某邻域内一致收敛,其极限函数 φ ( x ) 便是积分方程(1.2)即初值问题(1.1)的解。Picard迭代的作用是改进局部近似解,每迭代一步使近似解更接近精确解。孙波、陈慧雄将迭代起始函数改为

φ 0 ( x ) y 0 + f ( x 0 , y 0 ) ( x x 0 ) ,

并证明了所得迭代函数列也一致收敛,且比以 φ 0 ( x ) y 0 起始迭代生成的函数列更快收敛到精确解。

考虑到Picard迭代具有修正局部近似解作用,而欧拉折线法实质上就是分段局部线性近似求解。若将每个节点处局部线性近似解用Picard迭代修正一次,应更接近精确解。基于这一考虑,我们用Picard迭代对欧拉折线法每个节点处局部线性近似解修正一次。第二节陈述算法,证明其收敛性与稳定性,并给出误差估计。第三节通过计算实例说明算法效果,并和欧拉折线法加以比较。

2. 基于Picard迭代修正的数值解法

本文算法可表述如下:

第一步:将初始点 x 0 处一阶近似解

y = y 0 + f ( x 0 , y 0 ) ( x x 0 )

代入(1.2)或(1.3)右边,得修正的局部解

y = y 0 + x 0 x f ( x , y 0 + f ( x 0 , y 0 ) ( x x 0 ) ) d x .(2.1)

然后用(2.1)估算节点 x 1 = x 0 + h 处的解值:

y 1 = y 0 + x 0 x 1 f ( x , y 0 + f ( x 0 , y 0 ) ( x x 0 ) ) d x .

第二步:对 x 1 处线性近似:

y = y 1 + f ( x 1 , y 1 ) ( x x 1 )

进行Picard修正:

y = y 1 + x 1 x f ( x , y 1 + f ( x 1 , y 1 ) ( x x 1 ) ) d x ,

并用它估算 x = x 2 处的解值。

对后续节点 x = x 2 , x 3 , 重复第二步,节点 x n + 1 处的数值解可表示为

y n + 1 = y n + x n x n + 1 f ( x , y n + f ( x n , y n ) ( x x n ) ) d x , n = 0 , 1 , 2 , . (2.2)

上述算法的局部截断误差定义为

e ¯ n + 1 = y ( x n + 1 ) y ¯ n + 1 ,

其中 y ( x n + 1 ) 为精确解在 x = x n + 1 处的值, y ¯ n + 1 表示取 y n = y ( x n ) x = x n + 1 处的数值解,即

y ¯ n + 1 = y ( x n ) + x n x n + 1 f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) d x .(2.3)

于是

e ¯ n + 1 = y ( x n + 1 ) y ( x n ) x n x n + 1 f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) d x = x n x n + 1 y ( x ) d x x n x n + 1 f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) d x = x n x n + 1 f ( x , y ( x ) ) d x x n x n + 1 f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) d x , (2.4)

对(2.4)右端积分式中被积函数在 x n 进行一阶泰勒展开:

f ( x , y ( x ) ) = f ( x n , y ( x n ) ) + [ f x ( x n , y ( x n ) ) + f y ( x n , y ( x n ) ) f ( x n , y ( x n ) ) ] ( x x n ) + o ( x x n ) ,

f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) = f ( x n , y ( x n ) ) + [ f x ( x n , y ( x n ) ) + f y ( x n , y ( x n ) ) f ( x n , y ( x n ) ) ] ( x x n ) + o ( x x n ) ,

其中 o ( x x n ) 表示 h 0 x x n 的高阶无穷小。

将它们代入(2.4)式,整理得

e ¯ n + 1 = x n x n + 1 o ( x x n ) d x = o ( h 2 ) . (2.5)

欧拉折线法的局部截断误差为 O ( h 2 ) ,我们的改进算法比较欧拉折线法至少提高了一阶精度。

由局部截断误差可进一步估计整体截断误差

e n + 1 = y ( x n + 1 ) y n + 1 .

由(2.2)和(2.3)可得

| y ¯ n + 1 y n + 1 | | y ( x n ) y n | + x n x n + 1 | f ( x , y ( x n ) + f ( x n , y ( x n ) ) ( x x n ) ) f ( x , y n + f ( x n , y n ) ( x x n ) ) | d x . (2.6)

f ( x , y ) 关于y的李普希兹常数为L,则由(2.6)进一步有

| y ¯ n + 1 y n + 1 | ( 1 + L h + 1 2 L 2 h 2 ) | y ( x n ) y n | .

而局部截断误差结论(2.5)还可表述为

| y ( x n + 1 ) y ¯ n + 1 | C h 3

C为某正常数。

于是,

| y ( x n + 1 ) y n + 1 | | y ( x n + 1 ) y ¯ n + 1 | + | y ¯ n + 1 y n + 1 | ( 1 + L h + 1 2 L 2 h 2 ) | y ( x n ) y n | + C h 3 .

即整体截断误差满足递推关系

e n + 1 ( 1 + L h + 1 2 L 2 h 2 ) e n + C h 3 .

向前递推可得

e n ( 1 + L h + 1 2 L 2 h 2 ) n e 0 + ( 1 + L h + 1 2 L 2 h 2 ) n 1 L + 1 2 L 2 h C h 2 .

e 0 = 0 ,进一步有

e n ( 1 + L h + 1 2 L 2 h 2 ) n 1 L + 1 2 L 2 h C h 2 .

由此可推知,本文算法整体截断误差为 o ( h ) ,算法收敛性不言而喻。

从局部截断误差阶数看,本文算法达到了梯形公式和预估–校正公式的计算精度。但梯形公式和预估–校正公式为隐式,而我们的算法公式为显式。

3. 数值模拟

例3.1 考虑初值问题

y = 2 x y y ( 0 ) = 1 . (3.1)

用分离变量法可得其解析解 y = exp ( x 2 ) 。为检验本文算法,在区间 0 x 1 内分别取离散化步长 h = 0.2 和0.1,分别用欧拉折线法和Picard迭代修正法进行数值计算,比较二者的计算误差。

用欧拉折线法近似求解初值问题(3.1)的公式为

y 0 = 1 , y n + 1 = y n + 2 x n y n h ,

Picard迭代修正法近似公式为

y 0 = 1 ,

y n + 1 = y n + x n x n + 1 2 x [ y n + 2 x n y n ( x x n ) ] d x = y n + y n ( x n + 1 2 x n 2 ) + 4 3 x n y n ( x n + 1 3 x n 3 ) 2 x n 2 ( x n + 1 2 x n 2 ) = y n { 1 + [ ( x n + x n + 1 ) ( 1 2 x n 2 ) + 4 3 x n ( x n 2 + x n x n + 1 + x n + 1 2 ) ] h } .

先取 h = 0.2 ,分别用欧拉折线法和Picard迭代修正法近似求解(3.1),精确解、欧拉折线法近似解和Picard迭代近似解在各节点处的数值比较如表1

由表中数值计算结果可以看出,Picard迭代修正法所得数值解比欧拉折线法所得数值解更接近精确解。欧拉折线法在五个节点处数值解与精确解最大相差为0.1526,Picard迭代修正法在五个节点处数值解与精确解最大相差为0.0586,约为前者三分之一。

同一坐标框内解析解曲线、欧拉折线法和Picard迭代修正近似解折线图如图1所示,图中标识符“Euler”、“precision”和“Picard”所指曲线分别为Euler折线数值解图象、精确解图象和Picard迭代修正解图象。

Table 1. Values of the exact solution, approximate solutions of (3.1) by Euler method and Picard iteration respectively, h = 0.2

表1. 初值问题(3.1)精确解、欧拉折线近似解和Picard迭代修正近似解在节点处的值, h = 0.2

Figure 1. Graphs of the exact solution, approximate solution of (3.1) by Euler method and Picard iteration respectively, h = 0.2

图1. 初值问题(3.1)精确解曲线,欧拉法及Picard迭代修正解折线图比较, h = 0.2

然后取 h = 0.1 ,分别用欧拉折线法和Picard迭代修正法近似求解(3.1),精确解、欧拉折线法近似解和Picard迭代近似解在各节点处的数值比较如表2

Table 2. Values of the exact solution, approximate solution of (3.1) by Euler method and Picard iteration respectively, h = 0.1

表2. 初值问题(3.1)精确解、欧拉折线法近似解和Picard迭代修正法近似解在节点处的值, h = 0.1

h = 0.1 所得欧拉折线法近似解与精确解在各节点处相差最大值为0.086725,Picard迭代修正法近似解与精确解在各节点相差最大值为0.016316,不到前者五分之一。欧拉折线数值解最大误差比 h = 0.2 时缩小将近一半,Picard迭代修正数值解最大误差不到 h = 0.2 时的三分之一,体现出Picard迭代修正数值解比欧拉折线数值解收敛性也更好。

Figure 2. Graphs of the exact solution, approximate solution of (3.1) by Euler method and Picard iteration respectively, h = 0.1

图2. 初值问题(3.1)精确解曲线、欧拉折线法及Picard迭代修正解折线图比较, h = 0.1

同一坐标框内解析解曲线、欧拉折线数值解和Picard迭代修正解折线图如图2

参考文献

参考文献

[1] 薛毅. 数值分析与科学计算[M]. 第1版. 北京: 科学出版社, 2011.
[2] 李桂成. 计算方法[M]. 第2版. 北京: 电子工业出版社, 2013.
[3] 韩旭里. 数值分析[M]. 第1版. 北京: 高等教育出版社, 2011.
[4] 蒋勇, 李建良. 数值分析与计算方法[M]. 第1版. 北京: 科学出版社, 2012.
[5] 李乃成, 梅立泉. 数值分析[M]. 第1版. 北京: 科学出版社, 2011.
[6] Sauer, T. Numerical Analysis [M]. 第1版. 吴兆金, 等, 译. 人民邮电出版社, 2010.
[7] 钟巍. 一种新的常微分方程初值问题数值解法[J]. 重庆文理学院学报(自然科学版), 2011, 30(4): 15-18.
[8] Mall, S. and Chakraverty, S. (2016) Application of Legendre Neural Network for Solving Ordinary Differential Equations. Ap-plied Soft Computing, 43, 347-356.
https://doi.org/10.1016/j.asoc.2015.10.069
[9] 孙波, 陈慧雄. 常微分方程初值问题的一种快速迭代[J]. 湖南科技学院学报, 2022, 43(5): 1-4.