1次元Ising模型をシミュレーションする.
$$\newcommand{\Expo}[1]{ \mathrm{exp}\Bigl(#1 \Bigr)}$$
$$\newcommand{\optim}[1]{ \underset{#1}{\mathrm{arg \ min}} }$$
目次
1次元Ising模型を解析的に求める
1次元Ising模型
ただしは規格化定数で次で定義される
の場合は,は(正規)ホワイトノイズ,つまり標準正規分布からなる確率分布列であって互いに無相関であるものになります.
分配関数を求める
この小節では,分配関数を実際に求めてみます.分配関数は,定義より
が必要となりますが,対角化によりのとき
で得られます.よって,分配関数が求まりました.
分配関数が求まると,そこから様々な統計量を計算することができます.
分散
分散は次のようにして求まります.
.
共分散
共分散は次のようにして求まります.
1次元Isingモデルの統計量
分散
共分散
Rによるシミュレーション
この小節では,前節で計算した分散,共分散をR, rstanを利用してシミュレーションしてみたいと思います.
シミュレーションの概要は次の通りです.
1. Ising_model_siml.stanで,1次元Ising模型を定義.
2. Ising_model_worksheet.Rで,Ising_model_siml.stanを呼び出して,適当なで乱数発生.
3. 発生させた乱数から,monte carlo原理で分散,共分散をシミュレート.
stanコード
Ising_model_siml.stan
こんな感じです.
Rコード
Ising_model_worksheet.R
シミュレーションの実行は,次のコードです.ここでは,としてみました.
rstanのサンプリングが終わったら,Rで相関係数を出してみましょう.
コンソールに,corrの値(=の近似値)が出力されます.
R.console
R> corr
[1] 0.4249355
ちなみに理論値は,
ですから,誤差は2%程でしょうか.