MATLAB Answers

ODE45 SIR model problem

122 views (last 30 days)
Hi, I'm quite new to MATLAB and recently tried to plot a SIR model using its first order equations, but everytime I tried to use the ODE45 it the equation doesn't seem to change it just gives me a constant plot of the initial value. Can anyone spot a problem? Code is below:
clear all, close all, clc
A = 0.1;
B = 0.3;
tspan = [0:0.01:300];
y0 = [300 0 0];
[t,y] = ode45(@(t,y)odefcn(y,A,B),tspan,y0);
function dydt = odefcn(y,A,B)
dydt = zeros(3,1);
dydt(1) = -A*y(2)*y(1);
dydt(2) = A*y(2)*y(1)-B*y(2);
dydt(3) = B*y(2);


Sign in to comment.

Accepted Answer

Bjorn Gustavsson
Bjorn Gustavsson on 19 Nov 2020
In your initial conditions you have everyone perfectly "healthy" - therefore no one will ever get infected. You have to set at leas some small fraction of your population to infected. That is something like this:
y0 = [299 1 0];
That should kick things off...

  1 Comment

Brilliant Purnawan
Brilliant Purnawan on 19 Nov 2020
Oh, I see, thanks mate!

Sign in to comment.

More Answers (0)


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!