All streams
Search
Write a publication
Pull to refresh

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]

Результат

Never Give up on Differential Calculus
Never Give up on Differential Calculus

Tags:
Total votes 3: ↑3 and ↓0+4
Comments1

Articles