什么是龍格庫(kù)塔?常微分方程的數(shù)值解法
龍格-庫(kù)塔法(R-K)是一種求解常微分方程數(shù)值解的單步算法,其特殊形式有:歐拉法,改進(jìn)歐拉法......本推文中基于泰勒級(jí)數(shù)法推導(dǎo)龍格庫(kù)塔(顯)格式,并附上各算法的matlab數(shù)值案例。


R-K格式理論基礎(chǔ)
考慮常微分微分方程:

在x-y平面上,上述微分方程的解y=y(x)稱作它的積分曲線;積分曲線上一點(diǎn)的切線斜率等于函數(shù)f(x,y)的值。
如果按照函數(shù)f(x,y)在x-y平面上建立一個(gè)方向場(chǎng),那么積分曲線上每一點(diǎn)的切線方向均與方向場(chǎng)在該點(diǎn)的方向一致。

微分方程具有等效的積分方程形式:

采用數(shù)值積分近似右端項(xiàng),事實(shí)上此時(shí)已經(jīng)變成了一個(gè)差分方程:

數(shù)值積分格式的精度直接影響了微分方程解的精度。在此處稱\fai為增量函數(shù),求解的核心過(guò)程也就是構(gòu)造增量函數(shù)的過(guò)程!以下對(duì)增量函數(shù)做一些分類,以定義不同的求解格式:

十分經(jīng)典的求解格式有:
歐拉法,后退歐拉法,梯形法,改進(jìn)歐拉法

它們對(duì)應(yīng)的數(shù)值積分方法圖示依次為:




上文提到數(shù)值積分格式的精度直接影響了微分方程解的精度(上述的四種經(jīng)典方法由于積分點(diǎn)的限制,最高也只能到2-階精度),那如何提高精度呢?答案是增加積分點(diǎn)。
為了更好地理解這一過(guò)程,我們從泰勒展開出發(fā)。將y(x_{n+1})在x_n點(diǎn)泰勒展開:

將上式中的高階小量忽略,用\Delta作為求解格式,得到的便是一個(gè)p-階算法。如果構(gòu)造出的增量函數(shù)與\Delta足夠接近,那么得到的也將是一個(gè)p-階的求解格式。

現(xiàn)在推導(dǎo)p=2的R-K格式(2個(gè)積分點(diǎn)):

最后讓"同類項(xiàng)"的系數(shù)相等,可以得到:

這里的解不唯一,選擇下面一組解,得到的將是改進(jìn)的歐拉法(又稱預(yù)估-校正格式:采用歐拉法預(yù)估,再用梯形法迭代一次進(jìn)行校正;本質(zhì)上是顯示算法):

對(duì)于更高階的R-K格式,推導(dǎo)方法一致:
?選擇更多的泰勒展開項(xiàng);

?選擇更多的積分點(diǎn);

?全部展開后比較同類項(xiàng)系數(shù);
下面給出R-K3與R-K4的常用格式:


數(shù)值案例
四種經(jīng)典方法
定義微分方程
歐拉法

改進(jìn)歐拉法
隱式歐拉法
梯形法
龍格庫(kù)塔四階方法

MATLAB交流群:1129425848;
文中完整代碼:https://mbd.pub/o/bread/YpaZmJls
圖圖的所有代碼:https://mbd.pub/o/bread/YZaYm55t