Три рівняння, одна трагедія
У 1963 році Едвард Лоренц, метеоролог з MIT, опублікував Deterministic Nonperiodic Flow — статтю про значно спрощену модель конвекції в шарі рідини, нагрітій знизу. Обрізання регулюючих рівнянь до трьох найважливіших мод залишає систему такою маленькою, що вона поміщається на одній лінії, і все ж вона робить щось несподіване:
dx/dt = σ (y − x) dy/dt = x (ρ − z) − y dz/dt = x y − β z
σ = 10 Пріордтлівський номер ρ = 28 Райлієв номер (відносно його критичної величини) β = 8/3 геометричний відношення
Тут x пропорційний інтенсивності конвекційного руху, y — різниці температур між підіймаючимися та опускаючимися струменями, а z — спотворенню вертикального температурного профілю. Система детермінована — без шуму, без випадковості, три звичайних диференціальних рівняння — і все ж її розв’язки ніколи не повторюються та не стабілізуються.
Відомий початковий наратив правдивий: Лоренц перезапустив чисельний запуск з копії, в якій округлено 0,506127 до 0,506, очікуючи невеликого відхилення, і спостерігав, як дві провідні лінії розходяться на зовсім різні погодні умови. Це ефект метелика, а форма траєкторії — дві лобові частини, з’єднані крилами — робить цю назву двічі «заслужило».
dx/dt = σ (y − x) dy/dt = x (ρ − z) − y dz/dt = x y − β z σ = 10 Prandtl number ρ = 28 Rayleigh number (relative to its critical value) β = 8/3 geometric aspect ratio
Чому не може бути періодичним і не може втекти
Два властивості закріплюють поведінку. По-перше, система є дисипативною. Дивергенція векторного поля постійна:
∇·F = ∂/∂x[σ(y−x)] + ∂/∂y[x(ρ−z)−y] + ∂/∂z[xy−βz] = −σ − 1 − β = −(10 + 1 + 8/3) ≈ −13.67 Постійна негативна дивергенція означає, що кожен об’єм початкових умов зменшується експоненціально з частотою e^(−13.67 t). Отже, всі траєкторії затягуються до множини нульового об’єму. По-друге, рух обмежений: далеко від початку — терміни −z і −x домінують і тягнуть все назад. Таким чином, траєкторії стискаються в множину нульового об’єму, з якої вони ніколи не виходять, і водночас вони також не можуть спочивати.
Фіксовані точки пояснюють останню частину. Існує три: початкова точка та симетрична пара:
C± = ( ±sqrt(β(ρ−1)), ±sqrt(β(ρ−1)), ρ−1 ) = ( ±8.485, ±8.485, 27 ) для σ=10, ρ=28, β=8/3 C± є центри, навколо яких траєкторія спірається — один на крилі. Вони стабільні для невеликих ρ, але втрачають стабільність у підкритичному Хопфовому біфуркації при критичній величині, що випливає з параметрів:
ρ_H = σ (σ + β + 3) / (σ − β − 1) = 10 · (10 + 8/3 + 3) / (10 − 8/3 − 1) ≈ 24.74 При ρ = 28 ми знаходимося вище цього порогу, тому всі три фіксовані точки нестабільні. Траєкторія притягується до фіксованої точки, спірається навколо неї, коли нестабільність зростає, відкидається на іншу лоб, спірається навколо неї і знову відкидається — безперервно, ніколи не повторюючись. Стискайте об’єм до нуля, забороняйте вихід, забороняйте відпочинок: що залишається — це дивний атрактор, множина фрактальної структури з оціненою мірою Каплана-Йорка приблизно 2.06 — більше за поверхню, менше ніж тверде тіло.
∇·F = ∂/∂x[σ(y−x)] + ∂/∂y[x(ρ−z)−y] + ∂/∂z[xy−βz]
= −σ − 1 − β = −(10 + 1 + 8/3) ≈ −13.67
Чутлива залежність, кількісно виражена
"Хаос" тут має точне значення: близькі траєкторії розходяться експоненціально. Швидкість – це найбільший лямбда-показник (λ), і для класичних параметрів вона становить приблизно 0,9 на одиницю часу. Початкова похибка ε зростає як ε·e^(λt), що означає, що похибка збільшується у крок приблизно в e кожні ~1,1 часові одиниці та у десять разів кожні ~2,6.
Наслідок цього є руйнівним і пояснює обмежений горизонт прогнозів погоди. Кожен десятикратний покращення початкового вимірювання дарує вам постійну, незначну розширення передбачуваного вікна – не пропорційне. Щоб спрогнозувати подвоєно далі вперед, потрібно квадратично підвищити точність всього, що ви знаєте. Це не збіг обставин чи проблема моделі чи комп’ютера: це властивість динаміки.
Це також означає, що будь-яка чисельна траєкторія системи Лорренца неправильна. Округлення плаваючою комою до 16 знаків після коми – це початкова похибка порядку 10⁻¹⁶, і з λ ≈ 0,9 ця похибка досягає порядку 1 приблизно через 40 часових одиниць. Те, що є вражаючим – і що робить зображення достовірними – полягає в тому, що обчислена траєкторія, хоча й не є траєкторією через вашу початкову точку, залишається близькою до деякої справжньої траєкторії системи (властивості «затінення»). Форма, розмірність та статистичні характеристики атрактора відтворюються, навіть якщо індивідуальний шлях не відтворюється.
Інтегрування без обману
Система Лорнцена не є гамільтоніаною — у неї немає енергії, яку можна зберегти — тому аргумент про Симплету, який віддає перевагу Верлету для орбіт, тут непридатний. Важлива локальна точність на короткому горизонті, що і забезпечує класичний RK4: чотири обчислення похідних за крок, глобальна похибка O(h⁴).
функція deriv([x, y, z]) { return [SIGMA * (y - x), x * (RHO - z) - y, x * y - BETA * z]; } // Крок RK4 const k1 = deriv(s); const k2 = deriv(add(s, scale(k1, h / 2))); const k3 = deriv(add(s, scale(k2, h / 2))); const k4 = deriv(add(s, scale(k3, h))); s = add(s, scale(add4(k1, scale(k2, 2), scale(k3, 2), k4), h / 6)); Крок h ≈ 0.005–0.01 підтримує візуальну чистоту траєкторії. Явно-Ейлеровський метод на тому ж кроці це не зробить: він відхиляється від поверхні атрактора, і крила розмиваються. І не хвилюйтеся, коли два запуски одного й того самого коду на різних машинах дають різні результати — різні порядки обчислення чисел з плаваючою комою є різними початковими помилками, і за конструкцією ця система їх підсилює.
function deriv([x, y, z]) {
return [SIGMA * (y - x),
x * (RHO - z) - y,
x * y - BETA * z];
}
// RK4 step
const k1 = deriv(s);
const k2 = deriv(add(s, scale(k1, h / 2)));
const k3 = deriv(add(s, scale(k2, h / 2)));
const k4 = deriv(add(s, scale(k3, h)));
s = add(s, scale(add4(k1, scale(k2, 2), scale(k3, 2), k4), h / 6));
Що воно говорить і чого не говорить про погоду
Система Лорренца є узагальненням конвекції, а не моделлю для прогнозування погоди; з її допомогою нікого не передбачають. Її значення концептуальне, і воно було величезним. Вона продемонструвала, що проста, детермінована, безшумна система може бути справді непередбачуваною – що ця непередбачуваність не вимагає складності чи випадковості. Це зруйнувало припущення, що достатньо хороший модель плюс достатньо хороші вимірювання дають можливість отримати прогноз на будь-який час, і саме тому сучасне прогнозування здійснюється за допомогою ансамблів: запускають модель багато разів з дещо відхилених початкових станів та повідомляють про розкид результатів як ймовірність замість однієї траєкторії як факту.
Додаток щодо строгості: протягом сорока років дивний натяжок був чисельною спостереженням, а не теоремою. У 2002 році Варвик Теккер дав комп’ютерно-підтверджений доказ того, що рівняння Лорренца при класичних параметрах справді мають дивний натяжок – вирішивши одну з задач Стівена Смоле для XXI століття.
Часті запитання
Що таке насправді ефект метелика?
Чутлива залежність від початкових умов: дві траєкторії, що починаються дуже близько одна до одної, експоненціально відокремлюються з швидкістю, заданою найбільшим ліпоновим індексатором (приблизно 0,9 на одиницю часу для класичних параметрів Лорренца). Будь-яка помилка в початковому стані – включно з округленням – зрештою зростає до розміру аттрактора, тому довгострокове прогнозування траєкторії окремої системи неможливе.
Чи є система Лорренца випадковою?
Ні. Це три детерміновані диференціальні рівняння без жодного терміну шуму: однаковий початковий стан завжди дає однакову траєкторію. Це непередбачувано, а отже, не випадкове – помилки в початковому стані експоненціально збільшуються, тому насправді майбутнє не може бути відоме, хоча воно повністю визначене.
Чому моя траєкторія Лорренца відрізняється від траєкторії іншої людини з ідентичним кодом?
Тому що обчислення з плаваючою комою не є асоціативними, а різні компілятори, процесори або рівні оптимізації округлюють по-різному. Це початкова помилка приблизно 10⁻¹⁶, яку ця система збільшує до порядку 1 через кілька десятків одиниць часу. Окрема траєкторія розходяться; форма та статистика аттрактора не змінюються.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Lorenz Attractor і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Lorenz Attractor