《《龍格庫(kù)塔方法》PPT課件.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《《龍格庫(kù)塔方法》PPT課件.ppt(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Runge-Kuttua方 法 和 matlab原 理 龍格庫(kù)塔法(Runge-Kutta)數(shù)值分析中,龍格庫(kù)塔法(Runge-Kutta)是用于模擬常微分方程的解的重要的一類(lèi)隱式或顯式迭代法。這些技術(shù)由數(shù)學(xué)家卡爾龍格和馬丁威爾海姆庫(kù)塔于1900年左右發(fā)明。經(jīng)典四階龍格庫(kù)塔法龍格庫(kù)塔法的家族中的一個(gè)成員如此常用,以至于經(jīng)常被稱(chēng)為“RK4”或者就是“龍格庫(kù)塔法”。 四 階 Runge-Kutta方 法 1 1 2 3 41 2 1 123 1 224 1 3 0 02 26 22 / ( , . , , , , . 初 始 條 件 :對(duì) 于 問(wèn) 題 方 程 如 下 :) ,n n n n nn
2、nn n n dy dx f t y y t yhy y K K K KK f x y hK f x y KhK f Rux y K K f x y hnge KKutta 這樣,下一個(gè)值(yn+1)由現(xiàn)在的值(yn)加上時(shí)間間隔(h)和一個(gè)估算的斜率的乘積決定。該斜率是以下斜率的加權(quán)平均:k1是時(shí)間段開(kāi)始時(shí)的斜率;k2是時(shí)間段中點(diǎn)的斜率,通過(guò)歐拉法采用斜率 k1 來(lái)決定 y在點(diǎn) tn + h/2的值;k3也是中點(diǎn)的斜率,但是這次采用斜率 k2決定 y值;k4是時(shí)間段終點(diǎn)的斜率,其 y值用 k3 決定。當(dāng)四個(gè)斜率取平均時(shí),中點(diǎn)的斜率有更大的權(quán)值: 誤差分析:注意上述公式對(duì)于標(biāo)量或者向量函數(shù)(y
3、可以是向量)都適用。 四 階 R-K方 法 的 每 一 步 需 要 計(jì) 算 四 次 函 數(shù) 值 f,可 以 證 明 其 局 部 截 斷 誤 差 為 O(h5). R-K(高 階 )方 法 不 唯 一 ,選 擇 不 同 的 參 數(shù) 能 得 到不 同 的 R-K公 式 注 意 的 問(wèn) 題R-K方 法 的 推 導(dǎo) 是 基 于 Taylor展 開(kāi) 法 , 因 而 要 求解 具 有 較 好 的 光 滑 性 , 如 果 光 滑 性 較 差 精 度 可能 不 如 改 進(jìn) Euler方 法 ,最 好 采 用 低 階 算 法 而 將步 長(zhǎng) h 取 小 。Runge-Kutta法 的 主 要 運(yùn) 算 在 于 計(jì)
4、算 Ki 的 值 , 即 計(jì) 算 f 的 值 。 計(jì) 算 量 與 可 達(dá) 到 的 最 高 精 度 階 數(shù) 的 關(guān) 系 :753可 達(dá) 到 的 最 高 精 度 642每 步 須 算 Ki 的 個(gè) 數(shù) )( 2hO )( 3hO )( 4hO )( 5hO )( 6hO)( 4hO )( 2nhO 8n 四 階 Runge-Kutta方 法 的 MATLAB實(shí) 現(xiàn) 原 理 : 四 階 R-K方 法 實(shí) 現(xiàn)開(kāi) 始0 0, , ,x y h N 輸 入 1 01 0 0 2 0 0 10 0 2 0 0 3 1 2 3 42 23 2 21 0 2 26;( , ), ( , )( , ), ( ,
5、)( )x x h h hK f x y K f x y Kh hK f x y K f x h y hKhy y K K K K 輸 出 x1,y1?n N1 0 1 01;,n Nx x y y 結(jié) 束YN function ff=rk(yy,x0,y0,h,a,b)%yy為y的導(dǎo)函數(shù),x0,y0,為初值,h為步長(zhǎng),a,b為區(qū)間c=(b-a)/h+1;i1=1; %c為迭代步數(shù);i1為迭代步數(shù)累加值y=y0;z=zeros(c,6); %z生成c行,6列的零矩陣存放結(jié)果;%每行存放c次迭代結(jié)果,每列分別存放k1k4及y的結(jié)果 不 斷 迭 代 運(yùn) 算 :for x=a:h:b if i1=c
6、 k1=feval(yy,x,y); k2=feval(yy,x+h/2,y+(h*k1)/2); k3=feval(yy,x+h/2,y+(h*k2)/2); k4=feval(yy,x+h,y+h*k3); y=y+(h/6)*(k1+2*k2+2*k3+k4); z(i1,1)=x;z(i1,2)=k1;z(i1,3)=k2;z(i1,4)=k3;z(i1,5)=k4;z(i1,6)=y; i1=i1+1; endend 1)0( )10(2 )1.0()43( y xyxyy hKR 步 長(zhǎng)解 初 值 問(wèn) 題公 式階階 、求例 4解 yxyyxf /2),( .2, ,2,2, ,46
7、 213 121 3211 hKhKyhxfK KhyhxfK yxfK KKKhyy nn nn nnnn 例 題 4 xn Yn |yn-y(xn)| R-K3 誤 差 y(xn)0.1 1.0959 0.0005 1.09544 0.45e-4 1.09540.2 1.1841 0.0009 1.18322 0.17e-4 1.18320.3 1.2662 0.0013 1.26491 0.15e-4 1.26490.4 1.3434 0.0018 1.34165 0.48e-4 1.34160.5 1.4164 0.0022 1.41422 0.25e-4 1.41420.6 1.48
8、60 0.0028 1.48326 0.55e-4 1.48320.7 1.5525 0.0033 1.54921 0.14e-4 1.54920.8 1.6165 0.0040 1.612478 0.21e-4 1.61250.9 1.6782 0.0049 1.67335 0.54e-4 1.67331.0 1.7379 0.0058 1.73209 0.06e-4 1.7321 改 進(jìn) Euler法 一 步 需 要 計(jì) 算 兩 個(gè) 函 數(shù) 值 (h=0.1)四 階 Runge-Kutta方 法 一 步 需 要 計(jì) 算 四 個(gè) 函 數(shù) 值( h=0.2)總 計(jì) 算 量 大 致 相 當(dāng) ,
9、但 四 階 Runge-Kutta方 法 精 度更 高 五 、 變 步 長(zhǎng) Runge-Kutta方 法從 每 一 步 看 , 步 長(zhǎng) 越 小 , 截 斷 誤 差 越 小 ; 但 隨 著步 長(zhǎng) 的 縮 小 , 在 一 定 求 解 范 圍 內(nèi) 所 要 完 成 的 步 數(shù)就 會(huì) 增 加 , 步 數(shù) 的 增 加 不 但 引 起 計(jì) 算 量 的 增 大 ,而 且 可 能 導(dǎo) 致 舍 入 誤 差 的 嚴(yán) 重 積 累 , 因 此 需 要 選擇 步 長(zhǎng)如 何 衡 量 和 檢 驗(yàn) 計(jì) 算 結(jié) 果 的 精 度如 何 依 據(jù) 所 判 定 的 精 度 來(lái) 處 理 步 長(zhǎng) 實(shí) 施 方 案以 經(jīng) 典 四 階 Runge
10、-Kutta方 法 為 例 155 15 1 ( )( )( )( ) , hn nhnn nx h yChC y x x x n+1設(shè) 從 節(jié) 點(diǎn) 出 發(fā) , 先 以 為 步 長(zhǎng) 求 出 一 個(gè) 近 似 值 , 記 為因 為 經(jīng) 典 格 式 的 局 部 截 斷 誤 差 為 O(h ),因 此 有y(x )-y其 中 與 在 內(nèi) 的 值 有 關(guān) 21 12 ( )+ hn n nh x x y 將 步 長(zhǎng) 折 半 , 即 取 為 步 長(zhǎng) 從 跨 兩 步 到 , 求 得 一 個(gè) 近 似 值5 52 1 22 2( )( ) , ( )hnh hC C n+1每 跨 一 步 截 斷 誤 差 是 有
11、 y(x )-y 21 11 1 116116( )( )( )( ) hn nhn ny x yy x y 步 長(zhǎng) 折 半 后 , 誤 差 大 約 減 少 為 原 來(lái) 的 , 即 有2 2 1 1 1 1115( ) ( ) ( )( ) h h hn n n ny x y y y 事 后 估 計(jì) 式 為 可 以 通 過(guò) 檢 查 步 長(zhǎng) 折 半 前 后 兩 次 計(jì) 算 結(jié) 果 的 偏 差21 1( ) ( )= h hn ny y 來(lái) 判 斷 所 選 取 的 步 長(zhǎng) 是 否 合 適 , ( 1) 對(duì) 于 給 定 的 精 度 , 如 果 則 反 復(fù) 將 步 長(zhǎng) 折 半進(jìn) 行 計(jì) 算 直 至 為 止 , 這 時(shí) 取 折 半 以 后 的 “ 新 值 ”作 為 結(jié) 果 ;( 2) 如 果 , 則 反 復(fù) 將 步 長(zhǎng) 加 倍 , 直 至 為 止 , 這 時(shí) 取 步 長(zhǎng) 加 倍 前 的 “ 老 值 ” 作 為 結(jié) 果 變 步 長(zhǎng) 方 法 Thanks!