Показники платформи
Симуляції хвилі 31
Фрактал Ньютона
Метод пошуку коренів Ньютона, застосований до zn−1 у комплексній площині. Кожен піксель зафарбовується залежно від того, до якого кореня він сходиться і наскільки швидко.
Відкрити →Модель піщаної купи
Самоорганізована критичність Бака–Танга–Візенфельда. Кидайте зерна, доки клітини не перекинуться; лавини всіх розмірів з'являються без жодного налаштування параметрів.
Відкрити →Комплексні функції
Розфарбування області f(z): відтінок = arg f(z), яскравість = |f(z)|. Візуалізуйте полюси, нулі та розрізи гілок для 12 класичних функцій.
Відкрити →🌀 Фрактал Ньютона
Алгоритм
Метод Ньютона знаходить корені f(z) = 0 за допомогою ітерації:
zn+1 = zn − f(zn) / f′(zn)
Для многочлена f(z) = zk−1 корені є коренями k-го степеня з одиниці: e2πin/k для n = 0, 1, …, k−1. Фрактал виникає тому, що межі між басейнами притягання — множинами початкових точок, які сходяться до кожного кореня — нескінченно деталізовані.
Порівіксельний рендеринг
Кожен із 600×600 пікселів полотна відображається у точку z у комплексній площині. Внутрішній цикл виконує кроки Ньютона, доки відстань до найближчого кореня не опуститься нижче допуску ε, або поки не буде досягнута максимальна кількість ітерацій. Швидкість збіжності (кількість ітерацій, за яку досягається допуск) модулює яскравість, створюючи затінений градієнт, що надає зображенню тривимірного вигляду.
- Відтінок — визначається тим, якого кореня було досягнуто (один із k окремих кольорів із ROOT_HUES).
-
Яскравість —
0.15 + 0.6 × (1 − iters/maxIter), тож швидка збіжність яскрава. - Відсутність збіжності — точки, що вичерпують ітерації, відображаються майже чорними.
Комплексна арифметика
Уся арифметика виконується в парах дійсна/уявна частина.
cmul(ar,ai,br,bi) повертає
[ar·br−ai·bi, ar·bi+ai·br]. zn обчислюється повторним cmul, а не за
формулою Муавра (це зберігає код без розгалужень для будь-якого
цілого показника степеня). Ділення f(z)/f′(z) використовує
cdiv зі стандартною формулою «спряжене поділити на
квадрат модуля».
Що спробувати
- Перемкніться з z³−1 на z⁸−1 — кількість фрактальних «пелюсток» зростає разом зі степенем.
- Перетягніть повзунок ε майже до нуля — біля потрійних з'єднань з'являються тонкі басейни.
- Наблизьте межу басейну — фрактальна самоподібність видна на кожному масштабі.
- Зменшіть максимальну кількість ітерацій — деталі втрачаються, але широкі кольорові області залишаються.
⏳ Модель піщаної купи
Бак–Танг–Візенфельд (1987)
BTW-піщана купа — це канонічна модель самоорганізованої критичності (SOC). Ціле число висоти hi,j зберігається в кожній клітинці сітки N×N. Додавання зерна до будь-якої клітинки може викликати каскад перекидань за правилом:
if h[i,j] ≥ K: h[i,j] −= K; each of 4 neighbours: h += 1
Зерна, що виходять за межу, зникають (відкрита межа), тому загальна кількість зерен зберігається в середньому. Система самоорганізується в критичний стан без жодного налаштування K, а розподіл розмірів лавин P(s) підпорядковується степеневому закону P(s) ~ s−τ з τ ≈ 1.2.
Реалізація
Сітка — це плаский Int32Array(N×N). Цикл
стабілізації використовує підхід із чергою BFS: клітинки, критичні
на початку скидання, засіваються в чергу, а потім обробляються одна
за одною. Нові критичні сусіди додаються до черги. Розмір лавини —
це загальна кількість подій перекидання. Кольори призначаються за
цілою висотою (0=чорний, 1=темно-зелений, 2=жовто-зелений,
3=бурштиновий, ≥K=червоно-помаранчевий) і записуються
безпосередньо в буфер ImageData.
Що спробувати
- Запустіть із центральним скиданням, доки купа не насититься — утворюються концентричні кільця, а потім розпадаються на фракталоподібні патерни.
- Перемкніться на випадкове скидання, щоб рівномірно заповнити сітку та спостерігати безперервні мікролавини.
- Використовуйте режим клацання, щоб вручну висипати 20 зерен у будь-якому місці — запустіть власну цільову лавину.
- Спостерігайте, як лог-лог гістограма під полотном формує пряму лінію нахилу — степеневий закон у дії.
- Змініть K з 4 на 2 або 8 і подивіться, як критичний поріг змінює патерн насичення.
🎨 Комплексні функції
Розфарбування області
Розфарбування області — це техніка для візуалізації комплекснозначних функцій f : ℂ → ℂ на 2D-полотні. Для кожної точки z = x + iy у вікні перегляду ми обчислюємо f(z) = u + iv і відображаємо результат у колір:
- Відтінок = (arg f(z) + π)/(2π) × 360°, тож повна веселка проходить один цикл навколо кожного нуля.
- Яскравість = 0.35 + 0.4×((log|f(z)|) mod 1), що створює концентричні ізоконтурні кільця величини при |f| = ek.
- Насиченість = 85%, залишається постійною для збереження читабельності.
Комплексна арифметика в JS
Уся арифметика виконується аналітично в парах (дійсна, уявна) — жоден об'єкт комплексного числа не виділяється, щоб внутрішній цикл залишався швидким:
- exp z = ex(cos y + i sin y)
- sin z = sin(x)cosh(y) + i cos(x)sinh(y)
- cos z = cos(x)cosh(y) − i sin(x)sinh(y)
- tan z = sin(z)/cos(z) через покомпонентне ділення
- sinh z = sinh(x)cos(y) + i cosh(x)sin(y)
- Мебіус = (z−1)/(z+1) — конформний автоморфізм сфери Рімана
Загалом доступно дванадцять функцій. Перемикання функції запускає відкладений повторний рендеринг усіх 360 000 пікселів; під час обчислення (~30 мс) показується накладення «Rendering…».
Що спробувати
- z² — два сектори, кожен колір з'являється двічі; один нуль у початку координат.
- 1/z — та сама структура, що й z², але інвертована (один полюс у початку координат).
- sin z — нескінченно багато нулів уздовж дійсної осі, на відстані π один від одного; періодична стовпчикова структура.
- exp z — жодних полюсів чи нулів; яскравість зростає праворуч (Re z зростає).
- tan z — полюси в точках z = π/2 + kπ; подвійно навите кольорове колесо в кожному з них.
- Мебіус — конформно відображає площину; спостерігайте, як прямі перетворюються на кола.
- Увімкніть сітку Re/Im, щоб побачити, як f(z) деформує декартові координатні лінії.
- Наблизьте полюс або нуль — кількість обертів кольору навколо нього дорівнює його порядку.
Технічні особливості
-
Фрактал Ньютона —
newtonStep(zr, zi, n)обчислює zn повторнимcmul(без тригонометрії, без логарифмів, лише цілий показник степеня); зображення 600×600 рендериться менш ніж за <100 мс у сучасному браузері. ДебаунсscheduleRender()(30 мс) запобігає частим повторним рендерингам під час перетягування/прокрутки. Легенда автоматично перебудовується при зміні степеня. -
Піщана купа — стабілізація BFS з єдиним плоским
бітовим полем черги
Uint8Arrayуникає повторного додавання клітинок у чергу. Журнал лавин — цеMap<size, count>, що оновлюється після кожної групи скидань і відображається як лог-лог лінійний графік на другому полотні під сіткою. -
Комплексні функції — власна функція
hslToRgbзамінює обчислення CSS у гарячому циклі пікселів (уникає розбору рядків). Масштабування прокруткою зберігає позицію курсора в координатах комплексної площини (та сама техніка, що й у Фракталі Ньютона). Підтримується жест щипка на сенсорних екранах. -
Усі симуляції хвилі 31 виходять з повними сторінками EN + UK і
зареєстровані в
simulations.json.
Теги
Метод Ньютона Фрактали Басейни притягання Піщана купа Самоорганізована критичність Степеневий закон Комплексний аналіз Розфарбування області Конформне відображення Хвиля 31
Огляд хвилі 32
Три симуляції розробляються для хвилі 32:
- Дифузійно-обмежена агрегація — частинки виконують випадкові блукання й приклеюються при контакті; отриманий кластер DLA має фрактальну розмірність ~1.71.
- Фазовий портрет — інтерактивний аналіз фазової площини для 2D автономних ОДР; візуалізуйте нуль-ізокліни, нерухомі точки, граничні цикли та басейни притягання для систем Лотка-Вольтерра, ван дер Поля та власних систем.
- Патерни Тюрінга — реакційно-дифузійний механізм морфогенезу Алана Тюрінга; два морфогени з різними коефіцієнтами дифузії самовільно утворюють плями, смуги й лабіринти.
Усі симуляції хвилі 32 вийдуть із сторінками EN + UK у день запуску.