王海波, 紀(jì)海潮
(中南大學(xué) 土木工程學(xué)院,長沙 410075)
鐘萬勰[1]提出的精細積分方法,為非線性系統(tǒng)的時程分析開辟了嶄新的途徑;趙秋玲[2]提出了一種非線性系統(tǒng)線性化的精細積分法;張洵安等[3]提出了一種精度較高的線性化迭代精細積分方法;裘春航等[4]將非線性部分用j次多項式來近似;李金橋等[5]先將非線性部分在tk時刻展開成泰勒級數(shù)形式,然后將非線性積分項采用泰勒展開法或高斯-勒讓德數(shù)值積分法與精細積分法結(jié)合進行求解;王海波等[6]將精細積分法與Adams-Bashforth-Moulton多步法相結(jié)合,提出了一種高精度和高效率的精細積分多步法;李緯華等[7]利用改進的歐拉法對狀態(tài)變量進行預(yù)估及校正,然后結(jié)合辛?xí)r間子域法對非線性方程進行求解;江小燕[8]根據(jù) Hamilton 變作用定律構(gòu)造了時空有限元矩陣,提出了求解非線性動力方程的精細時空有限元法;王海波等[9]結(jié)合精細積分法和Romberg數(shù)值積分,提出了一種避免狀態(tài)矩陣求逆的高效精細積分單步法;梅樹立等[10]利用龍貝格積分法的自適應(yīng)性解決時間步長的選擇問題,提出了結(jié)構(gòu)非線性動力方程的自適應(yīng)精細積分算法;李健等[11]基于積分區(qū)間逐次半分的思想實現(xiàn)了任意時間步長的自適應(yīng)求積。
本文基于Adams顯式和隱式預(yù)估公式實現(xiàn)對時間步長的自適應(yīng)選擇,使得時間步長依賴于給定的誤差限值。算例證明該思想可以應(yīng)用于預(yù)估型(求解過程需要用到預(yù)估公式)精細積分算法,能有效提高計算精度,同時使得算法具有很好的穩(wěn)定性,能解決剛度軟化和剛度硬化問題,具有廣泛的適用性。
非線性動力方程可以表示為
(1)
利用文獻[1]的指數(shù)矩陣可將其轉(zhuǎn)化為如下同解積分方程,
(2)
式中v(tk + 1)和v(tk)分別為所求解向量在時刻tk + 1和tk的值。
對于式(2),第一項可直接采用精細算法精確得到,計算精度非常高,因此誤差的主要來源是對第二項的處理。對于第二項,精細積分算法會用到預(yù)估公式,如文獻[6,9](先對v(tk + j / 4)(j=1,2,3,4)進行預(yù)估,再進行數(shù)值積分的一種精細積分算法)。
為數(shù)學(xué)上敘述方便,對積分方程(3)進行討論。
(3)
設(shè)由r+1個已知的數(shù)據(jù)點(xn,fn),(xn - 1,fn - 1),…,(xn - r,fn - r)構(gòu)造插值多項式pr(x),其中fk=f(xk,yk),xk=x0+kh(h為時間步長),運用插值公式有
(4)
(5)
得到r+1階Adams顯式公式,
(6)
(j=0,1…,r)
同理,由r個已知的數(shù)據(jù)點(xn,fn),(xn - 1,fn - 1),…,(xn - r + 1,fn - r + 1)以及一個未知的數(shù)據(jù)點(xn + 1,fn + 1),構(gòu)造插值多項式pr(x),就可以得到r+1階Adams隱式公式。
y(xn + 1)為真實值,yn + 1為基于預(yù)估公式對y(xn + 1)的預(yù)估值,誤差函數(shù)Tn + 1=y(xn + 1)-yn + 1。
構(gòu)造如下具有p階精度的預(yù)估公式:
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)
當(dāng)參數(shù)αk和βk滿足式(10)時,預(yù)估公式達到p階精度。
(10)
當(dāng)r=3,p=4,取β-1=0,α1=α2=α3=0,由式(10)可得出其他待定參數(shù)的方程組,解之得
(11)
(12)
式(11)是四階精度的Adams顯式公式,式(12)是其截斷誤差。同理可以得出各階精度Adams 公式的局部截斷誤差主項,列入表1。
表1 局部截斷誤差主項Tab.1 Local truncation error main term
使用Adams顯式公式進行預(yù)估,將其結(jié)果作為已知的數(shù)值點代入Adams隱式公式,再利用Adams顯式與隱式公式的局部誤差公式,即可得到對一個時間步長的誤差估計,下面以四階精度的Adams顯式公式和隱式公式為例。
(13)
fn - 2]
(14)
(15)
(16)
(17)
ξ(xn + 1)=max[abs(ξ′(xn + 1))]
(18)
(19)
計算時,可調(diào)節(jié)計算步長,使ξ(xn + 1) (1) 通過選擇r+1階Adams公式及誤差限值a,理論上可以實現(xiàn)任意精度的計算結(jié)果。