我今天的提问与this previous question有关。我正在关注这个research paper。我正在尝试复制位于第20页的图8.我有一个屏幕截图:
我对如何在MATLAB中绘制左图这一点很困惑,因为现在我们的处理方式不同,而不是时间变化。这是我上一个问题的内容:
function dX = CompetitionModel(~,X)
bs = 8e-3;
bl = 4e-3;
bh = 6.4e-3;
N = sum(X);
K = 1e8;
m1 = 2e-5;
m2 = 9e-9;
p = 5e-13;
I = 1e-3;
T = 1e-3; % Treatment
a = 0;
dX = [X(1) * (bs * (1 - N/K) - I - T - m1) - p * X(1) * (X(2) + X(3));
X(2) * (bl * (1 - N/K) - I - a*T - m2) + m1 * X(1) + p * X(2) * (X(1) - X(3));
X(3) * (bh * (1 - N/K) - I - a*T) + m2 * X(2) + p * X(3) * (X(1) + X(2))];
end
要在上一个问题中绘制我的方程,我在命令窗口中输入以下内容:
>> [t,Y] = ode45(@CompetitionModel, [0 4.5e4], [1e4 0 0]);
>> plot(t,X(:,1), t,X(:,2), t,X(:,3))
在我的函数文件中,我已经定义了治疗。我猜它不应该再了。那么我能做什么才能使治疗变化而不是时间?我希望我的问题有道理。
答案 0 :(得分:1)
你仍然可以解决关于时间的等式 - 但只是绘制t = 1个月时的值。 要改变治疗方法,您需要围绕ode45调用额外循环,并将当前治疗值传递给函数dX
for treatment = 10^-4:10^-5:10^-3
[t,Y] = ode45(@CompetitionModel, [0 4.5e4], [1e4 0 0], [] , treatment);
plot(treatment,Y(end,1), 'x')
plot(treatment,Y(end,2), 'kx')
plot(treatment,Y(end,3), 'rx')
hold on
end
现在必须更改功能dX以接受治疗输入:
function dX = CompetitionModel(~,X, T)
最后,在函数dX中评论旧的治疗分配:%T = 1e-3; %治疗