SOULed_Outt
SOULed_Outt

Reputation: 159

Plotting solutions to differential equations, but not with respect to time in MATLAB

My question today is related to this previous question. I am following this research paper. I am trying to duplicate figure 8 located on page 20. I have a screenshot: enter image description here

I'm confused on how to plot the left figure this in MATLAB because now a instead of having time varying we have the treatment varying. Here's what I have from the previous question:

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

To plot my equations in the previous question, I typed the following in the command window:

>> [t,Y] = ode45(@CompetitionModel, [0 4.5e4], [1e4 0 0]);
>> plot(t,X(:,1), t,X(:,2), t,X(:,3))

In my function file, I have Treatment already defined. I'm guessing that it shouldn't be anymore. So what can I do so that I have Treatment varying instead of time? I hope my question makes sense.

Upvotes: 1

Views: 151

Answers (1)

zinjaai
zinjaai

Reputation: 2385

You still solve the equation in regards to the time - but solely plot the value at the time t = 1 month. To vary the treatment you need an additional loop around the ode45 call and pass the current treatment-value to the function 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

the function dX now has to be changed to accept the treatment input:

function dX = CompetitionModel(~,X, T)       

Finally, comment your old treatment assignment in the function dX: %T = 1e-3; % Treatment

Upvotes: 1

Related Questions