《龍格庫塔方法》由會員分享,可在線閱讀,更多相關(guān)《龍格庫塔方法(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1 9.3 龍格龍格- -庫塔方法庫塔方法 校能到扇瓦汛掏午聶訴櫻未踢踩唐啦祥槐設(shè)待忽栽僚樓歡秦啡侮壕脹溝搪龍格-庫塔方法龍格-庫塔方法 2 9.3.1 顯式龍格顯式龍格- -庫塔法的一般形式庫塔法的一般形式 上節(jié)給出了顯式單步法的表達(dá)式 ),(1hyxhyynnnn其局部截斷誤差為 ),(),()()(11pnhOhyxhxyhxyT對歐拉法 ,即方法為 階. )(21hOTn1p).,(,(),(21nnnnnnnnyxhfyhxfyxfhyy(3.1) 若用改進(jìn)歐拉法,它可表示為 昂篡熔恭皋蔑冗飛辭傾揭挺皆偶趙匪蔬簍炬挖撕饒羊情丙依淌宋鈕滬鋤掂龍格-庫塔方法龍格-庫塔方法 3 此時增量函
2、數(shù) ).,(,(),(21),(nnnnnnnnyxhfyhxfyxfhyx(3.2) 與歐拉法的 相比,增加了計算一個 右函數(shù) 的值,可望 . ),(),(nnnnyxfhyxf2p 若要使得到的公式階數(shù) 更大, 就必須包含更多的 值. pf,)(,()()(1d1nnxxnnxxyxfxyxy(3.3) 從方程 等價的積分形式(2.4),即 ),(yxfy 隴耳脯襯它哀悅雇珠糊筍投作平邏噴跌噪謄砌游舒鄰瓢許塵水鬃圾址崎浴龍格-庫塔方法龍格-庫塔方法 4 若要使公式階數(shù)提高,就必須使右端積分的數(shù)值求積公式 精度提高,必然要增加求積節(jié)點. 為此可將(3.3)的右端用求積公式表示為 11nnxx
3、riininihxyhxfchxxyxf.)(,()(,(d點數(shù) 越多,精度越高, r上式右端相當(dāng)于增量函數(shù) , ),(hyx為得到便于計算的顯式方法,可類似于改進(jìn)歐拉法,將公式表示為 ),(1hyxhyynnnn(3.4) 其中 慣勵敦寵香魁蕩尉福滴蓄澳把粵衍庭岡婚仔裔碉型標(biāo)失袍旱扯迫勝轍髓債龍格-庫塔方法龍格-庫塔方法 5 ,),(1riiinnKchyx),(1nnyxfK ),(11ijjijniniKhyhxfK(3.5) ,2ri這里 均為常數(shù). ijiic, (3.4)和(3.5)稱為 級顯式龍格龍格- -庫塔庫塔(Runge-Kutta)法法, r簡稱R-K方法. 當(dāng) 時,就是
4、歐拉法, ),(),(, 1nnnnyxfhyxr此時方法的階為 . 1p 當(dāng) 時,改進(jìn)歐拉法(3.1),(3.2)也是其中的一種. 2r涼正率衛(wèi)嘎床發(fā)廈瑯冪頻病占藐士將戚話俗膛辮蠢表闌第巡緩戀各舶正梭龍格-庫塔方法龍格-庫塔方法 6 下面將證明階 . 2p 要使公式(3.4),(3.5)具有更高的階 ,就要增加點數(shù) . pr 下面就 推導(dǎo)R-K方法. 2r,),(1riiinnKchyx),(1nnyxfK ),(11ijjijniniKhyhxfK),(1hyxhyynnnn(3.4) (3.5) ,2ri褒仍謄暑濕軟翠脂業(yè)師茂鴨輔珠龐璃撤雞夫葡鍘牟售次著間價狂犢杰述畫龍格-庫塔方法龍格-
5、庫塔方法 7 9.3.2 二階二階顯式顯式R-K方法方法 對 的R-K方法,計算公式如下 2r).,(),(),(12122122111hKyhxfKyxfKKcKchyynnnnnn(3.6) 這里 均為待定常數(shù). 21221,cc 希望適當(dāng)選取這些系數(shù),使公式階數(shù) 盡量高. p 根據(jù)局部截斷誤差的定義,(3.6)的局部截斷誤差為 )()(11nnnxyxyT(3.7) ),(),(21221nnnnnhfyhxfcyxfch梢腕麗鍘莎聰紹蓉滯匈瑰吞姨域砒眩棠女傭償敖舶聶敢綏什斥喻瞎謗唉娩龍格-庫塔方法龍格-庫塔方法 8 這里 . ),(),(nnnnnyxffxyy 為得到 的階 ,要將上
6、式各項在 處做泰 勒展開, 1nTp),(nnyx由于 是二元函數(shù),故要用到二元泰勒展開, ),(yxf),(!32)(4321hOyhyhyhyxynnnnn 其中 ,),(nnnnfyxfy各項展開式為 ,),(),()(,(nnnynnxnnnfyxfyxfxyxfxy dd),(),(2),(2nnyynnnxynnnxxnyxffyxffyxfy (3.8) );,(),(),(nnynnnxnnyyxffyxfyxf僵蝦澄隨跨蛆首貯姑蛾很閘蜜聚府冰新亞殆戀纏狹代捍譏溯逾菱墮賢撣墓龍格-庫塔方法龍格-庫塔方法 9 ),(212nnnfhyhxf將以上結(jié)果代入局部截斷誤差公式則有 )(
7、),(),(),(),(232122121hOhfyxfhyxffcfchfyxfyxfhfhTnnnynnxnnnnnynnxnn).(),(),(2212hOfhyxfhyxffnnnynnxn).(),()21(),()21()1(3221222221hOhfyxfchyxfchfccnnnynnxn要使公式(3.6)具有 階,必須使 2p剔醇馱醫(yī)怔屠沿砸井及僚爆援豪爾滁烙傷腰媽放貼肢閻夜待溫鋅叁控灰迭龍格-庫塔方法龍格-庫塔方法 10 ,0121cc即 .1,21,212121222cccc(3.9)的解是不惟一的. 令 ,則得 02 ac.21,12121aac這樣得到的公式稱為二階
8、R-K方法, 如取 ,則 2/1a.1,2/121221cc這就是改進(jìn)歐拉法(3.1). ,02122c(3.9) ,021212c溢站炙四收抓霜鵝會閩血功探佯求邏哄車酚繞奇疾捐尚炎毀倍佃捏寢瑞想龍格-庫塔方法龍格-庫塔方法 11 若取 ,1a則 . 2/1, 1, 021221cc,21hKyynn稱為中點公式中點公式, (3.10)也可表示為 ).,(2,2(1nnnnnnyxfhyhxfhyy得計算公式 ),(1nnyxfK (3.10) ).2,2(12KhyhxfKnn相當(dāng)于數(shù)值積分的中矩形公式. 的R-K公式(3.6)的局部誤差不可能提高到 . 2r)(4hO晨銷傍辱波姜悉塌世啊球
9、娶強(qiáng)嘆整箱盅觸肘閩鐘披鷹治奮墜殃傅涕俱咕歇龍格-庫塔方法龍格-庫塔方法 12 把 多展開一項,從(3.8)的 的項是不能通過選擇參數(shù)消掉的. 2Kny ffffyxy 實際上要使 的項為零,需增加3個方程,要確定4個 參數(shù) ,這是不可能的. 3h21221,cc 故 的顯式R-K方法的階只能是 ,而不能得 到三階公式. 2r2p慧島哲做要飽睫翟鏡淳盅影儉匠疥獸躺撕葬耪桑厘桶鷹伸勁沸甸忘枝渾掃龍格-庫塔方法龍格-庫塔方法 13 9.3.3 三階與四階顯式三階與四階顯式R-K方法方法 要得到三階顯式R-K方法,必須 . 3r),(),(),(),(232131321212213322111hKhK
10、yhxfKhKyhxfKyxfKKcKcKchyynnnnnnnn(3.11) 其中 及 均為待定參數(shù). 321,ccc32313212,.)()(33221111KcKcKchxyxyTnnn此時(3.4),(3.5)的公式表示為 公式(3.11)的局部截斷誤差為 聊僅竹蛇手戍朝喇諄龐吝碌禍砒滔吼覽濟(jì)腰疇奪桔巡守祁昌憨書垣圈煎氈龍格-庫塔方法龍格-庫塔方法 14 只要將 按二元函數(shù)泰勒展開,使 , 32,KK)(41hOTn可得待定參數(shù)滿足方程 .61,31,21, 13223233222332232313212321cccccccc(3.12) 至獻(xiàn)軋潔凳近壩蕉繹寫居鑄最爹鵲澳余尼哀隊毀草
11、幼闊蒜橡皺先儈扦夷纏龍格-庫塔方法龍格-庫塔方法 15 這是8個未知數(shù)6個方程的方程組,解也不是惟一的. 所以 這是一簇公式. 滿足條件(3.12)的公式(3.11)統(tǒng)稱為三階R-K公式. 一個常見的公式為 ).2,(),2,2(),(),4(62131213211hKhKyhxfKKhyhxfKyxfKKKKhyynnnnnnnn此公式稱為庫塔庫塔三階方法. 豁盆薛跡哥挎揀開國爵粱薔擻齡勁蒙偉劍腎拖模渦眺摟脫忻漸廷阜塵蓉順龍格-庫塔方法龍格-庫塔方法 16 繼續(xù)上述過程,經(jīng)過較復(fù)雜的數(shù)學(xué)演算,可以導(dǎo)出各 種四階龍格-庫塔公式,下列經(jīng)典公式是其中常用的一個: 可以證明其截斷誤差為 . )(5h
12、O 四階龍格-庫塔方法的每一步需要計算4次函數(shù)值 , f).,(),2,2(),2,2(),(),22(6342312143211hKyhxfKKhyhxfKKhyhxfKyxfKKKKKhyynnnnnnnnnn(3.13) 葫樁牧呂閣殼末氰襯纂釜斥輛星焉喻咀歸戰(zhàn)婆蠶鍛士默刪茍瑞莊一壇鈕拈龍格-庫塔方法龍格-庫塔方法 17 例例3 3 . 1)0(),10(2yxyxyy 解解 設(shè)取步長 ,從 到 用四階龍格- 2.0h0 x1x庫塔方法求解初值問題 這里 ,經(jīng)典的四階龍格-庫塔公式為 yxyyxf2),(),22(643211KKKKhyynn,21nnnyxyK咨纏翌殃胸毋遮豹嗅窩皋佳千
13、贊敲癬酌玫褐侯檬潰不垢痕狂積評翟誡員桿龍格-庫塔方法龍格-庫塔方法 18 ,222223KhyhxKhyKnnn,222112KhyhxKhyKnnn.)(2334hKyhxhKyKnnn 表9-3列出了計算結(jié)果,同時列出了相應(yīng)的精確解. 7321.17321.10.16125.16125.18.04832.14833.16.03416.13417.14.01832.11832.12.0)(nnnxyyx計算結(jié)果3表9 比較例3和例2的計算結(jié)果,顯然龍格-庫塔方法的精度高. 丸淘淀迅歷辮夠兩堰窺坐汀協(xié)插竿越果瘓凄詞檄量朱打觸址細(xì)媽頒獺酮冰龍格-庫塔方法龍格-庫塔方法 19 但由于這里放大了步長
14、 ,所以表9-3和表9-2 所耗費的計算量幾乎相同. )2.0(h 龍格-庫塔方法的推導(dǎo)基于泰勒展開方法,因而它要求所求的解具有較好的光滑性質(zhì). 反之,如果解的光滑性差,那么,使用四階龍格-庫塔 方法求得的數(shù)值解,其精度可能反而不如改進(jìn)的歐拉方法. 四階龍格-庫塔方法每一步要4次計算函數(shù) ,其計算量 f比每一步只要2次計算函數(shù) 的二階龍格-庫塔方法- f改進(jìn)的歐拉方法大一倍. 變藕賺童汽惡徘雹背砂泥琵靡火知蒜蔥環(huán)活飲繭隧弛崗算衷埋爛酚賢氧桿龍格-庫塔方法龍格-庫塔方法 20 9.3.4 變步長的龍格變步長的龍格- -庫塔方法庫塔方法 單從每一步看,步長越小,截斷誤差就越小,但隨著 步長的縮小,
15、在一定求解范圍內(nèi)所要完成的步數(shù)就增加了. 步數(shù)的增加不但引起計算量的增大,而且可能導(dǎo)致舍 入誤差的嚴(yán)重積累. 因此同積分的數(shù)值計算一樣,微分方程的數(shù)值解法也 有個選擇步長的問題. 在選擇步長時,需要考慮兩個問題: 1. 怎樣衡量和檢驗計算結(jié)果的精度? 禾危錯痛殲義奏賊堅陡誕狗廚辨財辭嵌欺也抿驟疙扳疚嬸棟旺棘寡氈犧而龍格-庫塔方法龍格-庫塔方法 21 2. 如何依據(jù)所獲得的精度處理步長? 考察經(jīng)典的四階龍格-庫塔公式: ).,(),2,2(),2,2(),(),22(6342312143211hKyhxfKKhyhxfKKhyhxfKyxfKKKKKhyynnnnnnnnnn(3.13) 從節(jié)點
16、 出發(fā),先以 為步長求出一個近似值 , nxh)(1hny聾晨邊鴿斯澡戮城壟忽臘漣螢淮矛述怒各莫嘗謾奪校支吮邱窗幕碰六勁頰龍格-庫塔方法龍格-庫塔方法 22 ,)(5)(11chyxyhnn(3.14) 然后將步長折半,即取 為步長從 跨兩步到 , 2hnx1nx再求得一個近似值 ,每跨一步的截斷誤差是 )2(1hny,52 hc.)()(521122hcyxyhnn(3.15) 比較(3.14)式和(3.15)式我們看到,步長折半后, 由于公式的局部截斷誤差為 ,故有 )(5hO因此有 誤差大約減少到 .即有 161潘佃痘爆方荒勻蠱普窗果溯隕苛咕滁墻涸期悸窯稚束疙涸卻譽俗蝸焰余芋龍格-庫塔方
17、法龍格-庫塔方法 23 .161)()()(11)2(11hnnhnnyxyyxy由此易得下列事后估計式 .151)()(1)2(1)2(11hnhnhnnyyyxy這樣,可以通過檢查步長、折半前后兩次計算結(jié)果的偏差 )(1)2(1hnhnyy來判定所選的步長是否合適. 具體地說,將區(qū)分以下兩種情況處理: 婦羨滇樣硅懷錐作鋼斥唆遲肉惜巫虜丟孤蹲俗銻脂滔且尿目炔肪覆笆澡憤龍格-庫塔方法龍格-庫塔方法 24 1. 對于給定的精度 ,如果 ,反復(fù)將步長折半 進(jìn)行計算,直至 為止. 這時取最終得到的 作為結(jié)果; )2(1hny 2. 如果 ,反復(fù)將步長加倍,直到 為止, 這種通過加倍或折半處理步長的方法稱為變步長方法變步長方法. 這時再將步長折半一次,就得到所要的結(jié)果. 表面上看,為了選擇步長,每一步的計算量增加了,但總體考慮往往是合算的. 猾瀕佰演酉注整熒垂啟箔屈增蝶貧塌眉沿騾孽彬蓮赴扛禍睫富前磨轉(zhuǎn)民尺龍格-庫塔方法龍格-庫塔方法