1、三、四階runge-kutta法求解常微分方程
一、龍格庫塔法的思想根據第九章的知識可知道,euler方法的區域性截斷誤差是,而當用euler方法估計出再用梯形公式進行校正,即採用改進euler方法得出數值解的截斷誤差為。由lagrange微分中值定理記,得到這樣只要給出一種計算的演算法,就能得到相應的計算公式。用這種觀點的來分析euler方法和改進euler方法,euler方法的迭代公式可改寫為改進euler方法的預報-校正公式可改寫為euler方法實際上是用乙個點處的值近似,而改進euler方法是用兩個點處的值,和,做算術平均值近似自然改進euler方法要優於euler方法。因此,可以想到假如在。
2、內多預報幾個點值,並用他們的加權平均值作為的近似值,則有可能構造出具有更高精度的計算公式,這就是runge-kutta法的基本思想。二、四階龍格庫塔法由runge-kutta的基本思想,構造四階runge-kutta法是利用的加權平均值來近似,因此令使得即其總體截斷誤差為。採用泰勒公式展開,經過複雜的推導,得到乙個具有13個引數,11個方程的線性方程組。由於方程的個數少於未知量的個數,因此方程有無窮多個解。可以根據情況得到幾種常用的解,即得到相應的四階公式。最常見的四階公式如式(6):,也稱為標準四階runge-kutta法。三、四階龍格庫塔法程式說明及應用3.1龍格庫塔的計算程式functi。
3、on x,y =runge(ydot_fun,x0,y0,h,n )x=zeros(1,n+1);y=zeros(length(y0),n+1);x(1)=x0;y(:,1)=y0;for n=1:nx(n+1)=x(n)+h;k1=h*feval(ydot_fun,x(n),y(:,n);k2=h*feval(ydot_fun,x(n)+1/2*h,y(:,n)+1/2*k1);k3=h*feval(ydot_fun,x(n)+1/2*h,y(:,n)+1/2*k2);k4=h*feval(ydot_fun,x(n)+h,y(:,n)+k3);y(:,n+1)=y(:,n)+1/6*(k1+。
4、2*k2+2*k3+k4);end3.2 程式解釋及使用該演算法可以對一階微分方程,一階微分方程組進行有效的求解。ydot_fun為一階微分方程的函式,x0為初始點,y0為初始向量,h為步長,n為區間的等分數,x為xn構成的向量,y為yn構成的矩陣。程式呼叫方法:1,先編寫要求解的一階微分方程或方程組的函式檔案ydot_fun.m檔案,將該檔案和runge檔案放到同乙個目錄下。2. 呼叫求解程式,x,y=runge(dot_fun,x0,y0,h,n),執行後即可得出結果。或者用內部函式呼叫:輸入:ydot_fun=(x,y)x,y= runge(ydot_fun,x0,y0,h,n)3.3例項。
5、求解課本304頁9.2題目:用標準4級4階r-k法求解,取步長h=0.1,計算的近似值,並與解析解作比較。解:首先將三階方程改寫成微分方程組的形式:令得如下微分方程組在ydot_fun.m檔案中編寫待求解微分方程組,呼叫計算程式,保留5位小數得:表3-1 三階微分方程求解結果00.10.20.30.40.50.60.70.80.91.0 -1.00000 -0.68948 -0.35572 0.00496 0.39673 0.82436 1.29327 1.80962 2.38042 3.01363 3.71827 3.00000 3.21569 3.46568 3.75481 4.08855 4.47308 4.91538 5.42337 6.00596 6.67323 7.43655 2.00000 2.32086 2.68708 3.10467 3.58038 4.12180 4.73750 5.43712 6.23150 7.13284 8.15483 表3-1中第二行為原三階微分方程對應的數值解,第二行為其一階導數值,第三行為其二階導數值。由結果可知,數值解y(1)=3.7183,其對應的精確解析解3.的相對誤差為4.8947e-6,可知四階龍格庫塔法具有很高的代數精度。
四階龍格庫塔法
這裡主要講一下如何用c語言程式設計運用四階龍格庫塔法求解微分方程組。對於所舉例子,只是為了說明龍格庫塔法不僅可以解一階線性微分方程,高階非線性也可通過降階後按照經典四階龍格庫塔法公式逐步求解。只要選取合適的步長h,就能夠平衡速度和精度,達到求解要求。至於例子中的一級倒立擺的物理含義沒有提及到,各種方...
python實現四階龍格庫塔法
coding utf 8 created on sun dec 24 15 29 08 2017 author www 本程式是用四階龍格庫塔法求解課本 數值計算方法 馬東昇 p242頁的例7 3 fun為指定的導數的函式 rf4為四階龍格庫塔法 def fun x,y f y 2 x y retu...
四階龍格 庫塔(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 ...