Отчет по практическому заданию по “Методам математического моделирования”
Автор: Александр Вдовин • Октябрь 10, 2022 • Практическая работа • 528 Слов (3 Страниц) • 203 Просмотры
Нижегородский государственный университет им Н.И Лобачевского
Радиофизический факультет
Отчет по практическому заданию по курсу “Методы математического моделирования”
Выполнил студент:
Вдовин А.А.
Гр. 428
Нижний Новгород
2020
1. Задание № 3
При изучении развития эпидемии некоторого заболевания обычно выделяют три группы людей: х - группа людей, восприимчивых к данному заболеванию, но еще не заразившаяся им; у - группа уже больных или инфицированных людей, которые могут выступать разносчиками болезни; z - группа людей, невосприимчивых к этой болезни или получившие
иммунитет после перенесенного заболевания. Создайте математическую модель развития эпидемии с учетом: а) изменения общей численности населения, связанные с рождениями и естественными смертями; б) смертности от данного заболевания; в) непостоянства доли заболевших людей. Выполните численное моделирование и постройте графики схемы численности всех групп. Оцените точность интегрирования в зависимости от величины шага интегрирования.
2. Модель и алгоритм
За основу была взята модель SIR с учетом естественной рождаемости и смертности. Формулы вычисления:
[pic 1]
[pic 2]
[pic 3]
[pic 4]
где
[pic 5]
[pic 6]
[pic 7]
[pic 8]
[pic 9]
[pic 10]
[pic 11]
[pic 12]
[pic 13]
[pic 14]
Каждая последующая формула вычисляется на основании предыдущей. В программе создаётся 4 массива с данными, и потому выводятся в виде графиков с помощью модуля matplotlib.
Погрешность интегрирования вычисляется как разность между значением полученным с помощью формулы N(T) в момент T, и интегралом . При шаге dt =0.02 погрешность составила: 0.3617832162517516, при шаге 0.2 - 1.1841188553376014.[pic 15]
3. Код
import math as mt
import numpy as np
from matplotlib import pylab as plt
def N_t(t):
N = np.e**((ksi_B-ksi_D-mu)*t)*N_0
return N
def S_t(t):
#S=(N_t(t)+N_0)*np.e**(-alpha*N_t(t)*t)*N_t(t)
S = (N_t(t))*np.e**(-alpha*t)
return S
def I_t(t):
I = (N_t(t))/np.e**((beta*S_t(t)))
return I
def R_t(t):
R = gamma*I_t(t)
return R
def integriruem():
intgr = 0.0
for i in np.arange(t0, t, 0.2):
intgr += (ksi_B-ksi_D-mu)*0.2*N_0*np.e**((ksi_B-ksi_D-mu)*i)
return intgr
ksi_B = 0.01 # коэф. рождаемости
...