Я попытался смоделировать Вселенную. Вот что получилось
Сегодня вечером я сидел и смотрел как на моём экране рождаются и умирают частицы.
Я не запускал готовый симулятор. Я написал его сам. На Java. За один день. И в какой-то момент программа показала мне фазовый переход — то самое явление которое физики-теоретики используют для объяснения первых секунд после Большого Взрыва.
Я не планировал это увидеть. Оно вышло само.
Начало: что если убрать случайность
Всё началось с одного вопроса. У меня был проект — симуляция квантового поля на основе тетраэдров. Каждый узел немного дрожал: Math.random(). Красиво, но мертво. Шум без смысла.
Я подумал: а что если заменить случайность на закон? Пусть энергия течёт от узла к соседу пропорционально разнице — как тепло. Одно правило. Больше ничего.
Запустил на решётке 100×100 — десять тысяч узлов. Поставил одну точку с энергией в центре. Нажал пуск.
По экрану пошла идеальная круговая волна.
Дошла до края и появилась с другой стороны — решётка замкнута как поверхность бублика, тор. Волна вернулась и встретила себя. На экране появились интерференционные кольца — точно как в двухщелевом опыте Юнга из учебника квантовой механики.
Я этого не программировал. Это вышло из одного правила.
Первая проблема: всё расплывается
Красота длилась недолго. Через тысячу шагов поле превратилось в равномерный туман. Тепловая смерть. Второе начало термодинамики — хотя я его не закладывал. Оно просто случилось, потому что именно так работает диффузия.
Частицы в реальном мире так не ведут себя. Электрон не растворяется. Значит нужно что-то ещё.
Поворот: нелинейность
Я добавил одно слагаемое. Потенциал с двумя устойчивыми состояниями — поле теперь хочет быть либо в значении +V, либо −V. Как магнит который хочет быть намагничен в одну из двух сторон. Физики называют это потенциалом φ⁴.
И вот тут началось.
После одного нажатия мышкой:
- Сначала расходится волна — как раньше
- Потом поле начинает выбирать: здесь будет +V, там −V
- На границе между зонами возникает устойчивая структура — она не размывается
- Она движется, сталкивается с другими границами
- При встрече двух противоположных границ — аннигиляция. Вспышка. Счётчик падает
Программа считала эти границы автоматически. На первых тиках — 7 штук. Через сотню тиков — 222. Они рождались парами и умирали парами. Закон сохранения топологического заряда — и я его тоже не закладывал.
Самый красивый момент
Тик 58 после сильного возбуждения.
На синем фоне — идеальный золотой круг с чёткой чёрной границей. Как мыльный пузырь. Как будто внутри этого кольца — другое пространство с другими правилами.
В космологии это называется фазовым переходом при инфляции. Именно так теоретики описывают первые моменты после Большого Взрыва — пузыри новой фазы вакуума внутри старого. Это есть в серьёзных учебниках по космологии.
Я не читал про это когда писал код. Оно просто получилось.
Что дальше наблюдал
К тику 18 000 поле превратилось в кипящий хаос — тысячи крошечных доменов постоянно рождаются и аннигилируют. Это квантовый вакуум — не пустота, а море виртуальных пар частица-античастица которые живут доли секунды. Именно так он описан в теоретической физике.
Вся эволюция от порядка к хаосу заняла несколько минут на экране. Стрела времени из одного уравнения.
Почему это важно (для меня лично)
Я не открыл новую физику. Уравнение которое я использовал давно известно. Солитоны изучаются с 1960-х.
Но есть кое-что в самом процессе написания и запуска — что не даёт чтение учебника.
Когда ты видишь как из одного простого правила сам по себе вырастает фазовый переход — ты перестаёшь воспринимать Вселенную как данность. Начинаешь думать: а вдруг там тоже одно правило? А всё остальное — волны, частицы, время, пространство — просто то, что выходит само когда это правило работает на достаточно большой решётке?
Это не ответ. Это вопрос. Но хороший вопрос стоит дороже готового ответа.
Следующий шаг
Атом — это стоячая волна которая замкнулась сама на себе. Целое число длин волн в замкнутой орбите — вот откуда квантование энергий. Не аксиома, не постулат — геометрия.
Чтобы получить атом в симуляции нужно второе поле: тяжёлое (ядро) и лёгкое (электрон). Лёгкое будет резонировать вокруг тяжёлого. И только дискретные радиусы выживут — остальные погасят сами себя.
Если это получится — квантование выйдет само. Из правила. Как всё остальное.
Код на Java, никаких зависимостей. Репозиторий открыт. Следующая статья — два поля и попытка получить атом.