熱力学における組合せ論の問題
何百万もの要素から構成される物理系を組織化する方法はいくつ存在するのでしょうか。この講義では、数学がどのようにしてこのような問いに答えるのかを熱力学の文脈で扱います。原子系におけるエネルギー量子の分布から、大規模な系における可能な配置数の計算に至るまでを対象とします。組合せ論、対数、スターリングの公式といった道具を用い、極めて大きな数を扱い、表面的には手に負えないように見える問題を解決する方法を探究します。
学習目標:
本講義終了時に学生は以下ができるようになる
- 理解する:組合せの問題が熱力学、特に物理系の組織化においてどのように応用されるか。
- 計算する:組合せ数を用いて原子系の可能な配置を求める。
- 適用する:スターリングの公式を用いて複雑な配置のオーダーを推定する。
内容目次:
組合せの問題
大きな数に関する問題
対数とスターリングの公式を用いたオーダー計算
簡略化近似による展開
通常の近似による展開
組合せおよびオーダー計算の例
ケース1: 大きな階乗
ケース2: 大きな組合せ
特定の物理的状況においてよくある問いは、「与えられた系を異なる方法でいくつ組織化できるか」というものです。これらの組合せ的問題は熱力学で頻繁に現れます。最初は単純に見えるものの、アボガドロ数 N_A のような極めて大きな数を取り入れると複雑化し、この規模の大きさに圧倒されることがあります。
組合せの問題
熱力学において組合せを含む問題の規模を理解するために、次の例を考えてみましょう。
例: エネルギー量子に関する組合せ
10個の原子から成る系を仮定します。各原子はエネルギー量子と呼ばれる1単位または0単位のエネルギーのみを保持できます。このとき、(a) 10個のエネルギー量子、(b) 5個のエネルギー量子を持つ場合、それらを異なる方法で分配する方法はいくつ存在するでしょうか。
解答
原子をエネルギー量子を保持できる空きスペースとして表します。もしそのスペースが埋まっていれば、その原子はすでにエネルギー量子を保持していることを意味します。
\displaystyle \binom{n}{k}=\dfrac{n!}{k!(n-k)!}
この計算により、可能な状態の数 \Omega が得られます。
(a) 10個の量子が10個のスペースに分配される場合、それを行う方法は1通りしかありません。したがって、\Omega=1 となります。
\displaystyle \Omega = \binom{10}{10}=\dfrac{10!}{10!(10-10)!} = \dfrac{10!}{10!0!} = 1
(b) 5個の量子が10個のスペースに分配される場合、次の計算を行います。
\begin{array}{rl} \Omega &= \displaystyle\binom{10}{5} \\ \\ &=\dfrac{10!}{5!(10-5)!} = \dfrac{10!}{5!\cdot 5!} \\ \\ &= \dfrac{5! \cdot 6\cdot 7\cdot 8 \cdot 9\cdot 10}{5! \cdot 2\cdot 3\cdot 4\cdot 5} \\ \\ &= \dfrac{ 7\cdot 8 \cdot 9\cdot 10}{ 4\cdot 5} = 7\cdot 2 \cdot 9 \cdot 2 = 252 \end{array}
したがって、252通りの構成が可能です。
大きな数に関する問題
ここまで分析したのは始まりにすぎません。ケース(b)の系を100個の原子と50個の量子に拡張すると、\Omega \approx 10^{28} となります。さらに、1モルの原子で同じ計算を行うと、その結果は想像を絶するものとなります。
対数とスターリングの公式を用いたオーダー計算
\Omega = \binom{n}{k} のような大きな n の値に対して規模を推定したい場合、特に k=n/2 のとき最大値が得られるので、その際にはスターリングの対数近似を用いることが有効です。このような規模の数を扱うために、計算を対数を用いて書き換えることができます。
\displaystyle \ln(\Omega)=\ln\left(\dfrac{n!}{k!(n-k)!}\right)= \ln(n!) - \ln((n-k)!) - \ln(k!)
この式は階乗の対数に対してスターリング近似を適用することで扱うことができます。ここでは、通常形と簡略形の2種類の近似を利用できます。
- 通常近似: \ln(n!) \approx \dfrac{1}{2}\ln(2n\pi) + n\ln(n) - n
- 簡略近似: \ln(n!) \approx n\ln(n) - n
簡略近似による展開
簡略近似を用いると、次の結果が得られます。
\begin{array}{rl} \ln(\Omega) & \approx n\ln(n) - n - (n-k)\ln(n-k) + (n-k) - k\ln(k) + k \\ \\ &= n\ln(n) - (n-k)\ln(n-k) - k\ln(k) \\ \\ &= n\ln(n) - n\ln(n-k) + k\ln(n-k) - k\ln(k) \\ \\ &= \ln\left[ \left( \dfrac{n}{n-k} \right)^n \right] + k\ln\left( \dfrac{n-k}{k} \right) \\ \\ &= \ln\left[ \dfrac{1}{\left(1 - \dfrac{k}{n} \right)^n} \right] + k\ln\left( \dfrac{n}{k} - 1 \right) \end{array}
この近似は大きな n の値を考慮しているため、次の関係を適用します。
\displaystyle \lim_{n\to\infty} \left(1-\dfrac{k}{n} \right)^n = e^{-k}
したがって:
\ln(\Omega) \approx \ln(e^k) + k\ln\left( \dfrac{n}{k} -1 \right) = k + k\ln\left( \dfrac{n}{k} -1 \right)
最後に、対数の底の変換を用いることで次の式が得られます。
\log(\Omega) = \log(e)\ln(\Omega) \approx k\log(e)\left[1 + \ln\left( \dfrac{n}{k} - 1 \right) \right]
これにより、次の結果が導かれます。
\boxed{\Omega \approx 10^{k\log(e)\left[1 + \ln\left( \dfrac{n}{k} - 1 \right) \right]}}
この結果は \Omega の正確な値を与えるわけではありませんが、それを表現するのに必要な桁数を推定することができ、n が大きくなるにつれて精度が向上します。この方法では指数部分のみを計算すればよく、多くの計算機で実行可能です。
さらに、この方法は大きな n に対して \Omega の最大値を素早く推定するのに役立ちます。k=n/2 の場合を考えると、次のようになります。
\text{Max}\left(\Omega\right) \approx 10^{\dfrac{n}{2}\log(e)\left[1 + \ln\left( \dfrac{n}{n/2} - 1 \right) \right]} = 10^{ n\log(e)/2 }
通常近似による展開
通常近似による展開はより正確な結果を与えますが、追加の計算を伴うため、大きな n の値に対してはおおよそ同等の結果となります。この近似の展開は、簡略近似で既に行ったいくつかの計算を再利用する形で、次のような推論になります。
\begin{array}{rcl} \ln(\Omega) & = & \ln\left(\dfrac{n!}{k!(n-k)!}\right)= \ln(n!) - \ln((n-k)!) - \ln(k!) \\ \\ & \approx & \color{red}\dfrac{1}{2}\ln(2n\pi)\color{black} + n\ln(n) - n \\ \\ & & \color{red}-\dfrac{1}{2}\ln(2(n-k)\pi)\color{black} - (n-k)\ln(n-k) + (n-k) \\ \\ & & \color{red}-\dfrac{1}{2}\ln(2k\pi)\color{black} - k\ln(k) + k \end{array}
赤で示された部分は通常近似で追加的に考慮される要素であり、それ以外は簡略近似で得られたものと同じです。これにより次のようになります。
\begin{array}{rcl} \ln(\Omega) & \approx & \color{red}\dfrac{1}{2}\ln\left( \dfrac{2n\pi}{2(n-k)\pi \cdot 2k\pi} \right)\color{black} + k + k\ln\left(\dfrac{n}{k} - 1\right) \\ \\ & = & k + k\ln\left(\dfrac{n}{k} - 1\right) - \dfrac{1}{2}\ln\left(\dfrac{2k\pi(n-k)}{n}\right) \end{array}
次に、対数の底の変換を用いると次のようになります。
\log(\Omega) = \log(e)\ln(\Omega) \approx \log(e) \left[ k + k\ln\left(\dfrac{n}{k} - 1\right) - \dfrac{1}{2}\ln\left(\dfrac{2k\pi(n-k)}{n}\right) \right]
最後に、底を10とする指数を取ることで次が得られます。
\Omega \approx 10^{\log(e) \left[ k + k\ln\left(\dfrac{n}{k} - 1\right) - \dfrac{1}{2}\ln\left(\dfrac{2k\pi(n-k)}{n}\right) \right]}
ここでも前と同様に、k=n/2 としてこの数の最大値を求めることができます。この場合、次の結果が得られます。
\begin{array}{rcl} \text{Max}(\Omega) &\approx & 10^{\log(e) \left[ \dfrac{n}{2} + \dfrac{n}{2}\ln\left(\dfrac{n}{(n/2)} - 1\right) - \dfrac{1}{2}\ln\left(\dfrac{2(n/2)\pi(n-n/2)}{n}\right) \right]} \\ \\ & = & 10^{\log(e) \left[\dfrac{n}{2} - \dfrac{1}{2}\ln\left(\dfrac{n\pi}{2} \right) \right]} = 10^{\log(e)(n-\ln(n\pi/2))/2} \end{array}
組合せ計算およびオーダー推定の例
ケース1: 大きな階乗
\left(10^{50}\right)! のオーダー、すなわちその数を書き表すのに必要な桁数を推定してみましょう。解答
この計算を行うために、次のようにスターリングの公式を用います。
\begin{array}{rl} \ln\left[ \left(10^{50}\right)! \right] &\approx 10^{50}\ln\left(10^{50}\right) - 10^{50}\\ \\ &= \left[\ln\left(10^{50}\right) -1\right]10^{50} \\ \\ &= \left[50\ln(10)-1 \right]10^{50} \\ \\ \end{array}
次に、対数の底の変換を適用します。
\ln\left[ \left(10^{50}\right)! \right] = \dfrac{\log\left[\left(10^{50}\right)!\right]}{\log{e}}
したがって:
\log\left[ \left(10^{50}\right)! \right] \approx \log(e)\left[50\ln(10)-1 \right]10^{50}
最後に、底を10とする指数を適用すると次が得られます。
\left(10^{50}\right)! \approx 10^{\log(e)\left[50\ln(10)-1 \right]10^{50}} = 10^{49,5657 \cdot 10^{50}}
10の上にある指数はオーダーを表しており、\left(10^{50}\right)! の桁数を推定することができます。
ケース2: 大きな組合せ
平均的な家庭にはおよそ12個の照明スイッチがあり、それぞれが点灯または消灯の状態を取ることができます。平均して各家庭には4人が住んでいます。ある都市に500万人の住民がいるとすると、その都市の照明スイッチの半分が点灯している場合、可能な組合せは何通りあるでしょうか。
解答
都市全体のスイッチの総数 n は次のように表されます。
\begin{array}{rcl} n &=&\dfrac{\text{都市の住民数}}{\text{1世帯あたりの人数}} \times \text{1世帯あたりのスイッチ数} \\ \\ &=& \dfrac{5\cdot 10^6}{4}\cdot 12 = 15\cdot 10^6 \end{array}
スイッチの半分が点灯しているすべてのミクロ状態から構成されるマクロ状態は、最も多くの構成数を持つマクロ状態に一致します。この最大数を \Omega_{max} と表すと、それぞれの方法で次の推定が得られます。
- 通常近似: \Omega_{max} = 10^{\log(e)\left[15\cdot10^6 - \ln\left(15\pi\cdot10^6 / 2 \right) \right]/2} \approx 10^{6.514.413,542}
- 簡略近似: \Omega_{max} = 10^{\log(e)\left[15\cdot10^6 \right]/2} \approx 10^{6.514.417,229}
両近似の間にはおよそ4桁の差がありますが(かなり大きいように見えるかもしれません)、650万桁を超えるオーダーに比べれば実際には重要ではありません。
