%% Interaktyvus pratimas nr. 7. SIR modelis
% Šiame interaktyviame pratime nagrinėsime SIR modelį, kuris yra skirtas epidemiologams, kurie prognozuoja pandemijos elgesį šalyje. Kaip jau buvo minėta paskaitos metu, šis modelis yra pakankamai paprastai suvokiamas, tačiau nagrinėja tik tris asmenų tipus:
% Liga nepaveikti asmenys (angl.  susceptible individuals);
% Liga užkrėsti asmenys (angl. infectious individuals);
% Pasveikę asmenys (angl. recovered individuals).
% Iš angliškų grupių pavadinimų galite suprasti, kodėl modelis turi tokį pavadinimą.
% Dėja, prie paskutinės grupės taip tat yra priskiriami ir mirę nuo ligos asmenys. Kitaip sakoma, kad trečiąją asmenų grupę sudaro taip vadinami pasibaigę atvėjai, t.y. tie, kuriems jau yra žinomas rezultatas (asmuo pasveiko arba mirė).
% Modelis nagrinėja šių trijų grupių pokyčius realiuoju laiku. Dėl to modelyje susiduriame su išvestinės sąvoka. Jeigu konkrečiau, tai yra nagrinėjama diferencialinių lygčių sistema:
% \left\lbrace \begin{array}{l}
% S\prime \left(t\right)=-b\cdot S\left(t\right)\cdot I\left(t\right)\\
% I\left(t\right)=b\cdot S\left(t\right)\cdot I\left(t\right)-c\cdot I\left(t\right)\\
% R\left(t\right)=c\cdot I\left(t\right)
% \end{array}\right.,
% čia  b,c\in \left\lbrack 0;1\right\rbrack yra koeficientai, kurie parodo šias tikimybes:
% Koeficientas b parodo tikimybę, kad ligos nepaveikas asmuo bus užkrėstas po kontakto su sergančiu asmeniu (epidemijos vystimosi sparta);
% Koeficientas c parodo tikimybę, kad užkrėstas žmogus pasveiko (epidemijos išnykimo sparta).
% Šiuos koeficientus siūlome keisti. Apačioje grafiškai pavaizduotos trys funkcijos S\left(t\right) - sveikieji asmenys, I\left(t\right) - užkrėstieji asmenys ir R\left(t\right) - pasveikę (arba mirę) asmenys.
% Visą populiaciją laikydami lygią 1 galime keisti sveikųjų asmenų dalį populiacijoje pradiniu laiko momentu. Laikysime, kad visi kiti asmenys yra užsikrėtę, o pasveikusių asmenų pradiniu laiko momentu nėra. Taip pat galite keisti stebimo laiko intervalo galą T, t.y. epidemija bus stebima laikotarpiu \left\lbrack 0;T\right\rbrack.

b = 0.694;
c = 0.103;

t_end = 38;

t_int = [0 t_end];

healphy = 0.767;
infected = 1 - healphy;
recovered  = 0;

IC = [healphy, infected, recovered];

%

[t, X] = ode45(@(t, X) SIR(t, X, b, c), t_int, IC);

S = X(:, 1);
I = X(:, 2);
R = X(:, 3);

%

plot(t, S);
hold on;
plot(t, I);
plot(t, R);
legend('S(t)', 'I(t)', 'R(t)')
hold off;

%

function dxdt = SIR(t, X, b, c)
    dx1 = -b * X(2) * X(1);
    dx2 = b * X(2) * X(1) - c * X(2);
    dx3 = c * X(2);
    dxdt = [dx1; dx2; dx3];
end

%% Pabandykite patys
% Pakeiskite modelį taip, kad būtų vertinamas faktas, jog pasveikęs žmogus gali pakairtotinai susirgti šia lyga su tam tikra tikimybe p.