- #1
ChrisVer
Gold Member
- 3,378
- 464
I have the following program that simulates a stochastic system of 400 particles. What I want to do now is separate the 200x200 grid into 2x2 smaller grids, out of which I will calculate each probability:
[itex]P_i= \frac{\sum_{\text{atoms}}}{4}[/itex]
and from which in each step I'll be able to determine the entropy...
However I don't see how I can make the division to sub-grids... any help?
In the second part of code quote I show what I've tried to implement..but I don't think it works.
[itex]P_i= \frac{\sum_{\text{atoms}}}{4}[/itex]
and from which in each step I'll be able to determine the entropy...
However I don't see how I can make the division to sub-grids... any help?
In the second part of code quote I show what I've tried to implement..but I don't think it works.
Python:
import sys
from pylab import *
from random import randintion() #allow animation
figure(figsize=(10,10)) #setup graph window
#Setup the problem
atoms = ones([400,2])*100 #define all droplet coords to be at point 100,100
line, = plot(atoms[:,0], atoms[:,1], 'ro')
xlim(0,200)
ylim(0,200)
draw()
wait= raw_input("Press return to continue")
#time steps to take input
N= int(sys.argv[1])
#loop over steps
for i in range(N):
#Go through all atoms
for j in range(400):
#move each atom
atoms[j,0] += randint(-1,1)
atoms[j,1] += randint(-1,1)
#check boundary
x,y = (atoms[j,0], atoms[j,1])
if x==200: atoms[j,0] = 198
elif x==0: atoms[j,0] = 2
if y ==200: atoms[j,1] = 198
elif y==0: atoms[j,1] =2
#see how things look now
line.set_xdata(atoms[:,0])
line.set_ydata(atoms[:,1])
draw()
wait= raw_input("Press Return to exit")
Python:
xs= atoms[:,0]
ys= atoms[:,1]
P=zeros([100,100])
for i in range(0,200,2):
for j in range(0,200,2):
P[i/2,j/2] = xs[i]+xs[i+1] +ys[j] + ys[j+1]
P=P/4.
Entropy=0.0
for i in range(100):
for j in range(100):
if P[i,j]!=0: Entropy+= P[i,j]*log(P[i,j])
else: Entropy+=0.0