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

matlab求解时滞微分方程_matlab延迟环节传递函数具有常时滞的DDERef:时滞微分方程—示例


Jetbrains全系列IDE稳定放心使用

具有常时滞的 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)​

编写时滞代码

%% 测试求解常时滞微分方程
% 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)​

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

代码如下

%% 测试求解常时滞微分方程
% 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​

%% 测试求解常时滞微分方程
% 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.net/188839.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Git 切换分支命令

    Git 切换分支命令从Github上clone下来的项目都是主分支branch,为了开发的安全性,如何切换到其它分支呢?gitbranch查看本地分支*表示当前所处的分支,如下图所示:gitbranch-a查看项目所有分支:gitcheckout-b切换分支,例如我切换到stardard-base-4.x-dev:gitcheckout-bstandard-base-4.x-devorigin/standard-base-4.x-dev第二次切换直接填入分支名称即可。

    2022年6月20日
  • 机器学习两种方法——监督学习和无监督学习(通俗理解)「建议收藏」

    机器学习两种方法——监督学习和无监督学习(通俗理解)「建议收藏」监督学习与无监督学习

    2022年5月28日
  • Eclipse没有server 配置Tomcat「建议收藏」

    Eclipse配置Tomcat服务器如果你的Eclipse没有server,请查看:http://blog.csdn.net/guyuealian/article/details/50762996【1】下载并成功安装了Eclipse和Tomcat:(1)Tomcat下载地址:http://tomcat.apache.org/(尽量安装6.0以上的版本)(2)Eclip

    2022年4月7日
  • collection与collections区别

    collection与collections区别collection是一个接口。         他抽取出各种集合&lt;继承List和Set&gt;的主要功能,并做出统一行为规范。          他是很多集合的祖辈接口,没错父辈接口是List和Set。Collections是一个工具类。           工具类是工具,就像Math,Arrays类一样,他是一种工具,集成了很多特定的功能。           比如排…

    2022年6月13日
  • Java中数组的声明格式

    Java中数组的声明格式Java中数组的声明格式1.类型标识符数组名[];(合法但不推荐)2.类型标识符[]数组名;(《java开发手册》强制)举例:int[]arr;String[]example;MyClass[]mc;//此时仅声明了引用变量,并未产生数组对象​注意声明时不可在方括号内指定数组大小​如float[10]arr;是错误的…

    2022年5月25日
  • idea创建springboot父子工程_Springboot框架

    idea创建springboot父子工程_Springboot框架在本系列第一篇文章,我们讲解了如何在IDEA中搭建第一个SpringBoot项目:【SpringBoot】一、创建第一个SpringBoot项目,本篇文章,我们讲解如何在IDEA中搭建SpringBoot的父子Module工程项目1、Module工程项目简介多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。2、创建一个SpringBoot项目就是创

    2022年10月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号