ミクロカノニカル分布による計算

[] [] []


等間隔エネルギー準位の理想気体の温度τ(U,N)

ミクロカノニカル分布で計算すると

MB統計:

BE統計とFD統計は閉じた式では表せないが、

漸化式で計算できる。

ミクロカノニカル分布では、与えられた全粒子数Nと全エネルギーUでとりうる状態数g(U,N)をかぞえて、エントロピー σ(U,N)=log g(U,N)から温度τ=1/σ'(U)を計算する。なお、ここでは簡単のため、エネルギーの単位を間隔Δεとし、Uを自然数として扱う

MB統計では「全エネルギーUN個の区別できる粒子に分ける方法の数」をかぞえる

例えばU=4N=2のときは次の3とおり。

これは、一列に並べたU個の球をN個に仕切る(U-1箇所からN-1箇所を選ぶ)方法の数だから

エントロピーσ

温度τの逆数はエントロピーをUで微分したものだが、差分で計算すると

ここでUが最小値Nより少し大きければ1<τになるから、温度は大体粒子1個あたりのエネルギーになる。

(∵ U>(N-1)/(1-e-1)=1.58(N-1)ならば1<τ)

◇◇

BE統計では粒子が区別できないので「全エネルギーUN個の自然数に分ける方法の数」をかぞえる

例えばU=4N=2のときは次の2とおり。

これは、いわゆる分割数P(U,N)である。

分割数は閉じた式で表せないが、漸化式で計算することはできる。(2項係数,スターリング数,分割数)

int main() {

  unsigned long long p[N+1][M+1];

  /* P(n,m)の計算と表示 */

  for (int n=1; n<=N; n++) {

    printf("n=%0d",n);

    for (int m=1; m<=M; m++) {

      if(m==1) {

        p[n][m] = 1;

      } else if(m<=n-1) {

        p[n][m] = p[n-1][m-1] + p[n-m][m];

      } else if(m==n) {

        p[n][m] = 1;

      } else {

        p[n][m] = 0;

      }

      printf(" %0llu",p[n][m]);

    }

    printf("\n");

  }

  return 0;

}

◇◇◇

FD統計ではBE統計と同じく粒子は区別できず、さらに1つのエネルギー準位に1個しか入れないので「全エネルギーUN個の相異なる自然数に分ける方法の数」をかぞえる

例えばU=4N=2のときは次の1とおり。

これは、相異なる自然数にわける分割数Q(U,N)である。

これも閉じた式で表せないが、漸化式で計算することはできる。

int main() {

  unsigned long long q[N+1][M+1];

  unsigned long long r[N+1][M+1];

  /* 初期化 */

  for(int n=0; n<=N; n++) {

    for(int m=0; m<=M; m++) {

      if(m==0 && n==0) q[0][0] = 1;

      else             q[n][m] = 0;

    }

  }

  /* 和因子の最大がkのとき */

  for(int k=1; k<=N; k++) {

    /* QをバッファRへコピー */

    for(int n=0; n<=N; n++) {

      for(int m=0; m<=M; m++) {

        r[n][m] = q[n][m];

      }

    }

    /* バッファRを使ってQを更新 */

    for(int n=0; n<=N-k; n++) {

      for(int m=1; m<=M; m++) {

        q[n+k][m] += r[n][m-1];

      }

    }

  }

  /* Q(n,m)の表示 */

  for(int n=0; n<=N; n++) {

    printf("n=%0d",n);

    for(int m=1; m<=M; m++) {

      printf(" %0llu",q[n][m]);

    }

    printf("\n");

  }

  return 0;

}

 ◇◇◇◇

結局、エントロピーσ(U,N)=log(g(U,N))を計算すると次のグラフのようになる。ただし点線は、高温のときにMBBE,FDと一致するようにg(U,N)を「N個の区別できる粒子の並び方N!」で割ったものである。

これをUについて差分をとれば温度τUの正確なグラフが描ける。


[] [] []