Lsg Schnittstellenmodul Aufgabe 11

155 days ago by Tobi@sagemath

################################################################ #Vergleich zwischen kurzen und langen Zeitschritten bei Röteln ################################################################ N=20 dt1 =1. #Zeitschritt ein Tag dt2 =1./24 #Zeitschritt eine Stunde a=1./11*6.8 b=1./11 S=[9000] I=[1000] R=[0] n=S[0]+I[0]+R[0] #Setze identische Startwerte für zwei verschiedene Arrays S1=[S[0]] I1=[I[0]] R1=[R[0]] S2=[S[0]] I2=[I[0]] R2=[R[0]] for i in range(N/dt1): S1.append(S1[i]-a/n*S1[i]*I1[i]*dt1) I1.append(I1[i]+a/n*S1[i]*I1[i]*dt1-b*I1[i]*dt1) R1.append(R1[i]+b*I1[i]*dt1) for i in range(N/dt2): S2.append(S2[i]-a/n*S2[i]*I2[i]*dt2) I2.append(I2[i]+a/n*S2[i]*I2[i]*dt2-b*I2[i]*dt2) R2.append(R2[i]+b*I2[i]*dt2) splot=list_plot(zip(srange(0,N,dt1),S1)) iplot=list_plot(zip(srange(0,N,dt1),I1)) rplot=list_plot(zip(srange(0,N,dt1),R1)) splot+=list_plot(zip(srange(0,N,dt2),S2), rgbcolor='red') iplot+=list_plot(zip(srange(0,N,dt2),I2), rgbcolor='red') rplot+=list_plot(zip(srange(0,N,dt2),R2), rgbcolor='red') show(splot) show(iplot) show(rplot) 
       




############################################################################## #Vergleich zwischen kurzen und langen Zeitschritten bei der schnellen Grippe ############################################################################## N=20 dt1 =1. #Zeitschritt ein Tag dt2 =1./24 #Zeitschritt eine Stunde a=1./2*6.8 b=1./2 S=[9000] I=[1000] R=[0] n=S[0]+I[0]+R[0] #Setze identische Startwerte für zwei verschiedene Arrays S1=[S[0]] I1=[I[0]] R1=[R[0]] S2=[S[0]] I2=[I[0]] R2=[R[0]] #Berechne die beiden Listen rekursiv: for i in range(N/dt1): S1.append(S1[i]-a/n*S1[i]*I1[i]*dt1) I1.append(I1[i]+a/n*S1[i]*I1[i]*dt1-b*I1[i]*dt1) R1.append(R1[i]+b*I1[i]*dt1) for i in range(N/dt2): S2.append(S2[i]-a/n*S2[i]*I2[i]*dt2) I2.append(I2[i]+a/n*S2[i]*I2[i]*dt2-b*I2[i]*dt2) R2.append(R2[i]+b*I2[i]*dt2) splot=list_plot(zip(srange(0,N,dt1),S1)) iplot=list_plot(zip(srange(0,N,dt1),I1)) rplot=list_plot(zip(srange(0,N,dt1),R1)) splot+=list_plot(zip(srange(0,N,dt2),S2), rgbcolor='red') iplot+=list_plot(zip(srange(0,N,dt2),I2), rgbcolor='red') rplot+=list_plot(zip(srange(0,N,dt2),R2), rgbcolor='red') show(splot) show(iplot) show(rplot) 
       




########################## #Ausbreitung von Windpocken ########################## N=100 dt=1./24 #Rechne zur Sicherheit in Stundenschritten a=1./5*11.3 b=1./5 S=[80000000] I=[100] R=[0] n=S[0]+I[0]+R[0] for i in range(N/dt): S.append(S[i]-a/n*S[i]*I[i]*dt) I.append(I[i]+a/n*S[i]*I[i]*dt-b*I[i]*dt) R.append(R[i]+b*I[i]*dt) if I[i+1]<1: #Sobald weniger als eine Person krank ist nehme ich an, dass sich die Krnakheit ausgerottet hat print i*dt #gebe in diesem Fall die Anzahl der Tage aus 
       
93.0000000000000
94.0000000000000
95.0000000000000
96.0000000000000
97.0000000000000
98.0000000000000
99.0000000000000
93.0000000000000
94.0000000000000
95.0000000000000
96.0000000000000
97.0000000000000
98.0000000000000
99.0000000000000
#Nach etwa 100 Tagen haben sich die Windpocken also selbst ausgerottet