【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?
Ref: 時滯微分方程 — 示例
總結
以上是生活随笔為你收集整理的【Matlab】dde23解时滞时延微分方程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数理知识】二次型求导 矩阵求导
- 下一篇: 【Paper】2010_Distribu