Радиоактивный распад и диффузия
Случайные события атомов в сумме дают гладкие законы: распад и диффузия.
Стохастическая симуляция моделирует случайные элементарные события (распад атома, шаг частицы), из которых статистически складывается детерминированный макроскопический закон.
Радиоактивный распад атом за атомом
Закон радиоактивного распада N(t) = N₀·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.
Среднеквадратичное смещение ⟨x²⟩ растёт почти точно как число шагов (9.7 при 10 шагах, 162 при 160, 678 при 640) — это закон диффузии ⟨x²⟩ = D·t. А типичное расстояние √⟨x²⟩ растёт лишь как √t. Поэтому запах в неподвижном воздухе распространяется медленно: чтобы уйти вдвое дальше, нужно вчетверо больше времени.
Как работает под капотом
И распад, и диффузия — примеры того, как из локальной случайности рождается глобальный детерминизм. У распада вероятность события постоянна во времени, что математически и даёт экспоненту (марковский процесс без памяти). У блуждания каждый шаг независим, и центральная предельная теорема превращает сумму случайных шагов в гауссово распределение, ширина которого растёт как √t. Это объясняет, почему макроскопические законы природы гладкие и предсказуемые, хотя в основе лежит хаос отдельных частиц.
Частые ошибки
- Считать, что смещение при диффузии растёт линейно со временем. Линейно растёт
⟨x²⟩, а само расстояние — как√t. - Неверно перевести период полураспада в вероятность за шаг.
p = 1 - 2^(-1/T), а не1/T. - Усреднять по слишком малому числу частиц. Случайное блуждание сильно флуктуирует; нужны тысячи реализаций.
Итоги
- Радиоактивный распад — статистика случайных распадов отдельных атомов.
- Гладкая экспонента возникает из локальной случайности.
- Диффузия — случайное блуждание;
⟨x²⟩растёт линейно со временем. - Типичное смещение растёт лишь как
√t— диффузия медленна.