卷积型Volterra积分微分方程的一种快速算法
A Fast Algorithm for Convolutional Volterra Integral Differential Equations
摘要: 卷积型Volterra积分微分方程是一类重要问题,广泛应用于生物学、经济学,本文研究了一种快速算法求解卷积型Volterra积分微分方程。该方法采用多步配置方法对卷积型Volterra积分微分方程进行离散,结合卷积核的特性,得到离散方程的线性系统由Toeplitz矩阵、对角矩阵和稀疏矩阵组合而成。考虑Toeplitz矩阵与向量的快速算法,设计系数矩阵与向量的快速计算格式。本文利用GMRES算法与快速计算格式结合,获得一种快速求解线性系统的改进算法,并通过实验验证改进算法的高效性。
Abstract: Convolutional Volterra integral differential equations are an important class of problems, widely used in biology, economics, among other fields. This study presents a fast algorithm for solving convolutional Volterra integral differential equations. The method involves discretizing the equations using a multi-step collocation approach, combined with the characteristics of the convolution kernels, resulting in a linear system of equations composed of Toeplitz matrices, diagonal matrices, and sparse matrices. Considering fast algorithms for Toeplitz matrices and vectors, a fast computation format for the coefficient matrix and vector is designed. By combining the GMRES algorithm with the fast computation format, an improved algorithm for efficiently solving linear systems is obtained. Experimental results verify the effectiveness of the improved algorithm.
文章引用:李海洋, 胡怀青, 刘婧雅. 卷积型Volterra积分微分方程的一种快速算法[J]. 运筹与模糊学, 2023, 13(5): 5571-5580. https://doi.org/10.12677/ORF.2023.135556

1. 引言

研究卷积型Volterra积分微分方程(下面简称为卷积型VIDE)的快速算法,其方程形式如下

