1. 寫在前面的話
龍格庫塔法是求解常微分方程的數值計算方法。它始於1895年,歷史悠久,後人以龍格(Runge)和庫塔(Kutta)兩位計算數學家的名字為它命名。關於它的研究文獻有很多,至今仍有新的論文不斷湧現,卷帙之浩繁,恐怕難以完全統計。
先後在此領域內作出重要貢獻的科學家除了龍格和庫塔兩位外,還有霍伊恩(Heun),奈斯特龍(Nyström),胡塔(Huta),吉爾(Gill),柯蒂斯(Curtis),布切爾(Butcher),默森(Merson),庫珀(Cooper),海爾(Hairer),萬納(Wanner),桑茲塞爾納(Sanz-Serna)等。
其中紐西蘭數學家布切爾是該問題的當代大師. 他創造性地將抽象代數和圖論的方法引入到龍格庫塔法的研究當中,奠定了龍格庫塔法根樹表示論的理論基礎,進而改變了整個數值方法的面貌。以他的名字命名的數學名詞有:布切爾群,布切爾表,布切爾級數(簡稱為B級數)。關於龍格庫塔法,除了一系列重要的研究性論文,他還寫過好幾篇值得一讀的綜述類文章,並有專著傳世,感興趣的讀者可以查閱其著作或文獻(比如【1,2】)。
本文僅就龍格庫塔法背後隱藏的機理作一番初步探討,有興趣的讀者可以進一步思考或加以研究。
3. 數值積分帶給我們的啟示
現在讓我們來考慮下面的一階常微分方程初值問題
為了保證解的存在唯一性,通常假定右端函數 f 足夠光滑且關於z 滿足李普希茨條件。
注意,此方程組不是簡單的常微分方程組,右端函數 f 依賴於函數 z,但本身 z 未知,一般不能直接求出解析解 -- 當然不排除某些特殊方程組可以利用某些特別的技巧求得解析解,但大多數情況下是無法得到解析解的。
因此,實際當中我們往往會考慮使用合適的數值方法來求近似解。設精確解 z 在一系列離散時間點 處的近似值為 ,我們稱由 計算 的數值方法為單步法。下面我們考慮使用數值積分公式構造單步法。
首先將時間區間進行分割,得到離散時間區間 。 不失一般性,下面只考慮第一個時間區間的情況,設 為步長。通過對原微分方程兩邊求積分,代入初值條件,原方程可化為積分方程
我們希望根據初值 求出下一步的值,為此, 在上式中令 ,得到
右邊的積分很容易讓我們聯想到上一節的數值積分公式。特別地,如果我們使用左矩形數值積分公式(即只含有一個求積節點 的情況),則有
將精確解的符號替換成相應數值解的符號,並強行改成等式,即得顯式歐拉法
利用上式可由初值 求出 ,然後將 作為下一步的初值,以此類推可以求得各個離散時間點處的近似值。顯式歐拉法又稱為歐拉折線法,是大數學家歐拉(Euler)於1768年提出來的,也是計算方法入門教科書上必提到的方法之一,通常還會有直觀的圖解(參見 ODE 數值方法(1):方法簡介)。
遺憾的是,顯式歐拉法只有一階精度,穩定性也不太好。如果考慮使用右矩形數值積分公式,則可得到隱式歐拉法,穩定性比顯式歐拉法要好很多,但精度也只有1階。
科學研究總是從最簡單的情況開始,然後試著考慮更為複雜的情況。一個很自然的想法是,為了提高精度,我們可否使用更多的求積節點?
(未完待續)
參考文獻
【1】J.C. Butcher, G. Wanner, Runge-Kutta methods: some historical notes, Appl. Numer. Math.22 (1996), 113-151.
【2】J.C. Butcher, The Numerical Analysis of Ordinary Differential Equations: Runge–Kutta and General Linear Methods, John Wiley & Sons, 1987.
作者簡介
唐文生,長沙理工大學數學與統計學院, 講師
研究興趣:哈密爾頓辛幾何算法.
近年來,基於正交多項式展開技巧發展了連續級算法的較一般性構造理論,並將之用於動力系統保結構算法的研究,提出了構造幾類幾何積分子的全新方法. 首次發現利用數值通量的不同選取可以構造不同的保持辛結構的間斷Galerkin方法,證明了方法的超收斂性,並建立了其與連續級算法的內在聯繫。主持並完成國家自然科學基金青年項目1項,湖南省教育廳項目1項。