Построение решений дифференциальных уравнений, но не относительно времени в MATLAB

Вопрос:

Мой вопрос сегодня связан с этим предыдущим вопросом. Я следую этой исследовательской работе. Я пытаюсь дублировать рисунок 8, расположенный на странице 20. У меня есть скриншот: enter image description here

Я смущен тем, как нарисовать левую фигуру в 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))

В моем файле функции у меня уже определено лечение. Я предполагаю, что этого больше не должно быть. Итак, что я могу сделать, чтобы у меня было Лечение, а не время? Надеюсь, мой вопрос имеет смысл.

Лучший ответ:

Вы по-прежнему решаете уравнение относительно времени, но только рисуете значение в момент времени 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; % Лечение

Оцените статью
TechArks.Ru
Добавить комментарий