-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathidealGas.py
72 lines (55 loc) · 1.27 KB
/
idealGas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from math import *
import numpy as np
import matplotlib as mpl
mpl.use('QT4Agg')
import matplotlib.pyplot as plt
from random import *
n=40
vel=[]
E=10
for i in range(40):
# r= 4*random()-2
vel.append(((2*E)**(0.5))/40)
# print vel[0]
# print type(vel[0])
Energies=[]
demon_energy=0
total=0
def energy_change(initial,final):
delta= (final**2 - initial**2)/2
return delta
y=[]
energy=[]
for k in range(0,100,1):
E=10
for j in range(0,10000,1):
total=0
p_no= 0+(int)(40*random())
r= 4*random()-2.0
ch=vel[p_no]+r
if energy_change(vel[p_no],ch) <= 0:
demon_energy -= energy_change(vel[p_no],ch)
E+=energy_change(vel[p_no],ch)
vel[p_no]+=r
else :
if demon_energy >= energy_change(vel[p_no],ch):
demon_energy-=energy_change(vel[p_no],ch)
E+=energy_change(vel[p_no],ch)
vel[p_no]+=r
energy.append(E)
y.append(j)
total+=E
break
# Energies.append(total/10000)
# y.append(k)
# xval= np.arange(-10., 10.,0.01)
# axes = plt.gca()
# axes.set_xlim([-10,10])
# axes.set_ylim([-10,10])
#print xval*(1.0-xval)
# plt.plot(xval,np.exp(xval)-np.sin(pi*xval), 'b')
plt.plot(y,energy,'b')
# plt.xticks(np.arange(min(xval), max(xval)+1, 2))
# plt.axhline(0, color='black')
# plt.axvline(0,color='black')
plt.savefig("IdealGasEnergy.png")