7장 — 볼츠만 분포

열원: 덩어리 하나마다 같은 비율로

B가 작을 때는 흔들리던 비율이 B를 키우자 한 값으로 고정되었다. 무엇이 이 비율을 일정하게 만들고, 그 값 1/2은 어디서 왔을까?

이웃한 두 줄의 비

A가 덩어리를 하나 더 가지면 B는 하나를 덜 가진다. 그러므로 표에서 이웃한 두 줄의 확률의 비는 B가 덩어리를 하나 더 내줄 때 B의 경우의 수가 몇 배로 줄어드는지와 같다. B가 가진 덩어리를 m개라 하면 이 비는 W_B(N_B, m − 1)/W_B(N_B, m) = m/(m + N_B − 1)로 간단히 계산된다. B가 작을 때는 A에게 덩어리를 몇 개만 내줘도 m이 6에서 1까지 크게 변하므로, 비도 6/8 = 0.75에서 1/3까지 따라 변한다. B가 클 때는 사정이 다르다. A가 덩어리를 다섯 개 가져가도 B의 m은 1,000에서 995로 바뀔 뿐이고, 비는 1000/1999와 995/1994로 둘 다 1/2에서 소수 셋째 자리까지만 어긋난다.

직접 움직여 보기열원 크기와 확률의 비새 창에서 열기 ↗

이 비를 로그로 읽으면 뜻이 더 분명해진다. 비가 1/2이라는 것은 B가 덩어리 하나를 내줄 때마다 ln W_B가 ln 2 = 0.693씩 줄어든다는 뜻이다. 에너지를 조금 더 넣었을 때 ln W가 늘어나는 비율, 곧 ∂ ln W/∂E를 역온도 β라 부르므로, 0.693은 덩어리 하나를 에너지 단위로 잰 B의 역온도다. 그러니 A의 확률은 덩어리 하나마다 e^(−β)배로 줄어들고, 그 β는 A가 아니라 B의 것이다.

연속 에너지로 적기

덩어리가 아니라 연속적인 에너지로 적어도 같은 논리가 통한다. A가 에너지 E_A를 가지면 B에는 E_전체 − E_A가 남고, A가 그 상태에 있을 확률은 W_B(E_전체 − E_A)에 비례한다. A의 에너지가 B에 비해 아주 작으면 ln W_B를 E_전체 근처에서 직선으로 근사해도(1차 테일러 전개) 충분하다.

