<分区> 分区>
所以前几天我因为打字错误而陷入困境。我没有使用 i += 1 遍历我的嵌套循环,而是使用 i=+1。直到我开始打印步数并看到它连续打印第 1 步时,我才注意到这一点。因此,我得到的情节没有任何意义。
但是我不明白的是为什么我得到了任何情节,而且代码没有陷入无限循环?另外,我应该只是在步数进行到一半之后才计算数据,所以我根本不明白我是怎么有数据的。还是 i =+ 1 有别的意思?我似乎在网上找不到太多关于 i=+1 的信息
这是原始代码的精简版:
for temp in np.linspace(1.0,4.0,num=100):
energyarray = []
for step in np.arange(0, sw*2):
for i in range(n-1):
for j in range(n-1):
H_old = -J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])
H_new = J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])
del_H = H_old-H_new
if del_H >= 0:
matrix[i,j] = -matrix[i,j]
elif del_H < 0:
prob = np.exp((del_H)/(temp))
rand = random.random()
if rand < prob:
matrix[i,j] = -matrix[i,j]
else:
matrix[i,j] = matrix[i,j]
if step >= (sw):
Ene = EnergyCal(matrix)
energyarray.append(Ene)
step =+ 1
energy_sum = []
energy_sum = sum(energyarray)
plt.figure(10)
plt.plot(temp, energy_sum, 'ro')
plt.show()
