%pylab inline import numpy as np import matplotlib.pyplot as plt x = np.linspace(0.,1) v = 0*x u = np.exp(-100*(x-0.5)**2) plt.plot(x,u) tfinal = .2 dx = x[1]-x[0] dt = 0.5*dx nsteps = int(round(tfinal/dt)) for i in range(nsteps): # Diffusion v[1:-1] = v[1:-1] + dt/dx**2 * (u[2:] - 2*u[1:-1] + u[:-2]) # Reaction u = u + dt*v plt.plot(x,u)