erst einmal muss ich wohl sagen, dass ich noch ein ziemlicher Python-Anfänger bin. Trotzdem habe ich es geschafft ein kleines Programm zu programmieren, welches dazu dient den Verlauf von Infektionskrankheiten zu berechnen. Nun habe ich jedoch ein Problem, welches sich auch nach ewiger Recherche nicht beheben lässt...
Ich würde gerne die Variablen a, b und c (vgl. Code) in einen Slider/Schieberegler überführen, welchen man dann im Programm anpassen kann und sich dann auch die Kurven ändern.
Wäre das irgendwie möglich? Wenn ja würde ich mich sehr über jegliche Hilfestellungen freuen!
Liebe Grüße
Paul

Code: Alles auswählen
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
# Größe der Bevölkerung
N=83020000
# Zu Beginn (t=0) Infizierte
Inf=50
#Anfangsbedingungen festlegen:
S0=1-(Inf/N) #Die Bevölkerung wird normiert, d.h. 1=100%
I0=(Inf/N)
R0=0
D0=0
#Modell definieren
#Model
# -----------------------------------------------------
def SIRD(conc, t):
S=conc[0]
I=conc[1]
_=conc[2]
_=conc[3]
#Variablen für das System
a=0.8 #Infizierungsrate
b=0.4 #Rate der Genesung
c=0.01 #Sterberate
#SIRD-System
dS = - a * S * I
dI = a * S * I - b * I -c*I
dR = b*I
dD = c*I
return(dS, dI, dR, dD)
conc0=[S0,I0,R0,D0]
dt=(1/7)
#Zeit in Wochen, Tage eingeben da dt=1/7
t=np.arange(600)*dt
r=integrate.odeint (SIRD, conc0,t)
fig = plt.figure(figsize=(12,4))
plt.plot(t,r[:,0],'b', linewidth =2, label='Gesund, infizierbar')
plt.plot(t,r[:,1],'r', linewidth =2, label='Infiziert')
plt.plot(t,r[:,2],'y', linewidth =2, label='Geheilt, Immun')
plt.plot(t,r[:,3],'g', linewidth =2, label='Verstorben')
plt.xlabel('Wochen')
#Skalierung der y-Achse
plt.ylim(0,1)
#Skalierung der x-Achse
plt.xlim(5,30)
plt.ylabel('Bevölkerungsanteil')
plt.legend()
plt.grid(True)
plt.savefig('XY_time.png', dpi=500)
plt.show()