ln⁡WB(E전체−EA)≈ln⁡WB(E전체)−β EA,β=∂ln⁡WB∂EB\ln \textcolor{#d62728}{W_B}(\textcolor{#ff7f0e}{E_{\text{전체}}} - \textcolor{#ff7f0e}{E_A}) \approx \ln \textcolor{#d62728}{W_B}(\textcolor{#ff7f0e}{E_{\text{전체}}}) - \textcolor{#8c564b}{\beta}\, \textcolor{#ff7f0e}{E_A}, \qquad \textcolor{#8c564b}{\beta} = \frac{\partial \ln \textcolor{#d62728}{W_B}}{\partial \textcolor{#ff7f0e}{E_B}}
WB큰 계 B의 경우의 수E전체A와 B의 에너지 합 (고정)EA작은 계 A의 에너지EBB의 에너지βB의 역온도 (에너지를 조금 더 넣을 때 ln⁡WB가 늘어나는 비율)\begin{array}{ll} \textcolor{#d62728}{W_B} & \text{큰 계 B의 경우의 수} \\ \textcolor{#ff7f0e}{E_{\text{전체}}} & \text{A와 B의 에너지 합 (고정)} \\ \textcolor{#ff7f0e}{E_A} & \text{작은 계 A의 에너지} \\ \textcolor{#ff7f0e}{E_B} & \text{B의 에너지} \\ \textcolor{#8c564b}{\beta} & \text{B의 역온도 (에너지를 조금 더 넣을 때 } \ln \textcolor{#d62728}{W_B} \text{가 늘어나는 비율)} \end{array}

양변에 지수를 취하면 W_B(E_전체 − E_A)는 e^(−βE_A)에 비례하고, 따라서 A의 확률도 e^(−βE_A)에 비례한다. 버린 다음 항은 E_A²에 β가 B의 에너지에 따라 변하는 빠르기를 곱한 것인데, B가 A보다 N_B배 크면 이 빠르기는 대략 1/N_B에 비례해 작아진다. 방에 둔 커피 한 잔이 식는 동안 방의 온도가 거의 변하지 않는 것과 같은 이야기다. 이처럼 에너지를 주고받아도 온도가 변하지 않을 만큼 큰 계를 열원 (온도를 정해 주는 큰 계, heat reservoir)이라 한다.

이 계산은 A가 한 미시상태에 있을 확률을 센 것이다. A에 에너지가 같은 미시상태가 여럿 있으면, 그 하나하나가 똑같이 e^(−βE_A)의 비중을 받는다. 정리하면 큰 열원과 에너지를 주고받는 계가 에너지 E인 미시상태에 있을 확률은 e^(−βE)에 비례하고, β는 열원의 역온도다. 지수함수는 작은 계의 성질에서 나온 것이 아니라, 에너지를 내줄 때마다 같은 비율로 줄어드는 열원의 경우의 수에서 나왔다.

앞 절의 두 표를 로그로 다시 그린 것. 칸 1,000개짜리 열원(분홍)에서는 A가 덩어리를 하나 더 가질 때마다 ln(확률)이 0.693씩 줄어 곧은 선이 되고, 그 기울기에 마이너스를 붙인 값이 열원의 β다. 칸 3개짜리 열원(회색 점선)에서는 줄어드는 폭이 덩어리마다 달라 선이 휜다.
앞 절의 두 표를 로그로 다시 그린 것. 칸 1,000개짜리 열원(분홍)에서는 A가 덩어리를 하나 더 가질 때마다 ln(확률)이 0.693씩 줄어 곧은 선이 되고, 그 기울기에 마이너스를 붙인 값이 열원의 β다. 칸 3개짜리 열원(회색 점선)에서는 줄어드는 폭이 덩어리마다 달라 선이 휜다.
flowchart LR
  A["전체 A + B<br/>바깥과 에너지 교환 없음"] --> B["전체의 미시상태는<br/>모두 같은 확률"]
  B --> C["A가 상태 i일 확률<br/>∝ W_B(E전체 − Eᵢ)"]
  C --> D["B가 크면<br/>ln W_B ≈ 상수 − βEᵢ"]
  D --> E["pᵢ ∝ e^(−βEᵢ)<br/>β는 B의 것"]
  E --> F["합이 1이 되게<br/>나눔"]

지수함수는 네 번째 상자, 곧 열원의 ln W를 직선으로 근사하는 자리에서 들어온다.

코드로 확인하기: 열원의 경우의 수에서 지수가 나온다

앞 절의 두 표(열원이 칸 3개·덩어리 6개일 때와 칸 1,000개·덩어리 1,000개일 때)를 코드로 다시 만들어 보자. 칸 하나인 계 A와 칸 NB개인 열원 B가 덩어리 q개를 나눠 가질 때 A가 덩어리 qA개를 가질 확률을 정확히 세고, 열원이 덩어리 하나를 내줄 때 ln W가 줄어드는 양을 β로 삼아 지수 분포와 나란히 출력한다.

from math import comb, log, exp

def W(N, q):                          # 칸 N개에 덩어리 q개를 담는 방법의 수
    return comb(q + N - 1, q)

def small_system(NB, q, show=6):
    """칸 1개(계 A)와 칸 NB개(열원 B)가 덩어리 q개를 나눠 가질 때
    A가 덩어리 qA개를 가질 확률과, 이웃한 확률의 비"""
    w = [W(NB, q - qA) for qA in range(q + 1)]   # A 쪽은 담는 방법이 1가지
    Z = sum(w)
    beta = log(W(NB, q)) - log(W(NB, q - 1))     # 열원이 덩어리 하나를 내줄 때 ln W 감소량
    print(f"NB={NB}, q={q}, 열원의 β = {beta:.4f}")
    for qA in range(show):
        print(qA, round(w[qA] / Z, 4), round(w[qA + 1] / w[qA], 4),
              round(exp(-beta * qA) * (1 - exp(-beta)), 4))   # 마지막 값: 지수 분포

small_system(3, 6)
small_system(1000, 1000)
# NB=3, q=6, 열원의 β = 0.2877
# 0 0.3333 0.75 0.25
# 1 0.25 0.7143 0.1875
# 2 0.1786 0.6667 0.1406
# 3 0.119 0.6 0.1055
# 4 0.0714 0.5 0.0791
# 5 0.0357 0.3333 0.0593
# NB=1000, q=1000, 열원의 β = 0.6926
# 0 0.5 0.5003 0.4997
# 1 0.2501 0.5 0.25
# 2 0.1251 0.4997 0.1251
# 3 0.0625 0.4995 0.0626
# 4 0.0312 0.4992 0.0313
# 5 0.0156 0.499 0.0157

열원이 칸 3개뿐이면 정확한 확률(출력 줄의 둘째 값)과 지수 분포(넷째 값)가 0.333 대 0.25로 크게 어긋난다. 열원이 가진 덩어리가 6개밖에 없어서 A에게 몇 개만 내줘도 열원의 β가 달라지기 때문이다. 열원을 칸 1,000개로 키우면 β는 ln 2 = 0.6931에 가까운 0.6926이 되고, 두 값은 소수 넷째 자리에서만 다르다. NB와 q를 바꿔 가며 돌려 보면, q/NB를 키울수록 β가 작아지고(열원이 뜨거워지고) A가 덩어리를 여러 개 가질 확률이 늘어나는 것도 볼 수 있다.

문제 2. 더 뜨거운 열원

칸 하나인 계 A가 칸 1,000개인 열원 B와 맞닿아 있고, 둘이 가진 덩어리의 합은 3,000개로 고정되어 있다. (가) A가 덩어리를 하나 더 가질 때 확률은 몇 배가 되는가? 이 열원의 β는 얼마인가? (나) A가 덩어리를 하나도 갖지 않을 확률과, A가 가진 덩어리 수의 평균을 구하라. (풀어 본 뒤 위젯 1의 「문제 2 불러오기」로 확인해 보자.)

김민준 M11
김민준

덩어리가 1,000개일 때 β가 ln 2 = 0.693이었잖아요. 덩어리가 세 배면 세 배 뜨거우니까 β도 3으로 나눠서 0.231이요.

선생님 T12
선생님

이웃한 두 줄의 비 m/(m + N_B − 1)에 직접 넣어 보면요?

김민준 M07
김민준

3000/3999 = 0.750이고, 로그로 바꾸면 β = ln(3999/3000) = 0.287이에요. 0.231이 아니네요. 비가 1/2에서 3/4으로 바뀐 거라 β도 ln 2에서 ln(4/3)쯤으로 바뀐 거고요.

이서연 S01
이서연

(나)는 비가 3/4인 기하급수니까 덩어리 0개일 확률은 1 − 3/4 = 0.25, 평균은 (3/4)/(1 − 3/4) = 3이에요. 어, 3이면 열원의 칸 하나당 덩어리 수 3000/1000이랑 같네요.

선생님 T13
선생님

그래요. A도 칸 하나이니 평균으로는 열원의 칸 하나와 똑같은 몫을 받아요. 그럼 민준 학생의 「세 배 뜨거우니 β도 3분의 1」은 언제 맞을까요?

이서연 S10
이서연

비가 m/(m + N_B)쯤이니까 β ≈ ln(1 + N_B/m)이에요. 덩어리가 칸보다 훨씬 많아서 N_B/m이 작을 때만 ln(1 + x) ≈ x로 반비례가 돼요. 세 배 정도로는 아직 아니고요. 해석학 시간에 ln(1 + x) ≈ x는 x가 작을 때만 쓰라던 조건이 여기서 걸리네요.