龍格 庫塔(Runge Kutta)法解微分方程

2021-07-29 18:40:15 字數 589 閱讀 4567

龍格-庫塔(runge-kutta)方法是一種在工程上應用廣泛的高精度單步演算法。由於此演算法精度高,採取措施對誤差進行抑制,所以其實現原理也較複雜。該演算法是構建在數學支援的基礎之上的。

對於一階精度的尤拉公式有:

yi+1=yi+h*k1

k1=f(xi,yi)

當用點xi處的斜率近似值k1與右端點xi+1處的斜率k2的算術平均值作為平均斜率k*的近似值,那麼就會得到二階精度的改進尤拉公式:

yi+1=yi+h*( k1+ k2)/2

k1=f(xi,yi)

k2=f(xi+h,yi+h*k1)

依次類推,如果在區間[xi,xi+1]內多預估幾個點上的斜率值k1、k2、……km,並用他們的加權平均數作為平均斜率k*的近似值,顯然能構造出具有很高精度的高階計算公式。經數學推導、求解,可以得出四階龍格-庫塔公式,也就是在工程中應用廣泛的經典龍格-庫塔演算法:

yi+1=yi+h*( k1+ 2*k2 +2*k3+ k4)/6

k1=f(xi,yi)

k2=f(xi+h/2,yi+h*k1/2)

k3=f(xi+h/2,yi+h*k2/2)

k4=f(xi+h,yi+h*k3)

四階龍格 庫塔(Runge Kutta)方法

簡潔版 code fprintf 請輸入區間下界 n a input fprintf 請輸入區間上界 n b input fprintf 請輸入初值alpha n alpha input fprintf 請輸入最大迭代次數n n n input x0 a y0 alpha h b a n k x1 ...

四階龍格庫塔法

這裡主要講一下如何用c語言程式設計運用四階龍格庫塔法求解微分方程組。對於所舉例子,只是為了說明龍格庫塔法不僅可以解一階線性微分方程,高階非線性也可通過降階後按照經典四階龍格庫塔法公式逐步求解。只要選取合適的步長h,就能夠平衡速度和精度,達到求解要求。至於例子中的一級倒立擺的物理含義沒有提及到,各種方...

龍格庫塔法求微分方程

首先,我們可以知道一階龍格庫塔法的表示式 上述式子可以改寫成如下式子 這裡我們可以看成k是在步長為h情況下,函式的增長量,f x,y 為函式y的斜率。這個式子其實比較好理解的。然後我們來看二階龍格庫塔的推導過程 二階情況下一般表示式中就只有k1和k2了,二階龍格庫塔我們可以看成是一階表示式的乙個變形...