Радиоактивный распад и диффузия
Случайные события атомов в сумме дают гладкие законы: распад и диффузия.
Стохастическая симуляция моделирует случайные элементарные события (распад атома, шаг частицы), из которых статистически складывается детерминированный макроскопический закон.
Радиоактивный распад атом за атомом
Закон радиоактивного распада $N(t) = N_0\cdot 2^{(-t/T)}$ — гладкая экспонента. Но отдельный атом не «знает» про экспоненту: он распадается случайно, с некоторой вероятностью за единицу времени, независимо от соседей и от своего возраста. Гладкий закон — это статистика миллионов случайных распадов. Промоделируем буквально: на каждом шаге каждый атом с некоторой вероятностью распадается:
import random
random.seed(7)
N0 = 10000
half_life = 10.0
p_decay = 1 - 0.5**(1/half_life)
N = N0
print("шаг осталось ожидание N0·2^(-t/T)")
for step in range(0, 51):
if step % 10 == 0:
expected = N0 * 0.5**(step/half_life)
print(f"{step:3d} {N:6d} {expected:8.1f}")
decayed = sum(1 for _ in range(N) if random.random() < p_decay)
N -= decayed
print("Случайные распады в сумме дают экспоненту.")Вывод:
шаг осталось ожидание N0·2^(-t/T) 0 10000 10000.0 10 5032 5000.0 20 2482 2500.0 30 1246 1250.0 40 634 625.0 50 304 312.5 Случайные распады в сумме дают экспоненту.
Симуляция точно следует теоретической экспоненте: через один период полураспада (10 шагов) осталось 5032 атома из 10000 — почти ровно половина. Никакого «закона экспоненты» в код не заложено, только случайные распады отдельных атомов. Гладкая кривая родилась из статистики.
Диффузия как случайное блуждание
Капля чернил расплывается в воде, запах распространяется по комнате — это диффузия. На микроуровне это случайное блуждание: каждая частица делает случайные шаги влево-вправо. Замечательный факт: среднеквадратичное смещение растёт не пропорционально времени, а пропорционально корню из времени. Проверим:
import random, math
random.seed(3)
def walk(steps):
x = 0
for _ in range(steps):
x += 1 if random.random() < 0.5 else -1
return x
print("шагов <x²> (по 2000 частиц) √(<x²>)")
for steps in (10, 40, 160, 640):
msd = sum(walk(steps)**2 for _ in range(2000))/2000
print(f"{steps:5d} {msd:8.1f} {math.sqrt(msd):5.2f}")
print("Среднеквадратичное смещение ~ числу шагов: <x²> = D·t.")Вывод:
шагов <x²> (по 2000 частиц) √(<x²>) 10 9.7 3.12 40 40.6 6.37 160 162.1 12.73 640 678.2 26.04 Среднеквадратичное смещение ~ числу шагов: <x²> = D·t.
Среднеквадратичное смещение $\langle x^2\rangle$ растёт почти точно как число шагов (9.7 при 10 шагах, 162 при 160, 678 при 640) — это закон диффузии $\langle x^2\rangle = D t$. А типичное расстояние $\sqrt{\langle x^2\rangle}$ растёт лишь как $\sqrt{t}$. Поэтому запах в неподвижном воздухе распространяется медленно: чтобы уйти вдвое дальше, нужно вчетверо больше времени.
Как работает под капотом
И распад, и диффузия — примеры того, как из локальной случайности рождается глобальный детерминизм. У распада вероятность события постоянна во времени, что математически и даёт экспоненту (марковский процесс без памяти). У блуждания каждый шаг независим, и центральная предельная теорема превращает сумму случайных шагов в гауссово распределение, ширина которого растёт как $\sqrt{t}$. Это объясняет, почему макроскопические законы природы гладкие и предсказуемые, хотя в основе лежит хаос отдельных частиц.
Частые ошибки
- Считать, что смещение при диффузии растёт линейно со временем. Линейно растёт $\langle x^2\rangle$, а само расстояние — как $\sqrt{t}$.
- Неверно перевести период полураспада в вероятность за шаг. $p = 1 - 2^{(-1/T)}$, а не $1/T$.
- Усреднять по слишком малому числу частиц. Случайное блуждание сильно флуктуирует; нужны тысячи реализаций.
Итоги
- Радиоактивный распад — статистика случайных распадов отдельных атомов.
- Гладкая экспонента возникает из локальной случайности.
- Диффузия — случайное блуждание; $\langle x^2\rangle$ растёт линейно со временем.
- Типичное смещение растёт лишь как $\sqrt{t}$ — диффузия медленна.