Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss17:musterbildende_chemische_systeme [2017/06/08 17:17] fmbk25 |
ss17:musterbildende_chemische_systeme [2017/06/08 17:31] (aktuell) fmbk25 |
||
---|---|---|---|
Zeile 14: | Zeile 14: | ||
* komplexere Musterbildungen durch ändern der Variablen | * komplexere Musterbildungen durch ändern der Variablen | ||
- | musterbildende_chemische_systeme \ Protokoll 1 | ||
- | Protokoll 1.6.17:\\ | ||
- | Diffusionscode: \\ | ||
- | <code> | ||
- | import matplotlib.pyplot as plt | ||
- | import numpy as np | ||
- | from copy import deepcopy | ||
- | x0=0 | + | [[ss17:protokolle_muster|Protokolle]] |
- | x1=10 | + | |
- | dx = 0.1 | + | |
- | dt=0.0001 | + | |
- | D= 10.0 | + | |
- | def init(): | + | |
- | #sin | + | |
- | sigma = 0.8 | + | |
- | a = np.linspace(x0,x1,(x1-x0)/dx) | + | |
- | #sin | + | |
- | #a = 10*np.sin(a) | + | |
- | #gauss | + | |
- | a = 1/sigma*np.exp(-0.5*((a-(x1-x0)/2)/sigma)**2) | + | |
- | return a | + | |
- | |||
- | def getnewtimestep(a): | ||
- | b=[0]*len(a) | ||
- | for i in range(1,len(a)-1): | ||
- | b[i] = a[i] + D*dt/dx**2*(a[i+1]+a[i-1]-2*a[i]) | ||
- | b[0] = a[0] +D*dt/dx**2 * (a[1]-2*a[0]) #Randpunkte muessen gesondert behandelt werden | ||
- | b[-1] = a[-1] + D*dt/dx**2 * ( a[-2] - 2*a[-1]) #Randpunkte muessen gesondert behandelt werden | ||
- | return b | ||
- | |||
- | |||
- | |||
- | |||
- | a= init() | ||
- | N = 10000 | ||
- | |||
- | for i in range(N): | ||
- | if i % (N/10)==0: | ||
- | plt.plot(a, label="t= " + str(i)) | ||
- | a = getnewtimestep(a) | ||
- | plt.legend() | ||
- | #plt.ylim([0,10]) | ||
- | plt.show() | ||
- | </code> | ||
- | |||
- | Ansonsten: den Diffusionscode verändert (Betrag, Gerade, Anfangswerte verändert) | ||
- | game of life angefangen | ||