日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 算法
    • 2. 程序
    • 3. 案例
    • 4. 聯系作者

1. 算法

上一篇介紹了顯式歐拉法、隱式歐拉法、兩步歐拉法和改進歐拉法求解常微分方程初值問題;其中顯式歐拉法和隱式歐拉法是一階算法精度,截斷誤差為O(h2)O\left( {{h^2}} \right)O(h2);兩步歐拉法和改進歐拉法是二階算法精度,截斷誤差為O(h3)O\left( {{h^3}} \right)O(h3);歐拉法的精度有限、需要求解步長hhh很小。本篇介紹求解精度更高的四階龍格庫塔法(Runge-Kutta),其截斷誤差為O(h5)O\left( {{h^5}} \right)O(h5)

對于一階微分方程初值問題:

{y˙=f(t,y)y(t0)=y0\left\{ \begin{array}{l} {\bf{\dot y}} = f\left( {t,{\bf{y}}} \right) \\ {\bf{y}}\left( {{t_0}} \right) = {{\bf{y}}_0} \\ \end{array} \right.{y˙?=f(t,y)y(t0?)=y0??

式中, t0{t_0}t0?為初始時間(已知常數),y0{{\bf{y}}_0}y0?為初始狀態(已知向量),f(t,y)f\left( {t,{\bf{y}}} \right)f(t,y)為關于時間t{t}t和狀態y{{\bf{y}}}y的函數(已知函數)。

四階龍格庫塔法(Runge-Kutta)求解算法為:

k1=f(t(k),y(k)){{k}_{1}}=f\left( t\left( k \right),\mathbf{y}\left( k \right) \right)k1?=f(t(k),y(k))
k2=f(t(k)+h2,y(k)+h2k1){{k}_{2}}=f\left( t\left( k \right)+\frac{h}{2},\mathbf{y}\left( k \right)+\frac{h}{2}{{k}_{1}} \right)k2?=f(t(k)+2h?,y(k)+2h?k1?)
k3=f(t(k)+h2,y(k)+h2k2){{k}_{3}}=f\left( t\left( k \right)+\frac{h}{2},\mathbf{y}\left( k \right)+\frac{h}{2}{{k}_{2}} \right)k3?=f(t(k)+2h?,y(k)+2h?k2?)
k4=f(t(k)+h,y(k)+hk3){{k}_{4}}=f\left( t\left( k \right)+h,\mathbf{y}\left( k \right)+h{{k}_{3}} \right)k4?=f(t(k)+h,y(k)+hk3?)
y(k+1)=y(k)+h6(k1+2k2+2k3+k4)\mathbf{y}\left( k+1 \right)=\mathbf{y}\left( k \right)+\frac{h}{6}\left( {{k}_{1}}+2{{k}_{2}}+2{{k}_{3}}+{{k}_{4}} \right)y(k+1)=y(k)+6h?(k1?+2k2?+2k3?+k4?)
y(0)=y0\mathbf{y}\left( 0 \right)={{\mathbf{y}}_{0}}y(0)=y0?

上式是關于y(k){\bf{y}}\left( k \right)y(k)y(k+1){\bf{y}}\left( k+1 \right)y(k+1)的遞推形式,可以根據初始條件按照遞推關系依次求出y(1),y(2),y(3),y(4)?,y(N)?{\bf{y}}\left( 1 \right),{\bf{y}}\left( 2 \right),{\bf{y}}\left( 3 \right),{\bf{y}}\left( 4 \right) \cdots ,{\bf{y}}\left( N \right) \cdotsy(1),y(2),y(3),y(4)?,y(N)?,此離散序列即為微分方程的數值解。

微分方程的數值解法,本質是使用數值積分來實現y˙{\bf{\dot y}}y˙?y{\bf{y}}y的轉換。四階龍格庫塔法通過對微分的四步分段逼近,在一個求解步長內能夠逼近復雜的曲線,因此能夠取得較高的計算精度,其截斷誤差為O(h5)O\left( {{h^5}} \right)O(h5)

2. 程序

作者使用Matlab開發了四階龍格庫塔法求解常微分方程的程序,能夠方便快捷的求解一階常微分方程的初值問題。

function [T,X,dX] = ODE_RK4( Hfun,t,h,x0 ) % [T,X] = ODE_RK4( Hfun,t,h,x0 ) 4階龍格-庫塔法求解常微分方程 % Hfun為描述狀態導數的函數句柄,格式為 dX = Hfun( t,X ) % 必須保證返回dX的格式為行向量 % t為時間節點,可為標量,時間范圍為 T = 0:h:t % 長2向量 ,時間范圍為 T = t(1):h:t(2) % 向量 ,時間范圍為 T = t % h為時間步長,在t的前兩種情況下,必須給出h具體值 % 直接給出時間節點t時,h可用[]或任意值占位 % x0為狀態量初始值 % 算法: % K1 = Hfun( t(k-1),X(k-1) ) = dX(k-1) % K2 = Hfun( t(k-1)+h/2,X(k-1)+h*K1/2 ) % K3 = Hfun( t(k-1)+h/2,X(k-1)+h*K2/2 ) % K4 = Hfun( t(k-1)+h ,X(k-1)+h*K3 ) % X(k) = X(k-1) + (h/6) * (K1 + 2*K2 + 2*K3 +K4) % By ZFS@wust 2021 % 獲取更多Matlab/Simulink原創資料和程序,清關注微信公眾號:Matlab Fans

下面結合實例進行演示和分析。

3. 案例

求解一階常微分方程(式中向量x{\bf{x}}x等價于前文中的向量y{\bf{y}}y):
x˙=f(t,x)=[x(2)?x(3)?x(1)?x(3)?0.51?x(1)?x(2)]\mathbf{\dot{x}}=f\left( t,\mathbf{x} \right)=\left[ \begin{matrix} \mathbf{x}(2)*\mathbf{x}(3) \\ -\mathbf{x}(1)*\mathbf{x}(3) \\ -0.51*\mathbf{x}(1)*\mathbf{x}(2) \\ \end{matrix} \right]x˙=f(t,x)=???x(2)?x(3)?x(1)?x(3)?0.51?x(1)?x(2)????
x(0)=[011]\mathbf{x}\left( 0 \right)=\left[ \begin{matrix} 0 \\ 1 \\ 1 \\ \end{matrix} \right]x(0)=???011????

% 四階龍格庫塔算法(Runge-Kutta)測試程序 % By ZFS@wust 2021 % 獲取更多Matlab/Simulink原創資料和程序,清關注微信公眾號:Matlab Fansclear clc close all%% 仿真步長 h=0.6 時 Hfun = @(t,x) [ x(2)*x(3); -x(1)*x(3); -0.51*x(1)*x(2)]; % 一階微分方程導數表達式% 參數 t = [0 12]; % 時間范圍 h = 0.6; % 時間步長 x0 = [0 1 1]; % 初始狀態% 改進歐拉法求解 [T1,X1] = ODE_ImprovedEuler( Hfun,t,h,x0 ); % 改進歐拉法求解 [T2,X2] = ODE_RK4( Hfun,t,h,x0 ); % Matlab自帶ode45求解 [T3,X3] = ode45( Hfun,t(1):h:t(2),x0 );% 繪圖對比 figure subplot(311) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_1') legend('改進歐拉法','四階龍格庫塔法','ode45') subplot(312) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_2') legend('改進歐拉法','四階龍格庫塔法','ode45') subplot(313) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_3') legend('改進歐拉法','四階龍格庫塔法','ode45')%% 仿真步長 h=0.9 時 % 參數 h = 0.9; % 時間步長% 改進歐拉法求解 [T1,X1] = ODE_ImprovedEuler( Hfun,t,h,x0 ); % 改進歐拉法求解 [T2,X2] = ODE_RK4( Hfun,t,h,x0 ); % Matlab自帶ode45求解 [T3,X3] = ode45( Hfun,t(1):h:t(2),x0 );% 繪圖對比 figure subplot(311) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_1') legend('改進歐拉法','四階龍格庫塔法','ode45') subplot(312) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_2') legend('改進歐拉法','四階龍格庫塔法','ode45') subplot(313) plot(T1,X1(:,1),T2,X2(:,1),T3,X3(:,1)) xlabel('Time(s)') ylabel('x_3') legend('改進歐拉法','四階龍格庫塔法','ode45')

不同時間步長hhh時的數值計算結果:

  • 步長h=0.6sh=0.6sh=0.6s

  • 步長h=0.9sh=0.9sh=0.9s

從計算結果可以看出,四階龍格庫塔法(Runge-Kutta)即使在步長很大時,也能保持較高的求解精度,求解精度與Matlab自帶的ode45函數相當,相對于改進歐拉算法求解精度有明顯提高。
自己編程實現四階龍格庫塔法(Runge-Kutta),相對于直接調用ode45等Matlab自帶的龍格庫塔法的最大優勢在于:可以將求解程序和模型描述文件融合起來,解決各類參數時變、條件判斷、多模型切換等問題。后續補充實際案例。

4. 聯系作者

有Matlab/Simulink方面的技術問題,歡迎發送郵件至944077462@qq.com討論。
更多Matlab/Simulink原創資料,歡迎關注微信公眾號:Matlab Fans

源程序下載:
1. csdn資源: 四階龍格庫塔法(Runge-Kutta)求解常微分方程的Matlab程序及案例
2. 掃碼關注微信公眾號Matlab Fans,回復BK09獲取百度網盤下載鏈接。

總結

以上是生活随笔為你收集整理的四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久人人视频 | 私库av在线| 台湾佬美性中文网 | 日本在线一区二区 | 亚洲区欧美 | 国产精品白浆一区二小说 | 日本黄在线观看 | 无码人妻精品一区二区三区在线 | 一级片视频播放 | 久久精品视频偷拍 | 在线你懂的 | 久久网一区二区 | 精品国产乱码久久久久久郑州公司 | 国内成人av | 婷婷在线免费观看 | 国内精品一区二区三区 | 天堂999 | 麻豆传媒一区二区 | 黄色免费av | 夜福利视频 | 极品色综合 | 樱桃成人精品视频在线播放 | jizz毛片| 性xxx法国hd极品 | 国产女同视频 | 国产精品久久久久久久毛片 | 国产又粗又猛又色 | 人人干人人爱 | 国产a黄 | 亚洲AV无码国产日韩久久 | 黄色网页在线 | 爱情岛论坛亚洲线路一 | 午夜免费福利小电影 | av黄在线| 狠狠操一区二区 | 亚洲色在线视频 | 在线成人免费电影 | 亚洲国产无 | 国产高清视频在线 | 91抖音在线观看 | 亚洲熟女乱色一区二区三区久久久 | 中文字幕在线2019 | 亚洲va国产va天堂va久久 | 日本少妇ⅹxxxxx视频 | 91传媒在线视频 | 国产欧美综合一区二区三区 | 99久久久无码国产精品性波多 | 五月天婷婷在线播放 | 欧美xxxxxx片免费播放软件 | 韩日av在线播放 | 中文字幕第28页 | 国产精品一区二区三区在线免费观看 | 又色又爽又黄gif动态图 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 亚洲成人免费视频 | 五月深爱婷婷 | 婷婷综合网站 | 国产成人精品一区 | 国产精品一品二区三区的使用体验 | 大又大粗又爽又黄少妇毛片 | 久久精品国产亚洲AV无码麻豆 | 色综合狠狠操 | 国产精品一区在线观看 | 秋霞毛片少妇激情免费 | av在线免费观看网址 | 爱逼综合网 | 亚洲女优在线观看 | 日韩av免费看 | 台湾无码一区二区 | 亚洲一区二区三区蜜桃 | 精品人妻一区二区三区久久 | 日欧视频 | 天堂影院一区二区 | 中国第一毛片 | 美女毛片在线观看 | 国产欧美日韩一区二区三区 | 成人av免费在线观看 | 国产做受网站 | 国产精品久久久久久一区二区 | av直接看 | 久久九九综合 | 三级视频网 | 色片网站在线观看 | 在线观看的av网址 | 日韩在线视频你懂的 | 污视频网站免费观看 | 一级做a爱片性色毛片 | 91在线影院| 久综合网| 久久性生活视频 | 中文字幕av久久爽一区 | 久久久精品人妻一区二区三区四 | 黄色av网站在线观看 | 永久免费av无码网站性色av | 亚洲精品一区二区二区 | 亚洲综人网 | 手机在线观看免费av | 91精品婷婷国产综合久久竹菊 | 亚洲免费黄色网址 |