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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Matlab】dde23解时滞时延微分方程

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Matlab】dde23解时滞时延微分方程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 具有常時滯的 DDE
    • 編寫時滯代碼
    • 修改成自用的一階系統微分方程
    • 再改一個二階的

具有常時滯的 DDE

舉例為如下方程
y1′(t)=y1(t?1)y2′(t)=y1(t?1)+y2(t?0.2)y3′(t)=y2(t?1)\begin{aligned} y_1'(t) &= y_1(t-1) \\ y_2'(t) &= y_1(t-1) + y_2(t-0.2) \\ y_3'(t) &= y_2(t-1) \\ \end{aligned}y1?(t)y2?(t)y3?(t)?=y1?(t?1)=y1?(t?1)+y2?(t?0.2)=y2?(t?1)?

編寫時滯代碼

%% 測試求解常時滯微分方程 % Author: Zhao-Jichao % Date: 2021-07-05 clear clc%% Define Time-Delay lags = [1 0.2];tspan = [0 5]; sol = dde23(@ddefun, lags, @history, tspan);%% Draw Results plot(sol.x,sol.y,'-o') xlabel('Time t'); ylabel('Solution y'); legend('y_1','y_2','y_3','Location','NorthWest');%% DDE Function function dydt = ddefun(t,y,Z) % equation being solvedylag1 = Z(:,1);ylag2 = Z(:,2);dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end %------------------------------------------- function s = history(t) % history function for t <= 0s = ones(3,1); end %-------------------------------------------

修改成自用的一階系統微分方程

y1′=y1(t?0.1)y2′=y2(t?0.5)\begin{aligned} y_1'&=y_1(t-0.1) \\ y_2'&=y_2(t-0.5) \\ \end{aligned}y1?y2??=y1?(t?0.1)=y2?(t?0.5)?

寫成了兩個并列的形式,方便對比最終的效果。

代碼如下

%% 測試求解常時滯微分方程 % Author: Zhao-Jichao % Date: 2021-07-05 clear clc%% Define Time-Delay lags = [0.1 0.5];tspan = [0 5]; sol = dde23(@ddefun, lags, @history, tspan);%% Draw Results plot(sol.x,sol.y,'-o') xlabel('Time t'); ylabel('Solution y'); legend('y_1','y_2','y_3','Location','NorthWest');%% DDE Function function dydt = ddefun(t,y,Z) % equation being solvedylag1 = Z(:,1);ylag2 = Z(:,2);dydt = [-ylag1(2); -ylag2(2)]; end %------------------------------------------- function s = history(t) % history function for t <= 0s = ones(2,1); end %-------------------------------------------

再改一個二階的

方程為:
y1′=y2(t?0.1)y2′=?2y3′=y4(t?0.5)y4′=?2\begin{aligned} y_1' &= y_2(t-0.1) \\ y_2' &= -2 \\ y_3' &= y_4(t-0.5) \\ y_4' &= -2 \\ \end{aligned}y1?y2?y3?y4??=y2?(t?0.1)=?2=y4?(t?0.5)=?2?

%% 測試求解常時滯微分方程 % Author: Zhao-Jichao % Date: 2021-07-05 clear clc%% Define Time-Delay lags = [0.1 0.5];tspan = [0 3]; sol = dde23(@ddefun, lags, @history, tspan);%% Draw Results plot(sol.x,sol.y) xlabel('Time t'); ylabel('Solution y'); legend('y_1','y_2','y_3','y_4','Location','NorthWest');%% DDE Function function dydt = ddefun(t,y,Z) % equation being solvedylag1 = Z(:,1);ylag2 = Z(:,2);dydt = [ylag1(2); -2;ylag2(4); -2;]; end %------------------------------------------- function s = history(t) % history function for t <= 0s = ones(4,1); end %-------------------------------------------

Ref: 時滯微分方程 — 示例

總結

以上是生活随笔為你收集整理的【Matlab】dde23解时滞时延微分方程的全部內容,希望文章能夠幫你解決所遇到的問題。

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