Runge-Kutta法

出自維基百科,自由嘅百科全書
(由Runge–Kutta法跳轉過嚟)

數值分析當中, Runge-Kutta法德文Runge-Kutta-Verfahren英文Runge-Kutta methods)、又可以叫龍俄-厥他法粵拼lung4 ngo4 - kyut3 taa1 faat3),簡稱RK法,查實係一系列隱式同顯式迭代方法,其中包括眾所周知嘅喊做Euler法嘅例程,呢個例程用於幫常微分方程嘅近似解做時間離散化[1]啲方法係由德國數學家Carl RungeWilhelm Kutta於1900年左右開發出嚟嘅。

微分方程y'= sin(t)^ 2 * y嘅Runge-Kutta法嘅比較(橙色為精確解)

經典RK法[編輯]

經典Runge-Kutta法使用嘅斜率

Runge-Kutta系列裏便最廣為人知嘅一種通常着喊做「 RK4」、「經典Runge-Kutta法」抑或直程「 Runge-Kutta法」,「4」係因爲有四階。

指定一個初值問題

其中係時間嘅未知函數(標量抑或向量) ,有待逼近;已知嘅變化值本身嘅函數。喺初始時間,個值係 。畀有函數初始條件

而今揀一個𨂾長h > 0並定義埋:

對於n = 0、1、2、3,...,使用[2]

(注意:以上等式喺唔同嘅文本裏便具有唔同但等效嘅定義)。[3]

呢度嘅嘅RK4近似值 ,同埋下一個值( )由當前值( )加埋四個增量嘅加權平均值嚟決定,其中每個增量都係一個乘積、由間隔大細h乘埋一個估出嘅斜率得出嘅,個斜率k由微分方程右側嘅函數 f 指定。

  • 係區間開頭嘅斜率,用到歐拉法);
  • 係區間中點嘅斜率,用到 ;
  • 又係中點度嘅斜率,之用到 ;
  • 係區間孻尾嘅斜率,用到

喺對四個斜率求平均值陣時,對中點度嘅斜率賦予大啲嘅權重。若果獨立於 ,即微分方程相當於一個簡單嘅積分,係噉RK4就係Simpson法則英文Simpson's rule[4]

種RK4方法係四階方法,噉樣代表局部截尾誤差同階於 ,而總累積誤差同階於

喺許多實際應用裏便,隻函數獨立於 (所謂嘅自治系統(autonomous system)抑或時唔變系統,特別係喺物理學裏便),而且佢哋嘅增量根本唔會得到計算,亦都唔會傳遞畀函數 ,只有對個最終公式用到。

顯式RK法[編輯]

顯式Runge-Kutta法家族係上述RK4方法嘅概括,之係噉樣得出:

其中[5]

(注意:以上公式喺某些文本裏便可能具有唔同但等效嘅定義)。

要指定一個特定嘅方法,就要提供整數s(級數)、係數aij(對於 1 ≤ j < is)、bi(對於i = 1,2,..., s )同埋ci (對於i = 2,3,..., s )。矩陣[aij]着喊做Runge-Kutta矩陣,而 bici着喊做權重節點[6]啲數據通常係攞一套助記手段喊做Butcher表Butcher tableau )嘅形式嚟排列(根據返John C. Butcher個名):

泰勒級數展開表明,Runge-Kutta法相容(consistent)若且唯若有:

若果要求呢個方法有返一定階數p ,噉亦都有相應嘅要求,噉樣意味住局部截尾誤差為O(hp+1)。啲可以從截尾誤差本身嘅定義裏便得出。譬如,若果b1 + b2 = 1, b2c2 = 1/2, b2a21 = 1/2,噉兩級方法嘅階數為2。 [7]請注意,確定係數嘅常用條件係[8]

之不過,僅衹呢個條件唔夠保持相容性。 [9]

一般嚟講,若果階龍格-庫塔方法有階,噉就證明得到級數必須滿足 , 而若果 , 就有[10]但係,仲唔知道喺所有情況下啲界限係唔係都咁清晰sharp)。譬如,所有啲已知嘅8階方法至少有11級,即使有可能存在啲方法少啲級嘅。 (上便個範圍表明到可能係有9級嘅方法;但亦都可能係個範圍根本唔清晰。 )實質上,確切嘅最細級數仲係一個開放問題(open problem)、對於一個顯式階Runge-Kutta法嚟講,因爲仲未發現啲方法、滿足得上述啲範圍入便啲等號嘅。一些已知嘅值係: [11]

