資源描述:
《二階龍格庫(kù)塔方法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、2012-2013(1)專業(yè)課程實(shí)踐論文二階Runge-Kutta方法董文峰,,R數(shù)學(xué)08-1班一、算法理論由改進(jìn)的Euler方法得到:凡滿足條件式有一簇形如上式的計(jì)算格式,這些格式統(tǒng)稱為二階龍格—庫(kù)塔格式。因此改進(jìn)的歐拉格式是眾多的二階龍格—庫(kù)塔法中的一種特殊格式。若取,就是另一種形式的二階龍格-庫(kù)塔公式。(1)此計(jì)算公式稱為變形的二階龍格—庫(kù)塔法。二級(jí)龍格-庫(kù)塔方法是顯式單步式,每前進(jìn)一步需要計(jì)算兩個(gè)函數(shù)值。由上面的討論可知,適當(dāng)選擇四個(gè)參數(shù)y0,a,b,n,可使每步計(jì)算兩次函數(shù)值的二階龍格-庫(kù)塔方法達(dá)到二階
2、精度。下面以式子(1)為依據(jù)利用VC++6.0編譯程序進(jìn)行問題的求解。二、算法框圖開始輸入y0,a,b,nx[i+1]=x[i]+h;k1=function(x[i],y[i]);k2=function(x[i]+h/2,y[i]+h*k1/2);y[i+1]=y[i]+h*k2i=0輸出x[i+1],y[i+1]i=n?結(jié)束i=i+1否是三、算法程序#include#include/*n表示幾等分,n+1表示他輸出的個(gè)數(shù)*/intRungeKutta(doubley0,do
3、ublea,doubleb,intn,double*x,double*y,double(*function)(double,double)){doubleh=(b-a)/n,k1,k2;inti;x[0]=a;y[0]=y0;for(i=0;i4、{returny-2*x/y;}intmain(){inti;doublex[6],y[6];printf("用二階龍格-庫(kù)塔方法");RungeKutta(1,0,1,5,x,y,function);for(i=0;i<6;i++)printf("x[%d]=%f,y[%d]=%f",i,x[i],i,y[i]);return1;}四、算法實(shí)現(xiàn)例1.取h=0.2,用二階Runge-Kutta公式求解解:1.將程序中的returny-2*x/y改成returnx+y2.輸入y0,a,b,n分別為1,0,1
5、,53.結(jié)果為例2.取h=0.2,用二階Runge-Kutta公式求解解:1.將程序中的returny-2*x/y改成return3*y/(1+x)2.輸入y0,a,b,n分別為1,0,1,53.結(jié)果為