龍格-庫塔法
經(jīng)典四階龍格庫塔法
在各種龍格-庫塔法當(dāng)中有一個方法十分常用,以至于經(jīng)常被稱為“RK4”或者就是“龍格-庫塔法”。該方法主要是在已知方程導(dǎo)數(shù)和初值信息,利用計算機(jī)仿真時應(yīng)用,省去求解微分方程的復(fù)雜過程。
令初值問題表述如下。
則,對于該問題的RK4由如下方程給出:
其中
這樣,下一個值(yn+1)由現(xiàn)在的值(yn)加上時間間隔(h)和一個估算的斜率的乘積所決定。該斜率是以下斜率的加均:
k1是時間段開始時的斜率;
k2是時間段中點的斜率,通過歐拉法采用斜率k1來決定y在點tn + h/2的值;
k3也是中點的斜率,但是這次采用斜率k2決定y值;
k4是時間段終點的斜率,其y值用k3決定。
當(dāng)四個斜率取平均時,中點的斜率有更大的權(quán)值:
RK4法是四階方法,也就是說每步的誤差是h階,而總積累誤差為h階。
注意上述公式對于標(biāo)量或者向量函數(shù)(y可以是向量)都適用。
顯式龍格庫塔法
顯式龍格-庫塔法是上述RK4法的一個推廣。它由下式給出
其中
(注意:上述方程在不同著述中有不同但卻等價的定義)。
要給定一個特定的方法,必須提供整數(shù)s(級數(shù)),以及系數(shù) aij(對于1 ≤ j < i ≤ s), bi(對于i = 1, 2, ..., s)和ci(對于i = 2, 3, ..., s)。這些數(shù)據(jù)通常排列在一個助記工具中,稱為Butcher tableau(得名自John C. Butcher):
龍格庫塔法是自洽的,如果
如果要求方法的精度為p階,即截斷誤差為O(h)的,則還有相應(yīng)的條件。這些可以從截斷誤差本身的定義中導(dǎo)出。例如,一個2級2階方法要求b1 + b2 = 1, b2c2 = 1/2, 以及b2a21 = 1/2。
例子
RK4法處于這個框架之內(nèi)。其表為:
然而,最簡單的龍格-庫塔法是(更早發(fā)現(xiàn)的)歐拉方法,其公式為yn+1=yn+hf(tn,yn){\displaystyle y_{n+1}=y_{n}+hf(t_{n},y_{n})}。這是唯一自洽的一級顯式龍格庫塔方法。相應(yīng)的表為:
隱式龍格庫塔方法
以上提及的顯式龍格庫塔法一般來講不適用于求解剛性方程。這是因為顯式龍格庫塔方法的穩(wěn)定區(qū)域被局限在一個特定的區(qū)域里。顯式龍格庫塔方法的這種缺陷使得人們開始研究隱式龍格庫塔方法,一般而言,隱式龍格庫塔方法具有以下形式:
其中
在顯式龍格庫塔方法的框架里,定義參數(shù)aij{\displaystyle a_{ij}}的矩陣是一個下三角矩陣,而隱式龍格庫塔方法并沒有這個性質(zhì),這是兩個方法最直觀的區(qū)別:
需要注意的是,與顯式龍格庫塔方法不同,隱式龍格庫塔方法在每一步的計算里需要求解一個線性方程組,這相應(yīng)的增加了計算的成本。
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價值
- 一般般
- 沒價值
{{item.userName}} 舉報
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報
{{_reply.time}}