作业帮 > 综合 > 作业

求MATLAB高手,帮忙画个三元微分方程组的三条曲线,程序的我写好了(如下),有错误,麻烦帮忙调试,

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 23:42:52
求MATLAB高手,帮忙画个三元微分方程组的三条曲线,程序的我写好了(如下),有错误,麻烦帮忙调试,
dS(t)/dt=-0.0000003S(t)I(t)-0.001S(t)
dI(t)/dt=0.0000003S(t)I(t)-0.025I(t)
dR(t)/dt=0.001S(t)+0.025I(t)
S(t)+I(t)+R(t)=N=1000000
条件如下:S(0)=1000000-1=999999,I(0)=1,R(0)=0
把S(t) I(t) R(t)在一个图上显示这三条曲线.程序如下:
syms x1 x2 x3 t x
%x1=S(t),x2=I(t),x3=R(t)
%微分表达式
%x=[x1;x2;x3];
function xdot=DxDt(t,x)
xdot=[-0.0000003*x1.*x2-0.001*x1;0.0000003*x1.*x2-0.025*x2;0.001*x1+0.025*x2];
t=[0,200];
x0=[999999;1;0];
[t,x]=ode45(@xdot,t,x0);
%plot3(x(:,1),x(:,2),x(:,3))
plot(t,x(:,1))
plot(t,x(:,2))
plot(t,x(:,3))
xlabel('t')
求MATLAB高手,帮忙画个三元微分方程组的三条曲线,程序的我写好了(如下),有错误,麻烦帮忙调试,
你的程序不好用,我自己写了一个.
首先请将以下代码复制到一个m文件中,并存储为DxDt.m:
%%%%%%%%%%%%%%%%%%%%
function dx=DxDt(t,x)
dx(1)=-0.0000003*x(1).*x(2)-0.001*x(1);
dx(2)=0.0000003*x(1).*x(2)-0.025*x(2);
dx(3)=0.001*x(1)+0.025*x(2);
dx=dx(:);
%%%%%%%%%%%%%%%%%%%
然后在另个m文件或者命令窗口中输入以下命令,并运行:
clear;
clc;
t=[0,200];
x0=[999999;1;0];
[t,x]=ode45('DxDt',t,x0);
plot(t,x(:,1),'r',t,x(:,2),'g',t,x(:,3),'b');
xlabel('t');ylabel('x'); %%%%% 坐标轴解释自己加
title('myhelp'); %%%%% 标题解释自己加
legend('x1','x2','x3') %%%%% 图解可以自己加
结果图我就不贴了,省的又被拉去审核
觉得还行就给个采纳