Броунівський рух і рівняння Ланжевена — стохастична динаміка
Спостереження Роберта Брауна за тремтінням пилкових зерен у воді 1827 року привело до продуктивної теоретичної лінії у фізиці. Ейнштейн у 1905 довів існування атомів; рівняння Ланжевена дало механічну модель. Сьогодні броунівський рух лежить в основі фінансових моделей, фізики полімерів і алгоритмів MCMC.
1. Від випадкового блукання до броунівського руху
Найпростіша модель: на кожному кроці розміром δ частинка рухається на ±1 з рівною ймовірністю. Після N кроків із часовим приростом τ:
2. Коефіцієнт дифузії Ейнштейна
Ейнштейн пов'язав коефіцієнт дифузії з молекулярними властивостями через співвідношення Ейнштейна-Смолуховського-Стокса:
3. Рівняння Ланжевена
Ланжевен (1908) явно записав другий закон Ньютона для броунівської частинки:
4. Вінерівський процес та числення Іто
5. Середньоквадратичне зміщення
6. Рівняння Фоккера-Планка
Замість траєкторій ми можемо відстежувати густину ймовірності P(x,t) знаходження частинки в точці x у момент часу t:
7. JavaScript-симулятор Ланжевена
// Перетворення Бокса-Мюллера для гаусового шуму
function gaussianRandom() {
let u, v, s;
do {
u = Math.random() * 2 - 1;
v = Math.random() * 2 - 1;
s = u*u + v*v;
} while (s >= 1 || s === 0);
return u * Math.sqrt(-2 * Math.log(s) / s);
}
/**
* Інтегрування методом Ейлера-Маруями передемпфованого рівняння Ланжевена:
* dX = drift(X) dt + sqrt(2D) dW
* @param {number} D - коефіцієнт дифузії [м²/с]
* @param {number} T - загальний час [с]
* @param {number} dt - крок часу [с]
* @param {function} drift - необов'язкова зовнішня сила / gamma [м/с]
* @returns {Float64Array} значення x траєкторії
*/
function langevin1D(D, T, dt = 1e-4, drift = () => 0) {
const N = Math.ceil(T / dt);
const x = new Float64Array(N);
const sqrtDt = Math.sqrt(2 * D * dt);
x[0] = 0;
for (let i = 1; i < N; i++) {
x[i] = x[i-1] + drift(x[i-1]) * dt + sqrtDt * gaussianRandom();
}
return x;
}
// Обчислення MSD із набору траєкторій
function computeMSD(trajectories, maxLag) {
const nTraj = trajectories.length;
const msd = new Float64Array(maxLag);
for (const traj of trajectories) {
for (let lag = 1; lag <= maxLag; lag++) {
let sum = 0;
const count = traj.length - lag;
for (let i = 0; i < count; i++) {
const dx = traj[i+lag] - traj[i];
sum += dx * dx;
}
msd[lag-1] += sum / count;
}
}
return msd.map(v => v / nTraj);
}
// Приклад: вільна дифузія
const D = 1e-12; // м²/с, ≈ частинка 1 мкм у воді
const dt = 0.01; // крок часу 10 мс
const trajs = Array.from({length:100}, () => langevin1D(D, 10, dt));
const msd = computeMSD(trajs, 200);
// msd[i] має дорівнювати 2*D*(i+1)*dt (перевірка співвідношення Ейнштейна)
console.log(`MSD[10dt] measured: ${msd[9].toExponential(2)}`);
console.log(`MSD[10dt] expected: ${(2*D*10*dt).toExponential(2)}`);
// Приклад: Орнштейн-Уленбек (гармонічна пастка)
const kappa = 1e-6; // жорсткість пастки
const gamma = 1e-8; // опір
const ouTraj = langevin1D(D, 10, dt, x => -(kappa/gamma) * x);
8. Застосування
Фінансові моделі
Блек-Шоулз використовує геометричний броунівський рух dS = μS dt + σS dW. Орнштейн-Уленбек моделює відсоткові ставки з поверненням до середнього (модель Васічека). MCMC робить вибірку зі складних апостеріорних розподілів.
Молекулярна динаміка
Термостат Ланжевена підтримує температуру в МД-симуляціях. Огрубнена динаміка частинок (CGMD) використовує D з Ейнштейна-Стокса для неявного розчинника.
Фізика полімерів
Моделі Роуза та Цімма розглядають полімери як кульки, з'єднані пружинами, кожна кулька зазнає броунівського руху. Передбачає масштабування в'язкості від молекулярної маси.
Біофізика
Відстеження окремих частинок вимірює D рецепторів у клітинних мембранах. Нахил MSD виявляє обмеженість, спрямований транспорт або аномальну субдифузію в тісній цитоплазмі.