Хаос та динамічні системи
Квітень 2026 · 16 хв читання · Нелінійна динаміка · Теорія хаосу · Canvas 2D · Останнє оновлення: 3 липня 2026 р.

Біфуркаційні діаграми: подвоєння періоду, Фейгенбаум та шлях до хаосу

Автор: Команда MySimulator · Редакційна перевірка: Редакція MySimulator

Біфуркаційна діаграма відображає всі довгострокові стани системи залежно від керувального параметра — і для логістичного відображення вона розкриває один із найдивовижніших патернів у математиці: нескінченно повторюваний самоподібний каскад подвоєнь періоду, що веде до хаосу й керується універсальною сталою δ ≈ 4,669, яка зʼявляється в кожному гладкому унімодальному відображенні, що коли-небудь вивчалося.

1. Логістичне відображення

Логістичне відображення — це найпростіше нелінійне різницеве рівняння, що демонструє повний шлях від порядку до хаосу:

xₙ₊₁ = r · xₙ · (1 − xₙ) x ∈ [0, 1] : population fraction (0 = extinct, 1 = at carrying capacity) r ∈ [0, 4] : growth rate parameter

Запроваджене Робертом Меєм (1976) у контексті популяційної динаміки, воно моделює взаємодію між розмноженням (лінійне за x) та конкуренцією за ресурси (член −x²). Попри уявну простоту, воно кодує всю математичну структуру одновимірного хаосу.

Ключові властивості f(x) = rx(1−x):

Біфуркаційну діаграму будують так: (1) обираємо стартове x₀ ≈ 0,5, (2) ітеруємо 1000 разів, щоб перехідні процеси згасли, (3) відкладаємо наступні 200 ітерацій як точки в горизонтальній позиції r. Повторення цього для тисяч значень r дає знамените «дерево подвоєння періоду».

2. Нерухомі точки та аналіз стійкості

Нерухомі точки періоду 1

Нерухома точка задовольняє x* = f(x*):

x* = r·x*·(1−x*) → x*(r·(1−x*) − 1) = 0 → x* = 0 or x* = 1 − 1/r

Стійкість визначається похідною |f'(x*)| = |r(1 − 2x*)|:

Втрата стійкості при r = 3

При r = 3 похідна f'(x*) = −1 точно. Нерухома точка стає перекидним сідлом періоду 1. Для r трохи вище 3 малі збурення зростають (поперемінно вище/нижче x*), і система переходить у цикл періоду 2: пару точок {x₁, x₂}, що задовольняють x₂ = f(x₁) та x₁ = f(x₂), тобто x = f(f(x)) = f²(x).

Це біфуркація подвоєння періоду (перекидна): стійка нерухома точка породжує стійкий 2-цикл при r = 3 у процесі, керованому перетином власним значенням одиничного кола в точці −1.

3. Каскад подвоєння періоду

Сам цикл періоду 2 втрачає стійкість при r₂ ≈ 3,449, породжуючи цикл періоду 4. Цикл періоду 4 біфуркує при r₃ ≈ 3,544 у період 8 і так далі. Послідовність точок біфуркації {rₙ} збігається до точки накопичення r∞ ≈ 3,5699456... — початку хаосу.

n Період 2ⁿ народжується при rₙ rₙ₊₁ − rₙ δₙ = (rₙ−rₙ₋₁)/(rₙ₊₁−rₙ)
1 Період 2 3.000000 0.449490
2 Період 4 3.449490 0.094757 4.7514
3 Період 8 3.544090 0.020284 4.6558
4 Період 16 3.564407 0.004347 4.6683
5 Період 32 3.568750 0.000930 4.6686
6 Період 64 3.569692 0.000199 4.6692
Початок хаосу 3.569946 0 δ = 4,6692...

Відношення δₙ збігається до сталої Фейгенбаума δ ≈ 4,6692. Проміжки між послідовними точками біфуркації звужуються геометрично: кожен інтервал становить приблизно 1/δ ≈ 21,4% від попереднього. Цикл періоду 2ⁿ має 2ⁿ гілок на біфуркаційній діаграмі, усі створені одним і тим самим перекидним механізмом.

Самоподібність: піддіаграма поблизу кожної точки біфуркації r = rₙ є масштабованою копією всієї діаграми. Масштабування осі x на множник α ≈ −2,5029 (друга стала Фейгенбаума) дає ідентичну копію. Це характерна ознака нерухомої точки ренормгрупи у функціональному просторі.

