2个回答
展开全部
说明
求解常微分方程一般使用ode系列函数(其中最常用的是ode45),基本做法就是把微分方程用函数表示出来,然后调用ode函数求解即可。对于本题而言,使用匿名函数描述微分方程更为方便一些。
参考代码
k0=8; k1=1; K=1; k2=5; n=2; % 常数定义
ds = @(t,s)[k0-k1*(1+(s(2)/K)^n)*s(1); k1*(1+(s(2)/K)^n)*s(1)-k2*s(2)];
s0 = [0; 0]; % 初始条件,注意自行设置
tf = 10; % 仿真时间,可根据需要自行修改
[t,s] = ode45(ds,[0 tf],s0); % 使用ode求解器求解微分方程
% 绘图
plot(t,s)
xlabel \itt; ylabel '{\its}_1, {\its}_2'
legend('{\its}_1(\itt)', '{\its}_2(\itt)')
展开全部
function myode4()
clc;close all
tspan=[0:0.1:12];
x0=[0 0];%假设t=0时s1=0,s2=0,如果不是自己改
[t,x]=ode45(@(t,x) weifen(t,x),tspan,x0,[]);
disp(' 时间 s1 s2')
disp([t,x])
plot(t,x(:,1))
hold on
plot(t,x(:,2),'r')
xlabel('t')
ylabel('s')
legend('s1(t)曲线图','s2(t)曲线图')
function dx=weifen(t,x)
dx=zeros(2,1);
k0=8;k1=1;K=1;k2=5;n=2;
dx(1)=k0-k1*(1+(x(2)/K)^n)*x(1);
dx(2)=k1*(1+(x(2)/K)^n)*x(1)-k2*x(2);
end
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询