Проблемы с отображением определенных значений с помощью numpy и matplotlib - PullRequest
0 голосов
/ 05 июня 2019

У меня завтра экзамен, и я хотел сделать модель апокалипсиса зомби, используя модель эпидемий SIR. Программа работает на значения примерно до 300 000+, но помимо этого сюжет становится иррациональным. Когда программа работает, количество зараженных уровней выходит на количество людей, восприимчивых к заражению, но когда оно достигает значений более 300 000 (приближение), график зараженных, кажется, намного превышает график числа восприимчивых.

Вполне возможно, что это из-за размера вычислений и что программа не может правильно с ними справиться. Как вы можете видеть в цикле for, в конечном итоге значения каждого класса (sus, inf) станут довольно большими, и я подозреваю, что это может вызвать проблемы при умножении этих значений. Также может быть, что я что-то недопонимаю или пропускаю, любая помощь будет принята с благодарностью.

import numpy as np
import matplotlib.pyplot as plt 
xmin=0
xmax=365

deltax=0.1

antall_punkt=int((xmax-xmin)/deltax)+1
x=np.zeros(antall_punkt)

sus=np.zeros(len(x))
inf=np.zeros(len(x))
rec=np.zeros(len(x))

x[0]=0
sus[0]=500000
inf[0]=1
rec[0]=0
a=0.00001
b=0
total_inf=1
for i in range(0, len(sus)-1):
    if i>90:
        b=inf[i-90]/total_inf

    sus[i+1]=sus[i]+deltax*(-a*sus[i]*inf[i])
    if sus[i+1]<0:
        sus[i+1]=0
    inf[i+1]=inf[i]+deltax*(a*sus[i]*inf[i] -b*inf[i])
    if inf[i+1]>sus[0]:
        inf[i+1]=sus[0]
    total_inf+=inf[i]
    rec[i+1]=rec[i]+deltax*(b*inf[i])
    x[i+1]=x[i]+deltax
print(sus[3])
print(inf[4])
print(inf[3])
print(total_inf)
plt.plot(x,sus)
plt.plot(x,inf)
plt.plot(x,rec)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...