% epidemiSim
% Simulera förloppet av en epidemi.
% Simuleringen baseras på en matematisk modell
% i form av ett system av första ordningens ODE,
% som finns beskrivet i Matlab-funktionen
% epidemiODE.m
%----

% Sätt begynnelsevärden, dvs antalet rovdjur och bytesdjur vid
% tidpunkten starttid
N = input('Totalt antal individer i populationen? ');
I0 = input('Antal infekterade individer i utgångsläget? ');
R0 = input('Antal immuna individer i utgångsläget? ');
S0 = N-I0-R0;
y0 = [S0; I0; R0]; % Placera begynnelsevärdena i vektor y0.

% Sätt start- och sluttid för simuleringen
starttid = 0;
sluttid = input('Hur många dygn ska simuleringen omfatta? ');
tidsintervall = [starttid sluttid];
% Sätt värden på modellparametrarna 

b = 0.002/365;
d = 0.0016/365;
beta = 0.3;
u = 1/7;
v = 0;

val = odeset;
%val = odeset('OutputFcn','odeplot', ...
%             'RelTol', 1e-3, 'AbsTol', 1e-5);


% Lös ode:n genom anrop av ode45. Parametern val kan "uteslutas"
% om man inte vill ändra standardvärden i ode45.
%[t, y] = ode45(@epidemiODE, tidsintervall, y0, val, N, b, d, beta, u, v);

[t, y] = ode45(@(t,y)epidemiODE(t,y,N,b,d,beta,u,v), tidsintervall, y0, val);

% Rita upp lösningen
subplot(2,1,1)
plot(t,y);  
xlabel('Tid')
ylabel('Antal individer')
title('Tidsseriegraf över simulering av epidemi')
legend('Ännu ej smittade','Infekterade', 'Immuna')
grid on

subplot(2,1,2)
plot3(y(:,1),y(:,2),y(:,3))
title('Fasrumsgraf över simulering av epidemi')
xlabel('Ännu ej smittade')
ylabel('Infekterade')
zlabel('Immuna')
grid on
