2026. június 21., vasárnap

Járvány modellezése

   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