王海波, 纪海潮
(中南大学 土木工程学院,长沙 410075)
钟万勰[1]提出的精细积分方法,为非线性系统的时程分析开辟了崭新的途径;赵秋玲[2]提出了一种非线性系统线性化的精细积分法;张洵安等[3]提出了一种精度较高的线性化迭代精细积分方法;裘春航等[4]将非线性部分用j次多项式来近似;李金桥等[5]先将非线性部分在tk时刻展开成泰勒级数形式,然后将非线性积分项采用泰勒展开法或高斯-勒让德数值积分法与精细积分法结合进行求解;王海波等[6]将精细积分法与Adams-Bashforth-Moulton多步法相结合,提出了一种高精度和高效率的精细积分多步法;李纬华等[7]利用改进的欧拉法对状态变量进行预估及校正,然后结合辛时间子域法对非线性方程进行求解;江小燕[8]根据 Hamilton 变作用定律构造了时空有限元矩阵,提出了求解非线性动力方程的精细时空有限元法;王海波等[9]结合精细积分法和Romberg数值积分,提出了一种避免状态矩阵求逆的高效精细积分单步法;梅树立等[10]利用龙贝格积分法的自适应性解决时间步长的选择问题,提出了结构非线性动力方程的自适应精细积分算法;李健等[11]基于积分区间逐次半分的思想实现了任意时间步长的自适应求积。
本文基于Adams显式和隐式预估公式实现对时间步长的自适应选择,使得时间步长依赖于给定的误差限值。算例证明该思想可以应用于预估型(求解过程需要用到预估公式)精细积分算法,能有效提高计算精度,同时使得算法具有很好的稳定性,能解决刚度软化和刚度硬化问题,具有广泛的适用性。
非线性动力方程可以表示为
(1)
利用文献[1]的指数矩阵可将其转化为如下同解积分方程,
(2)
式中v(tk + 1)和v(tk)分别为所求解向量在时刻tk + 1和tk的值。
对于式(2),第一项可直接采用精细算法精确得到,计算精度非常高,因此误差的主要来源是对第二项的处理。对于第二项,精细积分算法会用到预估公式,如文献[6,9](先对v(tk + j / 4)(j=1,2,3,4)进行预估,再进行数值积分的一种精细积分算法)。
为数学上叙述方便,对积分方程(3)进行讨论。
(3)
设由r+1个已知的数据点(xn,fn),(xn - 1,fn - 1),…,(xn - r,fn - r)构造插值多项式pr(x),其中fk=f(xk,yk),xk=x0+kh(h为时间步长),运用插值公式有
(4)
(5)
得到r+1阶Adams显式公式,
(6)
(j=0,1…,r)
同理,由r个已知的数据点(xn,fn),(xn - 1,fn - 1),…,(xn - r + 1,fn - r + 1)以及一个未知的数据点(xn + 1,fn + 1),构造插值多项式pr(x),就可以得到r+1阶Adams隐式公式。
y(xn + 1)为真实值,yn + 1为基于预估公式对y(xn + 1)的预估值,误差函数Tn + 1=y(xn + 1)-yn + 1。
构造如下具有p阶精度的预估公式:
yn + 1=α0yn+α1yn - 1+…+αryn - r+
h(β-1fn + 1+β0fn+…+βrfn - r)
(7)
(8)
式(8)右端各项在点xn处作Taylor展开,整理得
y(p + 1)(xn)+O(hp + 2)
(9)
当参数αk和βk满足式(10)时,预估公式达到p阶精度。
(10)
当r=3,p=4,取β-1=0,α1=α2=α3=0,由式(10)可得出其他待定参数的方程组,解之得
(11)
(12)
式(11)是四阶精度的Adams显式公式,式(12)是其截断误差。同理可以得出各阶精度Adams 公式的局部截断误差主项,列入表1。
表1 局部截断误差主项Tab.1 Local truncation error main term
使用Adams显式公式进行预估,将其结果作为已知的数值点代入Adams隐式公式,再利用Adams显式与隐式公式的局部误差公式,即可得到对一个时间步长的误差估计,下面以四阶精度的Adams显式公式和隐式公式为例。
(13)
fn - 2]
(14)
(15)
(16)
(17)
ξ(xn + 1)=max[abs(ξ′(xn + 1))]
(18)
(19)
计算时,可调节计算步长,使ξ(xn + 1) (1) 通过选择r+1阶Adams公式及误差限值a,理论上可以实现任意精度的计算结果。