ゆるふわブログ

東京大学理科 I 類 2 年の学生です.プログラミング,大学の勉強,日常生活で感じたことをゆるふわに書いていけたらなと思います.技術的に拙いところがあっても温かい目で見守っていただければ幸いです.

転送行列の意味 (1 次元 Ising モデルの厳密解)

こんにちは!Ysmr-Ry です!

最近グラフに関する記事を読んだので,それに関連することを書こうと思います.
最近僕は統計力学という物理の 1 分野を勉強しているのですが,その中でグラフ的な考え方が登場したのでそれを紹介しようと思います.

それが転送行列というやつです.

僕の読んでいる本では,これを使った方法がグラフ的な説明なしにさも "当然" というかのように書かれていたので,そのあたりを補完できたらと思います.
(個人的には) このような行列の見方はあまりしないので,僕と同じように戸惑う人もいるのかなと思いまして.

今回は割と難しい (?) ので,わかってくれる人にわかってもらえれば満足という感じです ( ごめんなさいなんでも(ry )

物体の磁性と Ising モデル

統計力学の応用の中で魅力的なものに,物体の磁性があります.物体の磁性とは物体が磁石にくっつくかということです.
物体の磁性の起源は電子のスピンと言われるものです.
スピンは簡単に言えば電子が上向きか下向きかということで,スピン変数  \sigma = \pm1 で表し, \sigma=+1 ならば上向き, \sigma=-1 ならば下向きということにします.
簡単のため,ここでは 1 次元,つまり  L 個の電子が一列に並んでいる状況を考えます.
例えばこんな感じです.

f:id:Ysmr_Ry:20170705204451p:plain

上向き・下向きの矢印が電子を表しています.この場合は  L=5 です.
以下周期的境界条件を考え,この場合ならば  L=5 の列が無限に繰り返されているという状況を考えます.
すると,左から  i 番目のスピン変数を  \sigma_i と表すと, \sigma_{L+1} = \sigma_1 となります.
さて,Ising モデルは,これらのスピンのうち,隣り合っているもの同士が相互作用を持つ時を考える簡単なモデルです.
スピン配位  (\sigma_1,\cdots,\sigma_L) に対し,そのエネルギー  E_{(\sigma_1,\cdots,\sigma_L)} は以下のように定義されます.

f:id:Ysmr_Ry:20170705205232p:plain

 J は交換相互作用定数という物質固有の正の定数です.
第 2 項は磁場  \vec{H} = (0,0,H) が物質にかかった時の各スピンに対応するエネルギーです.
第 1 項が隣り合うスピン同士の相互作用に対応しています.
今,スピン変数は  \pm1 の値しか取らないため,その積  \sigma_1\sigma_2 \sigma_1, \sigma_2 が同じ値ならば 1,違うなら -1 になります.よって, -J\sigma_1\sigma_2 は同じ値ならば  -J,違うならば  +J になります.
エネルギーは低いほど安定*1ですから,隣り合うスピンが同じ方が安定になるようになっています.このように相互作用を組み込むのが Ising モデルです.

転送行列が出てくるまで

先のエネルギーの式を考えやすいように少し変形しましょう.周期的境界条件が成り立っていますから,

f:id:Ysmr_Ry:20170705210600p:plain

です.
ここで,カノニカル分布を考えます.
カノニカル分布では,エネルギー  E_i に対する確率を  \frac{e^{-\beta E_i}}{\sum_i e^{-\beta E_i}} とします.
 Z(\beta) = \sum_i e^{-\beta E_i} は確率の総和を 1 にするためのつじつま合わせの定数 (規格化定数) で,分配関数と呼ばれています.
カノニカル分布は, U = -\frac{\partial}{\partial\beta} \log Z(\beta),\ F = -\frac{1}{\beta} \log Z(\beta) のように分配関数  Z(\beta) からマクロな熱力学関数をひねり出すので,分配関数が解析的に閉じた形で表せれば勝ちなのです.
この場合の分配関数は,

f:id:Ysmr_Ry:20170705211844p:plain

と変形できます.あとはこの積を解析的に表せば良いのです.
(ちなみに  \prod \sum の積バージョンです.)
ここで, \sigma_i, \sigma_{i+1} = \pm1 しかとりませんから, f(\sigma_i,\sigma_{i+1}) のとり得る値は  f(\pm1,\pm1) の 4 通りです.
これを 2 次の正方行列で表すと,

f:id:Ysmr_Ry:20170705212503p:plain

となります.この行列  T を転送行列というのです.

転送行列の意味

さて,この行列を使って先ほどの積を計算するのですが,まず, \prod 以降の式に注目してみましょう.

f:id:Ysmr_Ry:20170705213013p:plain

となっています. f の引数に着目すると, (\sigma_1,\sigma_2) \to (\sigma_2,\sigma_3) \to \cdots \to (\sigma_{L-1},\sigma_L) \to (\sigma_L,\sigma_1) と, \sigma_1 \to \sigma_2 \to \cdots \to \sigma_L \to \sigma_1 のような値の列,道順のようなものが決まれば  \prod で積をとっている各々の項は決まり,全ての道順, 2^L 通り全てについて総和を取れば良いことがわかります.
例えば, L=5 の時, +1\to-1\to+1\to+1\to-1\to+1 という道順がありえます.
(上の図に対応しています)
この時,対応する項は  f(+1,-1)\,f(-1,+1)\,f(+1,+1)\,f(+1,-1)\,f(-1,+1)\,f(+1,+1) です.
また,道順の総数は, \sigma_i\,(i=1,2,\cdots,5) の各々が  \pm1 の 2 通りの値を取りうるので,重複順列より, 2^5=32 通りです.
それら各々に対応する項をこの要領で求め,総和を求めるということです.
これをグラフに帰着します.
下図のように +1, -1 の 2 つの頂点を持つグラフを考えます.

f:id:Ysmr_Ry:20170705215510p:plain

有限オートマトン的な.
辺を通ったら,辺の上に書いてある式を掛けると約束します.
すると, +1\to-1\to+1\to+1\to-1\to+1 とこのグラフ上を移動することが, f(+1,-1)\,f(-1,+1)\,f(+1,+1)\,f(+1,-1)\,f(-1,+1)\,f(+1,+1) の項を作ることに対応します.
さらに,転送行列  T がこのグラフの隣接行列になります.
グラフに対する隣接行列  A=(a_{ij})とは,上のグラフで言えば,頂点 1 を 1 番,頂点 -1 を 2 とすると, a_{ij} = (\mbox{頂点 i から 頂点 j に行くコスト (ここでは通ったら掛ける式)}) と定義される行列のことです.
隣接行列には便利な性質があって, A^n を考えると,その  (i,j) 成分は頂点 i から頂点 j まで,合計辺を  n 本通って行く全ての道順に対応する項の和となります*2
よって, \sigma_1 \to \sigma_2 \to \cdots \to \sigma_L \to \sigma_1 の道順は出発した頂点と同じ頂点に戻る長さ  L の道順 (これを閉路といいます) なので, T^L (1,1) 成分と  (2,2) 成分を足したもの,つまり, \mathrm{Tr}(T^L) を求めればよいのです.
ここまでが転送行列の意味 (この記事のメインテーマ) です.あとは,線形代数の知識をもとに計算をするだけです.

トレースを対角化によって求める

対角化は大学初年時で習う線形代数の中で 1 番大事と言っても過言ではない操作です.
行列  A に対する対角化とは, D=P^{-1}AP が対角行列*3となるような正則な行列  P を見つけることです.
逆に言えば, A=PDP^{-1} と表せるということです.今,転送行列  T は対称行列なので,直交行列  P を用いて  T=PDP^{-1} と対角化できます.
また, \mathrm{Tr}(AB) = \mathrm{Tr}(BA) が成り立つので,

f:id:Ysmr_Ry:20170705221848p:plain

となります.ただし,対角行列の表す線形変換は拡大変換であるため, D^L は単に  D の対角成分 (固有値といいます) を  L 乗するだけで OK です.
これが分配関数になるので,あとは具体的に転送行列の固有値を求め,分配関数から熱力学関数をひねり出せばよろしいのです.
やってみると,

f:id:Ysmr_Ry:20170705224550p:plain

と,磁化率などが不連続点を持たないため,1 次元 Ising モデルでは相転移は起こらないことがわかります.

おわり

どうだったでしょうか…
これ,決して簡単な話ではないと思うのですよ.現に Ising の学位論文ではこんなスマートな方法は使ってなくて,分配関数の求め方がかなり複雑になっているそうですし.
どいつもこいつも「え?こんなの当然わかるよね?」みたいに書いてあるのがなんかなぁと思ったのでまとめてみました.
誰かしらの役に立てば幸いです…
(統計力学勉強中なので間違えてるところがあったら教えてください)

例によって,コメント・ブクマ・スターとくれると泣きながら飛び上がって喜ぶのでよろしければレスポンスをください.

*1:エネルギーは変化する能力なので,それが低ければ変化しにくく安定.

*2:行列の積の定義を考えるとわかります. A^2 (i,j) 成分は  \sum_{k=1}^N a_{ik}a_{kj} なので,これで総和をとっている各項は頂点 i → 頂点 k → 頂点 j と行く通り数であり,k を全ての頂点について動かしているので,頂点 i → 頂点 j へと行く長さ 2 の全ての道順を試していることになります.以降帰納的に示せます.

*3:対角成分のみがあるような行列, \begin{pmatrix}\lambda_1 & 0 \\ 0 & \lambda_2\end{pmatrix} のような行列のことです.