Добавить в корзинуПозвонить
Найти в Дзене
Numerical Simulations

АРТ

В последнее время я увлекся спектральными методами в полярных координатах. Задача красивая: хочешь получить высокую точность на круге или кольце — приходится изобретать что-то свое. Потому что стандартные подходы либо врут в центре, либо требуют такой гибридизации, что начинаешь скучать по декартовой сетке. В процессе разработки нового численного метода я решил построить собственную сетку. Не просто «сетку», а такую, которая была бы удобна для спектральных разложений, сохраняла бы хорошую сходимость и не требовала бы костылей в особой точке — в начале координат. Теория выглядела стройно. А вот реализация… Сетка иногда разваливалась. Не в переносном смысле, а в самом что ни на есть численном: якобианы уходили в ноль, узлы начинали «наезжать» друг на друга, а в особой точке возникали артефакты, которые следовало бы назвать именем первооткрывателя. Но такое бывает. Более того — в численном моделировании так всегда. Сначала злишься. Потом начинаешь искать ошибку: то ли аппроксимация не вы

О сетках, которые любят ломаться

В последнее время я увлекся спектральными методами в полярных координатах. Задача красивая: хочешь получить высокую точность на круге или кольце — приходится изобретать что-то свое. Потому что стандартные подходы либо врут в центре, либо требуют такой гибридизации, что начинаешь скучать по декартовой сетке.

В процессе разработки нового численного метода я решил построить собственную сетку. Не просто «сетку», а такую, которая была бы удобна для спектральных разложений, сохраняла бы хорошую сходимость и не требовала бы костылей в особой точке — в начале координат.

Теория выглядела стройно. А вот реализация…

Сетка иногда разваливалась. Не в переносном смысле, а в самом что ни на есть численном: якобианы уходили в ноль, узлы начинали «наезжать» друг на друга, а в особой точке возникали артефакты, которые следовало бы назвать именем первооткрывателя.

Но такое бывает. Более того — в численном моделировании так всегда.

Сначала злишься. Потом начинаешь искать ошибку: то ли аппроксимация не вывозит, то ли условие ортогональности нарушилось, то ли просто сетка родилась с изъяном. Перебираешь параметры, меняешь способ сгущения, пробуешь разные отображения. Где-то на третьей итерации приходит смирение.

А потом случается забавное.

Если что-то посчиталось неверно, то, как минимум, это красиво.

Полярная сетка, которая схлопнулась в центре, выдает узоры, достойные медитативной заставки. Неустойчивые моды раскрашивают поле решения в такие тона, что хочется сохранить скриншот и повесить на стену. В этом есть странная эстетика вычислительной физики: ты терпишь неудачу, а перед тобой — идеальный хаос, порожденный строгими формулами.

Конечно, потом находишь баг. Исправляешь. Сетка перестает разваливаться. Метод начинает работать. Но тот момент, когда ошибка была «неправильной, но прекрасной», запоминается лучше, чем десятки успешных расчетов.

Наверное, поэтому мы и занимаемся численным моделированием — не только ради правильных ответов, но и ради того, чтобы увидеть, как математика ломается красиво.

Ниже я привел примеры красивой сломанной сетки.

-2
-3
-4
-5
-6

А так же неправильные но красивые производные.

-7
-8