4. Універсальність Фейгенбаума

Мітчелл Фейгенбаум виявив (1975–1978), що стала δ ≈ 4,6692 є універсальною: вона зʼявляється в кожному гладкому унімодальному відображенні з єдиним квадратичним максимумом, незалежно від конкретної формули. Логістичне відображення, синусоїдальне відображення (xₙ₊₁ = r sin(πxₙ)), намет-відображення та незліченні фізичні системи — усі дають одне й те саме δ.

Feigenbaum constants: δ = lim_{n→∞} (rₙ − rₙ₋₁) / (rₙ₊₁ − rₙ) ≈ 4.669201609... α = lim scaling of x-axis between levels ≈ −2.502907876... Both are transcendental numbers; no closed form is known.

Пояснення через ренормгрупу

Каскад подвоєння періоду є нерухомою точкою оператора ренормалізації T, що діє на функціональному просторі:

(Tf)(x) = −(1/α) · f(f(−α·x)) // T rescales the function composed with itself // δ is the unstable eigenvalue of DT at the fixed point g = Tg // g(x) ≈ 1 − 1.5276x² + ... (the universal function)

Лінеаризація T у нерухомій функції g має одне нестійке власне значення δ (усі інші < 1). Цей єдиний нестійкий напрям пояснює, чому всі гладкі унімодальні відображення наближаються до того самого каскаду: усі вони притягуються до стійкого многовиду g, а потім рухаються вздовж нестійкого напряму зі швидкістю δ. Клас універсальності аналогічний класам універсальності у статистичній механіці поблизу критичних точок — глибокий звʼязок, формалізований ренормгрупою Вілсона.

Експериментальне підтвердження

δ було виміряно у фізичних експериментах:

5. Хаос, періодичні вікна та кризи

За межею r∞ ≈ 3,5699 система переважно хаотична — але не рівномірно. Біфуркаційна діаграма після початку хаосу перемежовується періодичними вікнами: вузькими діапазонами r, де стійкий цикл знову виринає з хаосу.

Періодичні вікна

Найпомітніше вікно поблизу r ≈ 3,828 — це вікно періоду 3. Його існування гарантується теоремою Лі–Йорке (1975): «період 3 означає хаос». Точніше, якщо неперервне відображення має орбіту періоду 3, воно має орбіти всіх періодів.

Кожне періодичне вікно саме проходить підкаскад подвоєнь періоду, що веде до власного режиму міні-хаосу. Патерн повторюється на кожному масштабі — фрактальна структура у просторі параметрів. Зʼявляються вікна всіх періодів, упорядковані за порядком Шарковського:

Sharkovskii order: 3 ≻ 5 ≻ 7 ≻ ... ≻ 6 ≻ 10 ≻ ... ≻ 2·3 ≻ 2·5 ≻ ... ≻ 4 ≻ 2 ≻ 1 // If f has a period-n orbit and n ≻ m, then f also has a period-m orbit

Внутрішні кризи

За певних значень r хаотичний атрактор раптово змінює розмір — внутрішня криза. При знаменитому r ≈ 3,6786 атрактор розширюється з двох неперетинних інтервалів до єдиного інтервалу, що зумовлено зіткненням нестійкої орбіти періоду 3 з межею басейну. Ці переходи (Гребоджі, Отт і Йорке, 1982) є раптовими, але структурно зрозумілими через нестійкі періодичні орбіти.

6. Накладання показника Ляпунова

Показник Ляпунова λ(r) кількісно оцінює середнє експоненційне розходження й відрізняє порядок (λ < 0) від хаосу (λ > 0):

λ(r) = lim_{N→∞} (1/N) · Σᵢ ln|f'(xᵢ)| = lim_{N→∞} (1/N) · Σᵢ ln|r(1 − 2xᵢ)| λ < 0 : stable periodic orbit (exponential contraction) λ = 0 : bifurcation point exactly λ > 0 : chaotic attractor (exponential divergence)

При накладанні на біфуркаційну діаграму:

При r = 4 логістичне відображення спряжене з намет-відображенням T(x) = 1 − |2x − 1| через заміну змінних x = sin²(πθ/2). Намет-відображення є кусково-лінійним з нахилом ±2 усюди, що дає λ = ln 2 точно. Це максимально можливий показник Ляпунова для цієї родини.

7. Класифікація типів біфуркацій

