原文地址:matlab中求时滞常微分方程组作者:小数 matlab中求时滞常微分方程组有两个函数,一个是dde23函数,求解时滞函数为常数的情形;另一个是ddesd函数,求解时滞函数为一般函数的情形.下边主要讲dde23函数,ddesd可以参考help文档. 以控制系统中的时滞常微分方程组为例: 代码如下: f nction y=controsys mi =0.1;beta=0.2;omiga=1;xita=0.3;tao=5;%参数的赋值 sc=[0.6,0.2,0.2];%设定初始值 for i=5:5:100 sol=dde23(@eq,[1 1],@(t) eqhist(t,sc),[i-5 i]); %eq是求解的方程组;eqhist是定义的时滞函数的值[i-tao i]; %[1 1]是s,i的时滞参数,[i-5 i]是求解区间 sc=sol.y(:,length(sol.y)); sc(3,:)=sc(1,:)*xita+sc(3,:);sc(1,:)=sc(1,:)*(1-xita);sc=sc ; %求解新的初始值 plot(sol.x,sol.y ) hold on%画出函数图象 plot([i i],[sol.y(:,length(sol.y)) sc ]) hold on%连接跳跃点 end%求解跳跃点 %% f nction s=eqhist(t,sc) s=sc; %% f nction dy=eq(t,y,z) mi =0.1;beta=0.2;omiga=1;xita=0.3;tao=5; dy=[0.6 0.2 0.2]; slag=z(1); ilag=z(2); dy=[mi -beta*y(1).*y(2)-mi *y(1); beta*y(1)*y(2)-beta*exp(-mi *omiga)*slag*ilag-mi *y(2); beta*exp(-mi *omiga)*slag*ilag-mi *y(3)];