Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИДЗ / VirusInfModel

.py
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
1.84 Кб
Скачать
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

# Функция для системы уравнений SIRD
def sir_model(y, t, beta, gamma, mu):
    S, I, R, D = y
    dSdt = -beta * S * I
    dIdt = beta * S * I - (gamma + mu) * I
    dRdt = gamma * I
    dDdt = mu * I
    return [dSdt, dIdt, dRdt, dDdt]

# Основные параметры
N = 10**6         # Общее население
beta = 5        # Скорость передачи инфекции
gamma = 0.1       # Скорость выздоровления
mu = 0.02         # Скорость летального исхода

# Начальные условия
I0 = 1              # Зараженные
S0 = N - I0          # Восприимчивые 
R0 = 0            # Выздоровевшие
D0 = 0            # Умершие

# Нормированные начальные условия
S0_norm = S0 / N
I0_norm = I0 / N
R0_norm = R0 / N
D0_norm = D0 / N

# Период моделирования (дни)
t = np.linspace(0, 160, 160)

# Решение системы уравнений
y0 = [S0_norm, I0_norm, R0_norm, D0_norm]
solution = odeint(sir_model, y0, t, args=(beta, gamma, mu))
S, I, R, D = solution.T

# Визуализация результатов
plt.figure(figsize=(10, 6))
plt.plot(t, S, label='Восприимчивые (S)', color='blue')
plt.plot(t, I, label='Зараженные (I)', color='red')
plt.plot(t, R, label='Выздоровевшие (R)', color='green')
plt.plot(t, D, label='Умершие (D)', color='black')
plt.title('Расширенная SIR-модель с летальным исходом')
plt.xlabel('Время (дни)')
plt.ylabel('Доля населения')
plt.legend()
plt.grid()
plt.show()