上便啲證明得嘅範圍就意味住搵唔到階數嘅方法,所需級數少過目前搵到嘅同階方法嘅。但係,可以想像到,搵得到一種階數之只有8級嘅方法,之不過如表所示而今已知嘅方法至少要到9級。

例子[編輯]

RK4法屬於呢個框架。佢個Butcher表係:[12]

0
1/2 1/2
1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6

種Runge-Kutta法嘅其中一種熹微變體亦都歸功於1901年Kutta,喊做3/8規則。[13]呢個方法嘅主要優點係,幾乎所有啲誤差係數都細過啲流行方法入便嘅誤差係數,但每一𨂾時間需要稍爲多啲嘅FLOP(浮點運算)。佢個Butcher表係:

0
1/3 1/3
2/3 -1/3 1
1 1 −1 1
1/8 3/8 3/8 1/8

但係,最簡單嘅Runge-Kutta法梗係(正向)歐拉法,公式係 。呢個係唯一相容(consistent)嘅一級顯式Runge-Kutta法。個相應圖表係:

0
1

兩級二階方法[編輯]

中點法係一個兩級二階方法嘅示例:

相應嘅圖表係:

0
1/2 1/2
0 1

中點法唔係唯一嘅兩級二階Runge-Kutta法。有一系列噉樣嘅方法,由α參數設定並由以下公式畀出[14]

個Butcher表係:

0

喺噉樣嘅方法族入便,嗰陣畀出中點法,而嗰陣係Heun法[4]

使法[編輯]

譬如,考慮α= 2/3嘅兩級二階Runge-Kutta法,之亦都喊做Ralston方法。佢由表格畀出:

0
2/3 2/3
1/4 3/4

用到相應嘅方程式

呢個方法用於解決初值問題

其中𨂾長h = 0.025,因此呢個方法需要執行四𨂾。

呢個方法進行如下:

數值解對應於帶下劃線啲值。

自適應RK法[編輯]

自適應方法旨喺產生單個Runge-Kutta𨂾步嘅局部截尾誤差嘅估計。噉樣可以通過兩種方法來完成,一種係有序嘅還有一個訂單 。啲方法係交織嘅,即佢哋有共同嘅中間𨂾步。因此,戥採用高階方法嘅一𨂾相比,估計誤差嘅計算成本好細抑或可忽略唔計。

喺積分期間,𨂾長會着調整,嚟令估計嘅誤差保持喺用戶定義嘅閾值以下:若果誤差太大,噉攞細啲嘅𨂾長重複執行過一𨂾;若果誤差細得多,就增加𨂾長嚟慳時間。噉樣(幾乎)可以畀出最佳𨂾長,同時慳返計算時間。而且,用戶唔使嘥時間來搵返啱嘅𨂾長。

低階𨂾步由以下式得出:

其中戥高階方法相同。然之後個誤差係:

噉樣係 。幫呢種方法擴展Butcher表,嚟畀出

0

Runge-Kutta-Fehlberg法具有5跟4階兩種方法。佢嘅擴展後嘅Butcher表係:

0
1/4 1/4
3/8 3/32 9/32
12/13 1932/2197 −7200/2197 7296/2197
1 439/216 -8 3680/513 -845/4104
1/2 −8/27 2 −3544/2565 1859/4104 −11/40
16/135 0 6656/12825 28561/56430 −9/50 2/55
25/216 0 1408/2565 2197/4104 −1/5 0

但係,最簡單嘅自適應Runge-Kutta法涉及Heun法(階數2)佮Euler法(階數1)嘅組合。佢嘅擴展後嘅Butcher表係:

0
1 1
1/2 1/2
1 0

其他啲自適應嘅Runge-Kutta法有Bogacki-Shampine法(3、2階)同埋Cash-Karp法Dormand-Prince法(5、4階)。

非融合RK法[編輯]

若果互相之間唔同,噉Runge-Kutta法就着認爲係非融合嘅nonconfluent[15]

