Egy járvány terjedését (vagy más néven exponenciális katasztrófát) szimulálja. A fertőzés egy egyszerű matematikai modellen (SIR) alapul, amely a fogékony (S), fertőzött (R) és gyógyult/elhunyt (I) csoportokat mutatja be.
-------------
import numpy as np
import matplotlib.pyplot as plt
# Modell paraméterei
N = 1000 # Teljes népesség
I0 = 1 # Kezdő fertőzöttek száma
R0 = 0 # Kezdő gyógyultak száma
S0 = N - I0 - R0 # Kezdő fogékonyak száma
beta = 0.2 # Fertőzési ráta
gamma = 0.05 # Gyógyulási ráta
days = 160 # Szimulációs napok
# Tömbök inicializálása
t = np.linspace(0, days, days)
S, I, R = np.zeros(days), np.zeros(days), np.zeros(days)
S[0], I[0], R[0] = S0, I0, R0
# Differenciálegyenlet szimuláció (Euler-módszer)
for i in range(1, days):
dS = -(beta * S[i-1] * I[i-1] / N)
dI = (beta * S[i-1] * I[i-1] / N) - (gamma * I[i-1])
dR = gamma * I[i-1]
S[i] = S[i-1] + dS
I[i] = I[i-1] + dI
R[i] = R[i-1] + dR
print("A járványterjedési modell lefutott.")
print(f"Maximális fertőzöttség: {int(np.max(I))} fő")
print(f"Végső állapot: S={int(S[-1])}, I={int(I[-1])}, R={int(R[-1])}")
# Eredmények ábrázolása
plt.figure(figsize=(10, 6))
plt.plot(t, S, label='Fogékony (S)', color='blue', linewidth=2)
plt.plot(t, I, label='Fertőzött (I)', color='red', linewidth=2)
plt.plot(t, R, label='Gyógyult/Kiesett (R)', color='green', linewidth=2)
plt.title('Katasztrófa (Járvány) terjedési modellje')
plt.xlabel('Idő (Napok)')
plt.ylabel('Lakosság száma')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.tight_layout()
plt.show()
-------------
A járványterjedési modell lefutott.
Maximális fertőzöttség: 413 fő
Végső állapot: S=18, I=5, R=976
Nincsenek megjegyzések:
Megjegyzés küldése