Never gonna give Differential Calculus up или решаем уравнение Лапласа на теле Рика Эстли в пару строчек 🕺🏼
Пример создания и использования граничной сетки для решения уравнений на её основе в WLJS Notebook
Улыбочку! 📸
img = (* Drag n drop фотографию Рика *);
Применяем фильтр, чтобы оставить только силуэт
MeanShiftFilter[%, 5, 1] // Binarize // ColorNegate
Делаем сетку для решения уравнения из ч/б изображения
ξ = ImageMesh[%]
Ищем собственные значения и векторы (первые 6) оператора Лапласа aka решаем волновое уравнение
{vals, funs} = NDEigensystem[ { -Laplacian[u[x, y], {x, y}], DirichletCondition[u[x, y] == 0, True] }, u[x, y], Element[{x, y}, ξ], 6];
Рисуем первые 6 решений и их "энергии"
Grid@ Partition[ Table[ContourPlot[ funs[[i]], Element[{x, y}, ξ], PlotRange -> All, ImageSize->300, PerformanceGoal->"Speed", PlotLabel -> vals[[i]] ], {i, Length[vals]}], 3]
Результат

