Function: 'Time' 'Population S'

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

function RungeKuttaMethod

b = 0.0097;
a = b/700000;
c = 0.00032;
d = 0.0009+0.0001+c;
z = 0.0009;

fS = @(t,S,I) 500 - a*S*I - z*S;


fI = @(t,S,I) a*S*I - d*I;
fR = @(t,I,R) c*I - z*R;

t(1) = 0;
S(1) = 400000;
I(1) = 50000;
R(1) = 250000;

h=1;
tfinal=5000;
N=ceil(tfinal/h);

for i=1:N
t(i+1)=t(i)+h;
k1S=fS(t(i),S(i),I(i));
k1I=fI(t(i),S(i),I(i));
k1R=fR(t(i),I(i),R(i));
k2S=fS(t(i)+h/2, S(i)+h/2*k1S, I(i)+h/2*k1I);
k2I=fI(t(i)+h/2, S(i)+h/2*k1S, I(i)+h/2*k1I);
k2R=fR(t(i)+h/2, I(i)+h/2*k1I, R(i)+h/2*k1R);
k3S=fS(t(i)+h/2, S(i)+h/2*k2S, I(i)+h/2*k2I);
k3I=fI(t(i)+h/2, S(i)+h/2*k2S, I(i)+h/2*k2I);
k3R=fR(t(i)+h/2, I(i)+h/2*k2I, R(i)+h/2*k2R);
k4S=fS(t(i)+h, S(i)+h*k3S, I(i)+h*k3I);
k4I=fI(t(i)+h, S(i)+h*k3S, I(i)+h*k3I);
k4R=fR(t(i)+h, I(i)+h*k3I, R(i)+h*k3R);
S(i+1)=S(i)+h/6*(k1S+2*k2S+2*k3S+k4S);
I(i+1)=I(i)+h/6*(k1I+2*k2I+2*k3I+k4I);
R(i+1)=R(i)+h/6*(k1R+2*k2R+2*k3R+k4R);

end

figure(1);
plot(t,S)
xlabel('Time');
ylabel('Population S');

figure(2);
plot(t,I)
xlabel('Time');
ylabel('Population I');

figure(3);
plot(t,R)
xlabel('Time');
ylabel('Population R');

You might also like