{ y ( t ) = a ( t ) y ( t ) + g ( t ) + 0 t K ( t s ) y ( s ) d s , t I : = [ 0 , T ] , y ( 0 ) = y 0 , (1)

其中 a ( ) , g ( ) C ( I ) K ( t s ) 是区域 D : = { ( t , s ) | 0 s t T } 上的连续函数,这些条件保证了式(1)解的存在唯一性 [1] 。

由于卷积型VIDE在生物学、经济学中有着广泛的应用,如计算生物学 [2] 、风险管理 [3] 等,因此对卷积型VIDE解的研究受到大量学者的关注。通常情况下,方程(1)的解析解很难求出,因此研究该方程的数值解法具有重要意义。迄今为止,国内外研究者提出和改进了很多有效求解VIDE数值解的方法,如差分求积法 [4] 、龙格–库塔法 [5] 、可约求积规则 [6] 、一般线性法 [7] [8] 、伽辽金法 [9] [10] 、配置方法 [1] 等。在文献 [10] 中的配置方法是显式类型的求解格式,可以逐步求解得到整个 y ( t ) 在I上的数值逼近。 [11] 中的数值稳定性分析表示一些特殊的配置节点选取,可以导出 A 0 稳定方法。此外,VDIE稳定数值解的另一种方法是使用超隐式技术 [12] 。通过使用下一个子区间的配置节点和Hermite-Birkhoff插值来研究求解非判别和刚性VIDE的多步配置方法。研究发现,使用计算的配置点明显扩大了稳定域。

在本文中,我们使用广义多步配置方法求解卷积型VIDE,广义多步配置方法通过在大区间上划分均匀网格,使用子区间两侧的网格节点构造局部多项式,类似的方法已经广泛用于Volterra积分方程中 [13] [14] [15] [16] ,这种方法具有简洁的形式,在不改变线性系统维度的情况下能够取得较高收敛阶的数值解。根据离散时产生线性系统的结构研究他的快速算法。在第2节中,构造求解卷积型VIDE的广义多步配置方法,分析求解卷积型VIDE的广义多步配置方法产生线性系统的结构,并结合GMRES [17] 算法得到快速求解算法。在第3节中,我们使用数值算例验证数值方法的高效性。

2. 快速广义多步配置方法

考虑使用广义多步配置方法 GMCM k 1 , k 2 离散Volterra积分微分方程。设均匀网格 I h = { t n = n h | n = 0 , 1 , , N } ,其中步长 h = T / N 。基于 I h ,定义局部基函数

j α n , β n ( s ) = i = α n , i j β n + 1 s j j i , j = α n , , β n + 1. (2)

进而导数在 [ t n , t n + 1 ] 上的导数 y ( t ) 具有如下表示

Y h ( t n + s h ) = i = α n β n + 1 Y n + j j α n , β n ( s ) , s [ 0 , 1 ] , (3)

其中 Y n + i : = Y h ( t n + j h )

( α n , β n ) = { ( n , k 1 + k 2 n ) , 0 n k 1 1 , ( k 1 , k 2 ) , k 1 n N k 2 1 , ( k 1 + k 2 + n + 1 N , N n 1 ) , N k 2 n N 1 ,

k 1 , k 2 是非负整数。

[ t n , t n + 1 ] 上对(3)积分

Y h ( t n + s h ) = Y n + h i = α n β n + 1 Y n + j M O M n , j ( s ) , s [ 0 , 1 ] , (4)

其中 Y n : = Y h ( t n ) M O M n , j ( s ) = 0 s j α n , β n ( v ) d v 。为了描述方程,定义下列符号 M O M K 1 n , j = 0 1 K ( t n + 1 t j s h ) d s M O M K 2 n , j i = 0 1 K ( t n + 1 t j s h ) M O M j , i ( s ) d s

进而我们得到

0 t n + 1 K ( t n + 1 s ) Y h ( s ) d s = j = 0 n t j t j + 1 K ( t n + 1 s ) Y h ( s ) d s = h j = 0 n 0 1 K ( t n + 1 t j v h ) Y h ( t j + v h ) d v = h j = 0 n 0 1 K ( t n + 1 t j v h ) ( Y j + h i = α j β j + 1 Y j + i M O M j , i ( v ) ) d v = h j = 0 n Y j M O M K 1 n , j + h 2 j = 0 n i = α j β j + 1 Y j + i M O M K 2 n , j i .

注意到

Y n = a ( t n + 1 ) Y n + 1 + g ( t n + 1 ) + 0 t n + 1 K ( t n + 1 s ) Y h ( s ) d s , n = 0 , 1 , , N 1. (5)

因此,我们有,

P ^ Y D = G ^ , (6)

其中

P ^ = E N h A F h 2 B F h 2 C ,

G ^ = G N + Y 0 ( A + h B ) 1 + h Y 0 ( A F 0 + h B F 0 + h C 0 ) + h Y 0 B 0 ,

B ^ = ( b ^ i , j ) N × ( N + 1 ) , b ^ i , j = { M O M K 1 n , j i > j , 0 , i j ,

C ^ = ( c ^ i , j ) N × ( N + 1 ) , c ^ i , j = k = k 1 k 2 k 1 + k 2 + 1 M O M K 3 i 1 , j k k ,

F ^ = ( f ^ i , j ) N × ( N + 1 ) , f ^ i , j = k = k 1 k 2 k 1 + k 2 + 1 M O M K 4 i 1 , j k k ,

M O M K 3 i 1 , j k k = { M O M K 2 i 1 , j k k , ( 0 < j k min ( i 1 , N 1 ) & ( α j k k β j k ) ) , 0 , ,

M O M K 1 i 1 , j k k = { M O M j k , k ( 1 ) , ( 0 < j k min ( i 1 , N 1 ) & ( α j k k β j k ) ) , 0 , ,

B = B ^ ( 1 : N , 2 : N + 1 ) , B 0 = B ^ ( 1 : N , 1 ) ,

C = C ^ ( 1 : N , 2 : N + 1 ) , C 0 = C ^ ( 1 : N , 1 ) ,

F = F ^ ( 1 : N , 2 : N + 1 ) , F 0 = F ( 1 : N , 1 ) ,

Y D = ( Y 1 Y 2 Y N ) , G N = ( g ( t 1 ) g ( t 2 ) g ( t N ) ) , A N = ( a ( t 1 ) a ( t 1 ) a ( t 1 ) ) .

1 表示元素全是1的N行1列的列向量,上述矩阵描述中 i = 1 , 2 , , N j = 1 , 2 , , N + 1 。注意到 M O M K 1 n , j = M O M K 1 n + 1 , j + 1 n = 0 , 1 , , N 2 j = 0 , 1 , , N 1

n = k 1 , k 1 + 1 , , N k 2 2 时, M O M n , j ( s ) = M O M n 1 , j ( s ) ,进而 M O M K 2 n , j i = M O M K 2 n + 1 , j + 1 i ,因此,式(6)可以写为如下形式,

( E N ( h A + h 2 B ) ( F T + F S ) h 2 ( C T + C S ) ) Y D = G ^ , (7)

P ^ = E N h A F h 2 B F h 2 C = E N ( h A + h 2 B ) ( F T + F S ) h 2 ( C T + C S ) ,其中 B 是Toeplitz矩阵,其第一行元素为 B ( 1 , 1 : N ) ,第一列元素为 B ( 1 : N , 1 ) F T + F S = F C T + C S = C F T 是Toeplitz矩阵,其第一行元素为 F 1 = ( F ( k 1 + k 2 + 1 , k 1 + k 2 + 1 : N ) , 0 1 × ( k 1 + k 2 ) ) ,第一列元素为 F 2 = ( F ( k 1 + k 2 + 1 : N , k 1 + k 2 + 1 ) ; 0 ( k 1 + k 2 ) × 1 ) F S 是稀疏矩阵,其非零元素及位置为 F S ( : , i ) = F ( : , i ) ( 0 ( i 1 ) × 1 ; F 2 ( 1 : N i + 1 ) ) i = 1 , 2 , , k 1 + k 2 F S ( N j + 1 , N k 1 k 2 1 : i ) = F ( N j + 1 , N k 1 k 2 1 : i ) ( F 2 ( k 1 + k 2 + 3 j : 1 : 1 ) T , F 1 ( 1 : j 1 ) ) j = 1 , 2 , , k 2 C T 是Toeplitz矩阵,其第一行元素为 C 1 = ( C ( k 1 + k 2 + 1 , k 1 + k 2 + 1 : N ) , 0 1 × ( k 1 + k 2 ) ) ,第一列元素为 C 2 = ( C ( k 1 + k 2 + 1 : N , k 1 + k 2 + 1 ) ; 0 ( k 1 + k 2 ) × 1 ) C S 是稀疏矩阵,其非零元素及位置为 C S ( : , i ) = C ( : , i ) ( 0 ( i 1 ) × 1 ; C 2 ( 1 : N i + 1 ) ) i = 1 , 2 , , k 1 + k 2 C S ( N j + 1 , N k 1 k 2 1 : i ) = C ( N j + 1 , N k 1 k 2 1 : i ) ( C 2 ( k 1 + k 2 + 3 j : 1 : 1 ) T , C 1 ( 1 : j 1 ) ) j = 1 , 2 , , k 2 。注:上述过程中矩阵元素的选择参考Matlab矩阵元素的选取。此外在表1中,我们给出式子(7)中组成系数矩阵 P ^ 的各部分矩阵的情况。

Table 1. Detailed table of matrices for each part during coefficient matrix P ^ decomposition

表1. 系数矩阵 P ^ 分解时各部分矩阵详细表

其中,

D n u m = { k 2 N + ( k 1 + k 2 + 2 ) k 2 , k 1 = 0 , ( k 1 + k 2 + 1 ) N + ( k 1 + k 2 + 2 ) k 2 , k 1 > 0 ,

对于Toeplitz矩阵,仅需要存储第一行和第一列即可,因此其存储量为2N。

如果不考虑 P ^ 的结构,那么我们可以选择直接求解(6)式,需要 O ( N 3 ) 的计算量,或者使用迭代算法广义极小残差(GMRES)求解(6)式,其计算量主要来自于 P ^ 与向量的乘法运算,因此需要 O ( N 2 ) 的计算量。根据表1可知,系数矩阵 P ^ 由Toeplitz矩阵,稀疏矩阵,以及对角矩阵组合而成,充分利用 P ^ 的结构,优化 P ^ 与向量相乘时的计算量。

首先考虑Toeplitz矩阵与向量的快速计算,即根据已有的Toeplitz矩阵构造循环矩阵,进而通过快速Fourier方法计算。由Toeplitz矩阵T构造 T ^

T = ( t 0 t 1 t 2 t n t 1 t 0 t 1 t n + 1 t 2 t 1 t 0 t n + 2 t n t n 1 t n 2 t 0 ) , T ^ = ( 0 t n t n 1 t 1 t n 1 0 t n t 2 t n 2 t n 1 0 t 3 t 1 t 2 t 3 0 )

将T与向量b的乘法嵌入式(8)计算,

( T T ^ T ^ T ) ( b 0 ) = ( T b ) (8)

其中, ( T T ^ T ^ T ) 是循环矩阵,与向量 ( b 0 ) 的乘法使用快速Fourier方法计算,计算量为 O ( N log ( N ) ) 。而稀疏矩阵与向量的乘法所需计算量为 O ( N ) ,对角矩阵与向量的乘法也是 O ( N ) 。进而 P ^ 与任意向量H的乘法 G ¯ : = P ^ H 可分为公式(9)中的5个步骤计算:

G ¯ F = F T H + F S H , ( step-1 ) G ¯ A = A G ¯ F , ( step-2 ) G ¯ B = B G ¯ F , ( step-3 ) G ¯ C = C T H + C S H , ( step-4 ) G ¯ = H h ( G ¯ A + h G ¯ B + h G ¯ C ) . ( step-5 ) (9)

Table 2. Formula (9) Calculation amount for each step

表2. 公式(9)各步的计算量

表2所示,我们给出了使用公式(9)计算 P ^ H 的各步骤的计算量,其中计算量最大的是Toeplitz矩阵与向量的快速计算,为 O ( N log ( N ) ) ,其余矩阵与向量的乘积中,计算量均为 O ( N ) ,因此使用公式(9)计算 P ^ H 的计算量为 O ( N log ( N ) )

进而我们考虑GMRES算法(如算法1所示),该算法中计算量主要来源于矩阵 P ^ 与向量的乘法即第2行 P ^ Y D ( 0 ) 与第4行 P ^ v ( i ) 的计算,这个两步的计算量均为 O ( N 2 ) 。考虑矩阵 P ^ 与向量的快速计算格式公式(9),结合GMRES算法,我们得到算法2所示的改进算法,进而可以将第2行 P ^ Y D ( 0 ) 与第4行 P ^ v ( i ) 的计算量降为 O ( N log ( N ) ) ,从而优化整个算法的计算量。

Algorithm 1. GMRES algorithm for solving linear systems P ^ Y D = G ^

算法1. GMRES算法求解线性系统 P ^ Y D = G ^

Algorithm 2. Improved algorithm for solving linear systems P ^ Y D = G ^

算法2. 改进算法求解线性系统 P ^ Y D = G ^

Algorithm 3. UPDATA ( Y ¯ D , i ) algorithm

算法3. UPDATA ( Y ¯ D , i ) 算法

3. 实例分析与应用

在本节中,我们通过数值算例说明改进算法求解线性系统(7)的高效性,实验主要对比GMRES求解线性系统(7)与改进算法求解线性系统(7)的CPU计算时间,收敛时的相对残差,迭代次数,迭代过程中的相对残差变化情况。

例:求解卷积型Volterra积分微分方程

y ( t ) = 2 1 + t y ( t ) + e t + 0 t 2 cos ( t s ) y ( s ) d s ,

其中 y ( 0 ) = 1 , t [ 0 , 8 ] ,其解析解是 y = ( 1 + t ) 2 e t 。数值实验是在Matlab2019a中实现的,其中,给定收敛条件为相对残 ε < 10 10

ε = G ^ P ^ Y D 2 / G ^ 2 .

Table 3. GMCM 0 , 2 : Comparison of GMRES and improved algorithm solution time

表3. GMCM 0 , 2 :GMRES与改进算法求解时长对比

Table 4. GMCM 1 , 1 : Comparison of GMRES and improved algorithm solution time

表4. GMCM 1 , 1 :GMRES与改进算法求解时长对比

对区间 [ 0 , 8 ] 作等距划分,取不同N,对于 GMCM 0 , 2 , GMCM 1 , 1 , GMCM 2 , 0 得到的线性系统分别使用GMRES算法和改进算法求解所得CPU计算时长如表3表4表5图1给出了迭代过程中相对残差的变化情况,图2给出了两种求解算法的CPU计算时间。

表3表4表5中可知对于指定算法结束条件相对残 ε < 10 10 ,GMRES算法和改进算法结束时相对残差几乎相同,且迭代次数相同,但随N增大,改进算法的CPU计算时间会小于GMRES算法的

Table 5. GMCM 2 , 0 : Comparison of GMRES and improved algorithm solution time

表5. GMCM 2 , 0 :GMRES与改进算法求解时长对比

(a) N = 100(b) N = 200 (c) N = 400 (d) N = 800

Figure 1. Changes in relative residuals during the iteration process

图1. 迭代过程中相对残差变化情况

CPU计算时间,当N增大一倍,GMRES算法的计算时间增加倍数逐渐趋近于4,改进算法的CPU计算时间增长倍数逐渐趋近于2。

Figure 2. Comparison between GMRES and improved algorithms in solving problems

图2. GMRES 与改进算法求解时对比

图1给出迭代过程中相对残差的变化情况,针对本文所取的例子,不同方法获得的线性系统在求解过程中相对残差没有较大差距,且GMRES方法和改进算法的相对残差也没有较大差距。在图2中,我们绘制了GMRES算法与改进算法求解 GMCM 0 , 2 , GMCM 1 , 1 , GMCM 2 , 0 的CPU计算时长,以及两条参考曲线 T 1 = 2 N 2 × 10 8 , T 2 = 1.5 N log N × 10 6 。当N增大时,GMRES算法的求解时间靠近 T 1 ,改进算法的求解时间靠近 T 2 ,也就是说GMERS的算法求解时间为 O ( N 2 ) ,GMRES的求解时间为 O ( N log ( N ) ) ,验证了第1节GMRES算法的计算量为 O ( N 2 ) ,改进算法的计算量为 O ( N log ( N ) ) 。而且 k 1 , k 2 的值对GMRES和改进算法的CPU计算时间影响不大,两种求解线性系统的算法与线性系统的维度 有关。此外,从图中可知随着N变大,改进算法的计算时间小于GMRES的计算时间且改进算法的CPU计算时间的增长率小于GMRES,因此改进算法能够快速高效计算卷积型VIDE离散出的大型线性系统。

4. 结论

使用广义多步配置方法( GMCM k 1 , k 2 )离散卷积型VIDE,分析离散后的线性系统的结构组成,结合Toeplitz矩阵与向量的快速计算,进而得到系数矩阵与向量的快速计算。使用GMRES算法与快速计算格式结合,构建了一种适合求解该类线性系统的改进算法,改进后的算法的计算量只需 O ( N log ( N ) ) ,比GMRES算法的计算量更小,从实验结果看,改进算法与GMRES算法在求解同一问题时,改进算法需要的求解时间比GMRES算法的求解时间更短,当N值增大时,改进算法在计算时间上更小,更具优势。因此改进算法可以高效求解这一类大规模线性系统。

参考文献

[1] Brunner, H. (2004) Collocation Methods for Volterra Integral and Related Functional Equations. Cambridge Uni-versity Press, Cambridge.
https://doi.org/10.1017/CBO9780511543234
[2] De Gaetano, A. and Arino, O. (2000) Mathematical Modelling of the Intravenous Glucose Tolerance Test. Journal of Mathematical Biology, 40, 136-168.
https://doi.org/10.1007/s002850050007
[3] Makroglou, A. (2003) Integral Equations and Actuarial Risk Management: Some Models and Numerics. Mathematical Modelling and Analysis, 8, 143-154.
https://doi.org/10.3846/13926292.2003.9637219
[4] Abdi, A. and Hosseini, S. (2018) The Barycentric Ra-tional Difference-Quadrature Scheme for Systems of Volterra Integro-Differential Equations. SIAM Journal on Scientific Computing, 40, A1936-A1960.
https://doi.org/10.1137/17M114371X
[5] Wen, J., Huang, C. and Li, M. (2019) Stability Analysis of Runge-Kutta Methods for Volterra Integro-Differential Equations. Applied Numerical Mathematics, 146, 73-88.
https://doi.org/10.1016/j.apnum.2019.07.004
[6] Chen, H. and Zhang, C. (2011) Boundary Value Methods for Volterra Integral and Integro-Differential Equations. Applied Mathematics and Computation, 218, 2619-2630.
https://doi.org/10.1016/j.amc.2011.08.001
[7] Mahdi, H., Abdi, A. and Hojjati, G. (2018) Efficient General Linear Methods for a Class of Volterra Integro-Differential Equations. Applied Numerical Mathematics, 127, 95-109.
https://doi.org/10.1016/j.apnum.2018.01.001
[8] Almasoodi, A., Abdi, A. and Hojjati, G. (2021) A GLMs-Based Difference-Quadrature Scheme for Volterra Integro-Differential Equations. Applied Numerical Mathematics, 163, 292-302.
https://doi.org/10.1016/j.apnum.2021.02.001
[9] Lin, T., Lin, Y., Rao, M. and Zhang, S. (2000) Pe-trov-Galerkin Methods for Linear Volterra Integro-Differential Equations. SIAM Journal on Numerical Analysis, 38, 937-963.
https://doi.org/10.1137/S0036142999336145
[10] Yi, L. and Guo, B. (2015) An h-p Version of the Continuous Petrov-Galerkin Finite Element Method for Volterra Integro-Differential Equations with Smooth and Nonsmooth Kernels. SIAM Journal on Numerical Analysis, 53, 2677-2704.
https://doi.org/10.1137/15M1006489
[11] Cardone, A. and Conte, D. (2013) Multistep Collocation Methods for Volterra Integro-Differential Equations. Applied Mathematics and Computation, 221, 770-785.
https://doi.org/10.1016/j.amc.2013.07.012
[12] Fazeli, S. and Hojjati, G. (2015) Numerical Solution of Volterra Integro-Differential Equations by Superimplicit Multistep Collocation Methods. Numerical Algorithms, 68, 741-768.
https://doi.org/10.1007/s11075-014-9870-8
[13] Ma, J. and Xiang, S. (2017) A Collocation Boundary Value Method for Linear Volterra Integral Equations. Journal of Scientific Computing, 71, 1-20.
https://doi.org/10.1007/s10915-016-0289-3
[14] Liu, L. and Ma, J. (2021) Block Collocation Boundary Value Solutions of the First-Kind Volterra Integral Equations. Numerical Algorithms, 86, 911-932.
https://doi.org/10.1007/s11075-020-00917-6
[15] Liu, L. and Ma, J. (2022) Collocation Boundary Value Methods for Auto-Convolution Volterra Integral Equations. Applied Numerical Mathematics, 177, 1-17.
https://doi.org/10.1016/j.apnum.2022.03.004
[16] Chen, H. and Ma, J. (2022) Solving the Third-Kind Volterra Integral Equation via the Boundary Value Technique: Lagrange Polynomial versus Fractional Interpolation. Applied Mathematics and Computation, 414, Article 126685.
https://doi.org/10.1016/j.amc.2021.126685
[17] Barrett, R., et al. (1994) Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods. Society for Industrial and Applied Mathematics.