matlab求解时滞微分方程「建议收藏」

matlab求解时滞微分方程「建议收藏」matlab求解时滞微分方程,dde23调用格式:sol=dde23(ddefun,lags,history,tspan);–ddefun函数句柄,求解微分方程y’=f(t,y(t),y(t-τ1),…,y(t-τk))必须写成下面形式:dydt=ddefun(t,y,Z);其中t对应当前时间t,y为列向量,近似于y(…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

matlab求解时滞微分方程,dde23调用格式:

sol = dde23(ddefun,lags,history,tspan);

–ddefun函数句柄,求解微分方程y=f(t,y(t),y(t-τ1),…,y(t-τk))

        必须写成下面形式:

        dydt =ddefun(t,y,Z);

        其中t对应当前时间t,y为列向量,近似于y(t);Z(:,j)近似于y(t-τj)

–lags为延迟时间,为正常数。

            例:方程中包含y1(t-0.2)和y2(t-1),则可以表示为lags=[0.2,1]

–history t≤t0 时的状态变量的值

–tspan 积分区间 t0 = tspan(1),tf =tspan(end)。

 

看下面例子:

      假定系统状态方程为dXdt =- Ax(t) – Bx(t-0.23)+Bx(t-0.56); A= [3,-1,-1,-1;-1,2,0,-1;-1,0,2,-1;-1,-1,-1,3];B=A;

 

程序如下:

     (1) 编写延迟函数

function dx = ddefun(t,y,Z)
A = [3,-1,-1,-1;-1,2,0,-1;-1,0,2,-1;-1,-1,-1,3]; tau1= Z(:,1); tau2= Z(:,2); dx=-A*y-A*tau1-A*tau2
;

 

 (1) 编写主调函数

 


tau = [0.23,0.56];
y0 = [1,7,3,0];
sol = dde23(@ddefun, tau, y0, [0, 50]);

% plot the system states

plot(sol.x,sol.y);

*注意:该函数返回的sol中结构体sol.x和sol.y均为按行排列,与ode45等不同
如只显示一组数据plot(sol.x,sol.y(1,:));

 

matlab求解时滞微分方程「建议收藏」

 

  

转载于:https://www.cnblogs.com/rainrainbow/p/3958132.html

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

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

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


相关推荐

发表回复

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

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