Runge-Kutta-Nyström法[編輯]

Runge-Kutta-Nyström法係特定嘅Runge-Kutta法,之針對二階微分方程進行唨改良[16] [17]

隱式RK法[編輯]

到目前為止,所有啲提到嘅Runge-Kutta法都係顯式方法。顯式嘅Runge-Kutta法通常唔適合於攞嚟求解啲剛性方程(Stiff equations),因為佢哋嘅絕對穩定域好細。特別係佢係有界嘅。 [18]噉樣個問題喺偏微分方程求解裏便尤為重要。

顯式Runge-Kutta法個唔穩定性激唨啲隱式方法嘅發展。隱式Runge-Kutta法具有以下形式:

其中

[19]

顯式方法嘅區別喺於,喺顯式方法裏便, j嘅總和僅衹等於i -1。呢個亦都顯示喺張Butcher表裏便,當中顯式方法個係數矩陣係下三角形式。喺隱式方法裏便, j度嘅總和上升到s而且係數矩陣唔係三角形,係噉畀出對應嘅Butcher表形式[12]

請參閱返上方嘅自適應Runge-Kutta法嚟獲取有關排嘅介紹。

呢種差異導致,每一𨂾都必須求解代數方程組。噉樣大大增加唨計算成本。若果使用s級嘅方法求解m個分量嘅微分方程,噉個代數方程組將具有ms個分量。噉樣可以戥隱式線性多步法(ODE嘅另一種大方法系列)形成對比:隱式s𨂾線性多步方法需要求解只有m個分量嘅代數方程組,因此系統嘅大細唔會隨住𨂾數增加而增加。 [20]

例子[編輯]

隱式Runge-Kutta法嘅最簡單示例係後褪Euler法

張Butcher表好簡單:

呢張Butcher表戥以下公式相對應

可以重新排列嚟獲得上便列出嘅後褪Euler法嘅公式。

隱式Runge-Kutta法嘅另一個示例係梯形規則。佢個Butcher表為:

梯形規則係一種選點法(似文中所述)。所有選點法都係隱式Runge-Kutta法,但並非所有隱式Runge-Kutta法都係選點法。 [21]

Gauss-Legendre法構成唨一系列基於Gauss正交嘅搭配方法。s級嘅Gauss-Legendre法嘅階數為2 s (因此,可以構造任意高階嘅方法)。 [22]兩級(即有四階)嘅方法會有噉樣嘅Butcher表:

[20]

穩定[編輯]

戥顯式方法相比,隱式Runge-Kutta法嘅優勢喺於其更大嘅穩定性,尤其係喺應用於剛性方程嗰陣。考慮線性測試方程y' = λy應用到呢條方程嘅Runge-Kutta法簡化成迭代式 ,其中r由下式得出:

[23]

其中e代表1嘅向量。函數r喊做穩定性函數[24]從公式可以得出,若果呢個方法有sr係兩個次數為s嘅多項式個商顯式方法有嚴格意義上嘅下三角矩陣A ,噉樣意味住det( I - zA )= 1而且穩定性函數係多項式。 [25]

若果|r(z)| < 1,z = hλ ,線性測試方程嘅數值解將衰減到零。噉樣嘅z嘅集合喊做絕對穩定性域。特別嚟講,若果啲Re(z) < 0嘅z係喺嗮絕對穩定域,呢個方法就着認為係絕對穩定嘅。顯式Runge-Kutta法嘅穩定性函數係多項式,因此顯式Runge-Kutta法永遠唔會係A穩定嘅。 [25]

若果方法嘅階數為p ,噉穩定性函數滿足陣時 。因此,研究畀定次數嘅多項式個商、之逼近指數函數嘅,會好有趣。啲喊做Padé近似值。若且唯若'm≤N≤M' + 2嗰陣,一個Padé近似值有m次嘅分子同埋n次嘅分母嘅先係A穩定嘅。 [26]

s級嘅Gauss-Legendre法嘅階數為2 s ,因此佢個穩定性函數為m = n = s嘅Padé近似值。因此,呢個方法係A穩定嘅。 [27]噉樣表明A穩定嘅Runge-Kutta可以有任意高嘅階。相反,A穩定線性多步法嘅階數唔超得過2。

