Eigendrum: онлайн-решатель вычисляет и озвучивает частоты колебаний барабана любой формы
Eigendrum, размещённый на eigendrum.com, решает классическую задачу математической физики о собственных колебаниях мембраны, зажатой по краю: уравнение −∇²u = λu внутри формы при u = 0 на границе. Для большинства форм у этой задачи нет формулы в замкнутом виде, поэтому инструмент покрывает нарисованную пользователем фигуру треугольной сеткой, строит матрицы жёсткости и массы методом конечных элементов и находит наименьшие собственные значения уравнения Kφ = λMφ прямо в браузере, без сервера и без установки. Каждое решение, это мода (стоячая волна) с частотой, пропорциональной корню из собственного значения λ. Точность решателя проверяется на каждом изменении кода против форм с точным аналитическим решением: частоты круга, это нули функций Бесселя, частоты прямоугольника, π²(m²/a² + n²/b²); решатель воспроизводит оба эталона с точностью лучше 0,1%. Поскольку используется согласованный (conforming) метод конечных элементов, минимизирующий энергию на ограниченном пространстве функций, ошибка гарантированно смещена в одну сторону, решатель немного завышает частоты, но никогда не занижает их. Место удара по мембране имеет значение: мода возбуждается пропорционально тому, насколько сильно она смещается в этой точке, а удар по линии, где мода неподвижна, вообще её не возбуждает, это не заложено программистом отдельно, а следует из проекции формы удара на моды. Обычный удар молоточком возбуждает сразу смесь всех мод, но можно нажать на конкретную строку списка мод и услышать одну частоту в чистом виде, так, как ни один реальный удар не может её выделить. Форму можно не только рисовать: полярное уравнение r(t) задаёт контур вроде пятилепесткового цветка 1 + 0,3·cos(5t), а параметрическая пара x(t), y(t) даёт замкнутые кривые, недоступные полярной записи, например, нефроиду или яйцевидную форму. Уравнение хранится текстом прямо в ссылке, которую можно читать и редактировать в адресной строке, а слишком тонкие фигуры, которые нельзя честно замостить сеткой, инструмент отклоняет, а не выдаёт по ним заведомо неверные числа. Отдельный раздел демонстрирует ответ на вопрос Марка Каца, поставленный в 1966 году: можно ли услышать форму барабана по его звуку? В 1992 году Кэролин Гордон, Дэвид Уэбб и Скотт Уолперт ответили «нет», построив две разные по очертаниям фигуры с полностью совпадающим набором частот, обе фигуры собраны из одних и тех же семи треугольников, только по-разному расставленных, у них равны площадь и периметр, а координаты взяты из работы Дрисколла 1997 года «Eigenmodes of Isospectral Drums». Обе фигуры включены в список форм Eigendrum как «Kac drum I» и «Kac drum II»: контуры у них разные, а звук, нет. Физическую модель дополняют настраиваемые параметры: скорость волны в мембране (натяжение и плотность) задаётся ползунком высоты тона относительно круга той же площади, из-за этого при одинаковой площади формы расходятся по основному тону на диапазон около шести полутонов, и круг звучит ниже всех остальных встроенных форм не по выбору автора, а в силу неравенства Фабера, Крана. Ширина молоточка, тоже ползунок, а время его контакта с мембраной зафиксировано на уровне нескольких миллисекунд, потому что мгновенный удар возбуждал бы все моды одинаково сильно; оба параметра влияют на то, какие моды удар способен возбудить, но не могут сдвинуть их частоты. Затухание задано демпфированием Рэлея, при котором потери растут пропорционально квадрату частоты, поэтому высокие обертоны гаснут первыми, и звук барабана темнеет по мере затухания. У инструмента нет сборки и серверного бэкенда: построение сетки, решение задачи на собственные значения и синтез звука выполняются целиком на устройстве пользователя. Форма, которую рисует пользователь, хранится в адресной строке после символа #, который браузер никогда не отправляет на сервер, а аналитика на сайте настроена так, чтобы её не записывать. Сайт использует Vercel Analytics, Google Analytics и Google AdSense, именно этим, по утверждению авторов, оплачивается домен и бесплатный доступ к инструменту. Исходный код решателя вместе с тестами против эталонных спектров опубликован на GitHub в репозитории github.com/BaselAshraf81/eigendrum.
Ключевые факты
- Eigendrum численно решает задачу о собственных частотах мембраны произвольной формы методом конечных элементов и воспроизводит эталонные спектры круга и прямоугольника с точностью лучше 0,1%
- Форму можно нарисовать мышью или задать уравнением, полярным r(t) (например, пятилепестковый цветок 1 + 0,3·cos(5t)) или параметрическим x(t), y(t) для фигур вроде нефроиды
- Раздел с «барабанами Каца» показывает две фигуры из одних и тех же семи треугольников с полностью одинаковым набором частот, ответ 1992 года на вопрос Марка Каца 1966 года «можно ли услышать форму барабана»
- Удар молоточком моделируется отдельно от собственных частот: ширина молоточка и контактное время (несколько миллисекунд) определяют, какие моды звучат, но не их частоту; затухание, по модели Рэлея, поэтому высокие обертоны гаснут первыми
- Всё считается локально в браузере без сервера; форма хранится в адресной строке после # и не передаётся на сервер, хотя сайт монетизируется через Google AdSense и аналитику
Почему это важно
Eigendrum превращает абстрактную задачу математической физики, уравнение на собственные значения оператора Лапласа, в наглядный и слышимый эксперимент. Это редкий случай, когда серьёзный метод конечных элементов со сравнением против точных аналитических решений работает интерактивно прямо в браузере, без установки и без серверной части.
Кому это важно
Тем, кто изучает или преподаёт методы конечных элементов, акустику и математическую физику; тем, кого интересует исторический вопрос Марка Каца «можно ли услышать форму барабана» и его отрицательный ответ 1992 года; разработчикам, которым любопытен пример клиентского численного решателя без бэкенда.
Как это применить
Инструмент бесплатен, доступен на eigendrum.com, не требует регистрации и установки. Форму задают рисованием или уравнением прямо в адресной строке, поэтому ссылкой на конкретную форму можно просто поделиться. Исходный код решателя и тесты против эталонных спектров открыты на GitHub (github.com/BaselAshraf81/eigendrum).
Можно ли доверять
Да: решатель проверяется на каждом изменении кода против форм с точным аналитическим решением (круг, нули функций Бесселя, прямоугольник, π²(m²/a² + n²/b²)) и воспроизводит их с точностью лучше 0,1%. Поскольку используется согласованный метод конечных элементов, ошибка гарантированно смещена в одну сторону, в сторону завышения частоты, а не занижения.
Риски и подводные камни
Источник не называет ни дату запуска проекта, ни объём аудитории, ни явно указанного автора в основном тексте, только имя пользователя в ссылках на GitHub и Ko-fi. Сайт монетизируется через Google AdSense и аналитику Vercel/Google, хотя, по утверждению авторов, сама нарисованная форма хранится только в адресной строке и на сервер не передаётся.
«Демпфирование подчиняется модели Рэлея, поэтому потери растут пропорционально квадрату частоты: высокие обертоны затухают первыми, именно поэтому звук барабана темнеет по мере затухания.»
— eigendrum.com