在數值分析領域中,Runge-Kutta 法是用於求出非線性常微分方程式近似解的一種系列方法。它由兩位德國數學家 Carl Runge 和 Martin Kutta 大約西元 1900 年發明出來的。RK 法有分階層,最常使用的是二階 RK 法簡稱 RK2 以及四階 RK4。
它們的算法都是透過迭代法來實現,RK2 相比 RK4 可以計算的比較快,但相對精準度就沒有 RK4 來的高,所以都是依據情況來決定要使用甚麼方法。
在深入講解 RK 法之前我們要先建立一些基本知識,首先常微分方程式(Ordinary Differential Equations,ODEs),它是微分方程式的一種。
常微分方程式會有以下要素:
那個 代表微分階數
微分方程式之下除了常微分方程式之外,還有另外一種叫偏微分方程式(Partial Differential Equations,PDEs)。
分辨這兩個方程式很簡單:常微分方程式指涉及到一個自變數的導數,而偏微分方程式涉及到多個自變數的導數。
導數(Derivative)與微分(Differential)的差別:微分是指運算,類似加法或乘法;導數指的是結果,例如 、且導數可以是常數或者是函數(導函數)。
Euler Method 跟 RK 法一樣都是用來求常微分方程式近似解會使用的方法,只是它只有用一階而已,對於非線性的函式來說精準度相當的不夠,但它的觀念是數值分析中最基本。
假設我們有一個微分方程:。Euler Method 中會有一個變數 來代表時間步伐,所以說:
然後我們可以得到時間 的近似值:
由於 Euler Method 的誤差會很不精確,所以 RK2 它的方法是取兩個點上的斜率,最後平均後再推算。先看一下它的公式:
RK2 的觀念就是:從已知點 和其斜率 可以推出新點 ,透過這個新點推算出的斜率 ,來跟剛剛的 求斜率平均值後得 ,即可從點 和斜率 來推算點 ,這樣的計算方式會比 Euler Method 更加的精準。
基本上就是算四階,會更加精準但相對計算步驟變多了:
注意這裡的 計算方式跟 RK2 的不同哦!
有一個未知的函數 ,其導函數為 ,目前已知 ,求 是多少?
設定步長 ,我們先求 :
接著求 :
接著求 :
最後算出 :
答案: 近似解是 。
懶的算了 XD
透過程式算出來 應該會是
數值分析