[Matlab] 감염증 SIR 모델을 풀어 본다.

3979 단어 수리 모델matlab

바이러스 감염을 시뮬레이션 → 「SIR 모델」



현재 일본에서는 코로나 바이러스의 감염이 확산되고 있다. 바이러스 감염의 시뮬레이션을 실시하는데, 「SIR 모델」이라고 하는 것이 자주 사용된다고 한다. 이번에는 다른 쪽의 자료를 참고로 Matlab을 이용해 SIR 모델을 풀어 보았으므로 정리해 보았다.

참고로 한 사이트



오기타 다케시, 포식·피식 관계 시뮬레이션
오기타 타케시, 감염증 유행 시뮬레이션
포식자와 피식자의 방정식 구해

SIR 모델이란?



S : 감염되지 않은 사람의 수 (Susceptible)
I : 감염자의 인원수(Infected)
R : 죽거나 회복된 인원수(Recovered)

모든 인구를 S, I, R의 세 가지로 나누어 초기 조건과 적절한 파라미터를 선택하여 미분 방정식을 풀어 시간에 따라 변화하는 감염 인원수를 시뮬레이션할 수 있다.
여기서 S, I, R은 시간 t의 함수이다.

미분 방정식


\frac{dS(t)}{dt} = -βS(t)I(t)\\
\qquad\quad\frac{dI(t)}{dt}= βS(t)I(t)-γI(t)\\
\frac{dR(t)}{dt}= γI(t)\qquad\\
\\
\ β:感染率[1/日]\\
\ γ:回復率[1/日]\\

이것을 풀어 시뮬레이션 할 수 있습니다.

프로그래밍(Matlab)



"SIR_sim.m"이라는 이름으로 파일을 만듭니다.

function dy = SIR_sim(t,y)
a = 0.001; % β感染率[1/日]
b = 0.5; % γ回復率(隔離率)[1/日]
dy = zeros(3,1);
dy(1) = -a*y(1)*y(2);
dy(2) = a*y(1)*y(2)-b*y(2); 
dy(3) = b*y(2);


실행



Matlab의 명령 행에서 다음 명령을 실행합니다.
>> t = [0,200]
>> y0= [1000;1;0]
>> [t,y]=ode45('SIR_sim',t,y0);
>> plot(t,y)
>> xlabel('時間 (日)')
>> ylabel('人口 (人)')
>> legend('S','I','R')



프로그램 내의 β, γ, 시간을 나타내는 t, 초기 조건 y0을 변경함으로써 시뮬레이션하는 것이 가능하다. 이번 실행한 값은 적당히 정한 값으로 근거는 없다.

결론



Matlab을 사용하여 SIR 모델을 쉽게 시뮬레이션할 수 있습니다.

좋은 웹페이지 즐겨찾기