importnumpyasnpimportmatplotlib.pyplotasplttfinal=1000time=np.arange(tfinal+1)ntimes=len(time)npart=500ndim=2D=2v=0# drift term is v_x=v, v_y=vnp.random.seed(0)x=np.zeros((ntimes,npart,ndim))S=np.zeros((ntimes,npart,ndim))rsq=np.zeros((ntimes,npart))drsqD=np.zeros((ntimes,npart))foriinrange(ntimes-1):ranstep=np.sqrt(2*D)*np.random.randn(npart,ndim)location=x[i,:,:]+v+ranstepx[i+1,:,:]=locationpartial=S[i,:,:]+1/(2*D)*ranstepS[i+1,:,:]=partialrsq[i+1,:]=np.sum(location**2,axis=1)drsqD[i+1,:]=2*np.sum(location*partial,axis=1)mrsq=np.mean(rsq,axis=1)dmrsqD=np.mean(drsqD,axis=1)# Plot the mean of the r^2 displacementplt.figure()plt.plot(time,mrsq)plt.show(block=False)# Plot the derivative with respect to diffusivity of the mean of the r^2 displacementplt.figure()plt.plot(time,dmrsqD)plt.show(block=False)# Plot a typical particle trajectoryplt.figure()particle=1traj=x[:,particle,:]plt.plot(traj[:,0],traj[:,1],'-o',mfc='none')plt.show(block=False)# Save data into a single .dat filedata1=np.column_stack((time,mrsq,dmrsqD))withopen("brownian2d.dat","w")asf:np.savetxt(f,data1,fmt='%f',header="data1")f.write("\n\n")np.savetxt(f,traj,fmt='%f',header="trajectory")