[Matlab] 감염증 SIR 모델을 풀어 본다.
바이러스 감염을 시뮬레이션 → 「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 모델을 쉽게 시뮬레이션할 수 있습니다.
Reference
이 문제에 관하여([Matlab] 감염증 SIR 모델을 풀어 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/osobono/items/342cb4ce6a5f5cbb9be6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)