Подвоєння періоду логістичного відображення — один із кількох канонічних типів біфуркацій, що зʼявляються в усіх динамічних системах:

Дискретні відображення (1D)

Біфуркація Механізм Що зʼявляється Приклад
Подвоєння періоду (перекидна) Власне значення перетинає −1 Стійкий 2-цикл із нерухомої точки Логістичне при r=3
Дотична (сідло-вузол) Власне значення перетинає +1 Створюється пара (стійка + нестійка) Початок вікна періоду 3
Транскритична Власне значення = +1, обмін Передача стійкості між двома гілками x*=0 втрачає стійкість при r=1

Потоки (ЗДР, 2D+)

Біфуркація Механізм Що зʼявляється Приклад
Сідло-вузол Дійсне власне значення перетинає 0 Пара рівноваг створюється/знищується Згин у векторному полі
Виделкова Дійсне власне значення перетинає 0 із симетрією Симетрична пара стійких гілок Лоренц при ρ=1
Гопфа Комплексна пара перетинає уявну вісь Граничний цикл народжується з рівноваги Ван дер Поль, Лоренц при ρ≈24,7
Подвоєння періоду Мультиплікатор Флоке = −1 Граничний цикл подвоює свій період Ресслер при c≈4
Тор (Неймарка–Сакера) Комплексна пара Флоке на одиничному колі Інваріантний тор народжується з граничного циклу Квазіперіодичний шлях до хаосу
Шляхи до хаосу: каскад подвоєння періоду (Фейгенбаума) — лише один із трьох класичних шляхів до хаосу. Шлях Рюеля–Такенса проходить через нерухому точку → граничний цикл → тор → хаос (дивний атрактор руйнує тор). Шлях Помо–Манневіля проходить через переміжність: довгі майже-періодичні ламінарні фази, перервані сплесками хаосу, із середньою ламінарною довжиною, що розходиться як (r* − r)^(−1/2).

8. Інтерактивна біфуркаційна діаграма

Рендерер нижче будує біфуркаційну діаграму логістичного відображення у реальному часі. Перетягуйте повзунки діапазону, щоб наблизитися до будь-якої області — самоподібна структура видима на кожному масштабі.

Сині точки = орбіти  |  Червона лінія = показник Ляпунова (коли увімкнено)
// Основний рендерер біфуркаційної діаграми
function renderBifurcation(canvas, rMin, rMax, showLyap) {
  const ctx  = canvas.getContext('2d');
  const W    = canvas.width, H = canvas.height;
  const N_r  = W * 2;          // вибірки r (2 на піксель)
  const WARM = 500;            // перехідні ітерації, які відкидаємо
  const PLOT = 300;            // ітерації для відображення на кожне значення r

  ctx.fillStyle = '#0a0a14';
  ctx.fillRect(0, 0, W, H);

  for (let i = 0; i < N_r; i++) {
    const r = rMin + (rMax - rMin) * (i / N_r);
    const px = (i / N_r) * W;

    let x = 0.5;
    // Відпрацювати перехідні процеси
    for (let k = 0; k < WARM; k++) x = r * x * (1 - x);

    // Зібрати орбіту та суму Ляпунова
    let lyapSum = 0;
    for (let k = 0; k < PLOT; k++) {
      const deriv = Math.abs(r * (1 - 2 * x));
      lyapSum += deriv > 1e-12 ? Math.log(deriv) : -30;
      x = r * x * (1 - x);

      // Відкласти точку орбіти
      const py = H - x * H;
      ctx.fillStyle = 'rgba(99,102,241,0.35)';
      ctx.fillRect(px, py, 1.5, 1.5);
    }

    // Необовʼязкове накладання показника Ляпунова
    if (showLyap) {
      const lam = lyapSum / PLOT;
      const lamPy = H / 2 - lam * (H / 4);  // масштаб: -2..+2 → H..0
      ctx.fillStyle = lam > 0 ? 'rgba(239,68,68,0.7)' : 'rgba(34,197,94,0.6)';
      ctx.fillRect(px, Math.min(Math.max(lamPy, 0), H - 1), 1.5, 1.5);
    }
  }

  // Нульова лінія як орієнтир для Ляпунова
  if (showLyap) {
    ctx.strokeStyle = 'rgba(255,255,255,0.15)';
    ctx.beginPath(); ctx.moveTo(0, H / 2); ctx.lineTo(W, H / 2); ctx.stroke();
  }
}