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]
Результат