B穩定性[編輯]

微分方程解嘅A穩定性概念同線性自治方程有關 。 Dahlquist進行唨一項研究針對啲數值方案嘅穩定性、啲應用於滿足單調性條件嘅非線性系統嘅。相應嘅概念被定義為:G穩定性同埋B穩定性(Butcher,1975),分別對應多步方法(同埋戥佢相關嘅啲單腿方法(one-leg methods))同埋Runge-Kutta法 Runge-Kutta法應用於非線性系統 ,有;若果呢種情況意味住兩個數值解,噉就喊做B穩定。

係三個矩陣,定義爲:

若果矩陣都係非負定嘅,噉呢個Runge-Kutta法就可以講係代數穩定嘅[28] 。 B穩定性[29]嘅充分條件係: 係非負定嘅。

四階RK法嘅推導[編輯]

一般來講,階Runge-Kutta法寫得成:

其中:

係通過評估喺第 階嘅導數嚟獲得嘅增量。

如前所述,喺任一間隔嘅起點、中間點、末點進行求值,捉代入通用公式可以得到四階Runge-Kutta方法[30]。因此,揀:

否則。首先定義以下數量:

其中 。若果定義:

對於先前嘅關係,可以證明以下等式滿足得

其中:

係對應時間嘅個總導數(total derivative)。

若果而今使用啱啱導出嘅內容來表達通用公式,噉會得到:

並捉佢戥附近泰勒級數比較,有 :

獲有一個係數約束系統:

個系統解出陣時畀出,似之前噉。

睇埋[編輯]

[編輯]

  1. DEVRIES, Paul L. ; HASBUN, Javier E. A first course in computational physics. Second edition. Jones and Bartlett Publishers: 2011. p. 215.
  2. Press et al. 2007, p. 908; Süli & Mayers 2003, p. 328
  3. Atkinson (1989, p. 423), Hairer, Nørsett & Wanner (1993, p. 134), Kaw & Kalu (2008, §8.4) and Stoer & Bulirsch (2002, p. 476) leave out the factor h in the definition of the stages. Ascher & Petzold (1998, p. 81), Butcher (2008, p. 93) and Iserles (1996, p. 38) use the y values as stages.
  4. 4.0 4.1 Süli & Mayers 2003, p. 328
  5. Press et al. 2007, p. 907
  6. Iserles 1996, p. 38
  7. Iserles 1996, p. 39
  8. Iserles 1996, p. 39
  9. As a counterexample, consider any explicit 2-stage Runge-Kutta scheme with and and randomly chosen. This method is consistent and (in general) first-order convergent. On the other hand, the 1-stage method with is inconsistent and fails to converge, even though it trivially holds that .
  10. Butcher 2008, p. 187
  11. Butcher 2008
  12. 12.0 12.1 Süli & Mayers 2003, p. 352
  13. Hairer, Nørsett & Wanner (1993, p. 138) refer to Kutta (1901).
  14. Süli & Mayers 2003, p. 327
  15. Lambert 1991, p. 278
  16. Dormand, J. R.; Prince, P. J. (October 1978). "New Runge-Kutta Algorithms for Numerical Simulation in Dynamical Astronomy". Celestial Mechanics. 18 (3): 223–232. doi:10.1007/BF01230162.
  17. Fehlberg, E. (October 1974). Classical seventh-, sixth-, and fifth-order Runge-Kutta-Nyström formulas with stepsize control for general second-order differential equations (報告) (第NASA TR R-432版). Marshall Space Flight Center, AL: National Aeronautics and Space Administration.
  18. Süli & Mayers 2003, pp. 349–351
  19. Iserles 1996, p. 41; Süli & Mayers 2003
  20. 20.0 20.1 Süli & Mayers 2003, p. 353
  21. Iserles 1996
  22. Iserles 1996, p. 47
  23. Hairer & Wanner 1996
  24. Hairer & Wanner 1996, p. 40
  25. 25.0 25.1 Iserles 1996, p. 60
  26. Iserles 1996
  27. Iserles 1996, p. 63
  28. Lambert 1991, p. 275
  29. Lambert 1991, p. 274
  30. PDF reporting this derivation

[編輯]

連出去[編輯]