前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab求解时滞微分方程_matlab延迟环节传递函数

matlab求解时滞微分方程_matlab延迟环节传递函数

作者头像
全栈程序员站长
发布2022-11-10 15:26:49
5920
发布2022-11-10 15:26:49
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

文章目录

具有常时滞的 DDE

举例为如下方程 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 ) \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)​

编写时滞代码

代码语言:javascript
复制
%% 测试求解常时滞微分方程
% 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 solved
  ylag1 = Z(:,1);
  ylag2 = Z(:,2);

  dydt = [ylag1(1); 
          ylag1(1)+ylag2(2); 
          y(2)];
end
%-------------------------------------------
function s = history(t) % history function for t <= 0
  s = ones(3,1);
end
%-------------------------------------------
在这里插入图片描述
在这里插入图片描述

修改成自用的一阶系统微分方程

y 1 ′ = y 1 ( t − 0.1 ) y 2 ′ = y 2 ( 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)​

写成了两个并列的形式,方便对比最终的效果。

代码如下

代码语言:javascript
复制
%% 测试求解常时滞微分方程
% 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 solved
  ylag1 = Z(:,1);
  ylag2 = Z(:,2);

  dydt = [-ylag1(2); 
          -ylag2(2)];
end
%-------------------------------------------
function s = history(t) % history function for t <= 0
  s = ones(2,1);
end
%-------------------------------------------
在这里插入图片描述
在这里插入图片描述

再改一个二阶的

方程为: y 1 ′ = y 2 ( t − 0.1 ) y 2 ′ = − 2 y 3 ′ = y 4 ( t − 0.5 ) y 4 ′ = − 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​

代码语言:javascript
复制
%% 测试求解常时滞微分方程
% 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 solved
  ylag1 = Z(:,1);
  ylag2 = Z(:,2);

  dydt = [ylag1(2); 
          -2;
          ylag2(4); 
          -2;];
end
%-------------------------------------------
function s = history(t) % history function for t <= 0
  s = ones(4,1);
end
%-------------------------------------------
在这里插入图片描述
在这里插入图片描述

Ref: 时滞微分方程 — 示例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188839.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 具有常时滞的 DDE
    • 编写时滞代码
      • 修改成自用的一阶系统微分方程
        • 再改一个二阶的
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档