《龍格庫塔方法及其matlab實現(xiàn)(共5頁)》由會員分享,可在線閱讀,更多相關《龍格庫塔方法及其matlab實現(xiàn)(共5頁)(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質文檔-----傾情為你奉上
龍格-庫塔方法及其matlab實現(xiàn)
摘要:本文的目的數(shù)值求解微分方程精確解,通過龍格-庫塔法,加以利用matlab為工具達到求解目的。龍格-庫塔(Runge-Kutta)方法是一種在工程上應用廣泛的高精度單步算法,用于數(shù)值求解微分方程。MatLab軟件是由美國Mathworks公司推出的用于數(shù)值計算和圖形處理的科學計算系統(tǒng)環(huán)境。MatLab是英文MATrix LABoratory(矩陣實驗室)的縮寫。在MratLab環(huán)境下,用戶可以集成地進行程序設計、數(shù)值計算、圖形繪制、輸入輸出、文件管理等各項操作。
關鍵詞:龍格-庫塔 matlab 微分方程
1.
2、 前言
1.1:知識背景
龍格-庫塔法(Runge-Kutta)是用于非線性常微分方程的解的重要的一類隱式或顯式迭代法。這些技術由數(shù)學家卡爾·龍格和馬丁·威爾海姆·庫塔于1900年左右發(fā)明。通常所說的龍格庫塔方法是相對四階龍格庫塔而言的,成為經(jīng)典四階龍格庫塔法。該方法具有精度高,收斂,穩(wěn)定,計算過程中可以改變步長不需要計算高階導數(shù)等優(yōu)點,但是仍需計算在一些點上的值,比如四階龍格-庫塔法沒計算一步需要計算四步,在實際運用中是有一定復雜性的。
Matlab是在20世紀七十年代后期的事:時任美國新墨西哥大學計算機科學系主任的Cleve Moler教授出于減輕學生編程負擔的動機,為學生設計了一組
3、調(diào)用LINPACK和EISPACK庫程序的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態(tài)的MATLAB。
經(jīng)幾年的校際流傳,在Little的推動下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市場。從這時起,MATLAB的內(nèi)核采用C語言編寫,而且除原有的數(shù)值計算能力外,還新增了數(shù)據(jù)圖視功能。
MATLAB以商品形式出現(xiàn)后,僅短短幾年,就以其良好的開放性和運行的可靠性,使原先控制領域里的封閉式軟件包(如英國的UMIST,瑞典的LUND和SIMNON,德國的KEDDC)紛紛淘汰
4、,而改以MATLAB為平臺加以重建。在時間進入20世紀九十年代的時候,MATLAB已經(jīng)成為國際控制界公認的標準計算軟件。
到九十年代初期,在國際上30幾個數(shù)學類科技應用軟件中,MATLAB在數(shù)值計算方面,而Mathematica和Maple則分居符號計算軟件的前兩名。Mathcad因其提供計算、圖形、文字處理的統(tǒng)一環(huán)境而深受中學生歡迎。
1.2研究的意義
精確求解數(shù)值微分方程,對龍格庫塔的深入了解與正確運用,主要是在已知方程導數(shù)和初值信息,利用計算機仿真時應用,省去求解微分方程的復雜過程。利用matlab強大的數(shù)值計算功能,省去認為計算的過程,達到快速精確求解數(shù)值微分方程。在實際生活
5、中可以利用龍格庫塔方法和matlab的完美配合解決問題。
1.3研究的方法
對實例的研究對比,實現(xiàn)精度的要求,龍格庫塔是并不是一個固定的公式,所以只是對典型進行分析
2. 龍格-庫塔方法
2.1龍格-庫塔公式
在一階精度的的拉格朗日中值定理有:
對于函數(shù)y=f(x,y)
y'=f(x,y)
y(n+1)=y(n)+h*K1
K1=f(xn, yn)
這就是一階龍格-庫塔方法
形如 y(n+1)=y(n)+h*i=1rciki
k1 =f(xn,yn)
ki=f(xn+hai ,yn+h*j=1i-1bijki)
6、 i=2…r
故二階龍格-庫塔公式
y(n+1)=y(n)+h(c1k1+c2k2)
k1= f(xn,yn) (2)
k2= f(xn+ha2 ,yn+ha2 k1)
將y(x)在xn處展成冪級數(shù)
y(xn+1)=y(xn)+hy'(xn)+h22y'’ (xn)+o(h3)
y'(x)= f(x,y(x))
y'’x= fx‘(x,y(x))+ fy‘(x,y(x))·f(x,y(x))
y(xn+1)=y(xn)+hf+
7、h22(fx‘+fy‘f)+ o(h3) (3)
將(2)式中的k2在(xn,yn)點展成冪級數(shù)
k2= f(xn+ha2 ,yn+ha2 k1)
=f+ha2fx‘+ ha2fy‘f+ o(h2)
將k1,k2代入(2)式,得
yn+1=yn +h(c1+c2)f
+ha2c2(fx‘+fy‘f)+ o(h3) (4)
對比(3)(4),當y(xn)= yn時
只有c1+c2=1,a2c2=12 (5)
形如(2)存在常數(shù)滿足(5)式,局部
8、截斷誤差為o(h3)的求解方法稱為二階龍格-庫塔法。
滿足(5)式,若取c1=12,則得到c2=12,a2=1,則公式則恰為預估-校正法公式
若取c1=0,則c2=1,a2=12,
yn+1=yn+hk2
k1= f(xn,yn) (6)
k2= f(xn+h2,yn+h2k)
9、 n=0,1…N-1
由(5)式,可知龍格-庫塔法不是唯的
三階龍格-庫塔法
yn+1=yn+h(c1k1+c2k2+ c3k3)
k1= f(xn,yn)
k2= f(xn+ha2,yn+ha2k1) (7)
k3= f(xn+ha3,yn+hb31k1+hb32k2)
若c1,c2, c3,a2,a3,b31, b32且滿足b31+ b
10、32=a3,,并使得局部截斷誤差為o(h4)。類似二階龍格-庫塔法推導的
c1+c2+ c3=1
a2c2+a3c3=12
a2b32c3=16 (8)
a22c2+a32c3=13
形如(7),常數(shù)滿足(8),局部截斷誤差為o(h4)的求解方法稱為三階龍格-庫塔法
在(8)式
11、中若取c1=16,c3=16,則得c2=23,a2=12,a3=1,b31=-1,b32=2
代入(7)中得三階龍格-庫塔法公式
yn+1=yn+h6(k1+4k2+ k3)
k1= f(xn,yn)
k2= f(xn+h2,yn+h2k1) (9)
k3= f(xn+ha3,yn-hk1+2hk2)
四階龍格庫塔法的推導類似于三階龍格-庫塔法,但相對復雜
12、這里不再進行推導,公式如下
yn+1=yn+h6(k1+2k2+2 k3+k4)
k1= f(xn,yn)
k2= f(xn+h2,yn+h2k1) (10)
k3= f(xn+h2,yn+h2k2)
k4= f(xn+h,yn+h k3)
n=0,1…N-1
這就是標準
13、四階龍格庫塔公式
2.1 對實例的研究
利用龍格-庫塔法求解方程
y'=8-3yy0=2的數(shù)值,其中h=0.2,計算y(0.4)的近似值。至少保留四位小數(shù)。
解:f?(x,y)=8-3y,利用四階龍格-庫塔公式有
yn+1=yn+h6(k1+2k2+2 k3+k4)
k1= f(xn,yn)=8-3yn
k2= f(xn+h2,yn+h2k1)=5.6-2.1yn
14、
k3= f(xn+h2,yn+h2k2)=6.32-2.37yn
k4= f(xn+h,yn+h k3)=4.208-1.578yn
n=0,1…N-1
yn+1=yn1.2016+0.5494yn
當x0=0,y0=2,
y(0.2)≈y1=1.2016+0.5494y0=1.2016+0.5494×2=2.3004
y(0.4)≈y2=1.2016+0.5494y1=1.2016+0.5494×2.3004=2.4654
專心---專注---專業(yè)