In [1]:
import matplotlib.pylab as plt
import numpy as np
In [2]:
run 'ferro_ising_exmcmc.py'
In [119]:
# 温度パラメータ
model.betas
Out[119]:
In [57]:
# 横軸に逆温度,縦軸にエネルギーをプロット
# 多分温度1で相転移するはず.最初のトライアルと最後のトライアルをプロットしてみる
plt.plot(model.betas, mclog['Elog'][0,:])
plt.plot(model.betas, mclog['Elog'][4999,:])
plt.grid()
In [59]:
# エネルギーを5000回のトライアルでプロット
for k in range(0, 24, 2):
plt.plot(mclog['Elog'][:,k], alpha=0.6)
plt.grid()
In [121]:
# 平均磁化 <m> をヒストグラムとしてプロット
sbins = np.linspace(-1, 1, 32)
plt.figure()
for k, c in zip((1, 16, 23), ('red', 'purple', 'blue')):
labelstr='Temp. id %d' % (k)
plt.hist(mclog['Slog'][:, k, :].mean(axis=1), color=c, bins=sbins, alpha=0.5, label=labelstr)
plt.grid()
plt.title('Ising Magnetization <m>')
plt.xlabel('magnetization')
plt.ylabel('freq')
plt.legend()
plt.show()
In [93]:
mm = mclog['Slog'].mean(axis=2)
In [115]:
#温度に対する平均磁化の散布図
for k in range(24):
plt.plot(np.repeat(model.betas[k], mm.shape[0]), mm[:, k],'o', alpha=0.2)
plt.grid()
plt.title('Magnetization m vs inverse temperature')
plt.xlabel('inverse of T')
plt.ylabel('Magnetization')
plt.show()