Ondes dans le Grand Lac Salé
À l'aide de ImageMesh, vous pouvez convertir des segments d'image en objets BoundaryMeshRegion. Ces régions de mailles vous permettent d'utiliser des fonctions dans d'autres aires, telles que les méthodes d'éléments finis (FEM).
Pour illustrer cette connexion FEM, déterminez les modes principaux d'ondes de surface sur le Grand Lac Salé dans l'Utah.

img = EntityValue[Entity["Lake", "GreatSaltLake::yw8cf"], "Image"]

Régulariser l'image avec un filtre de moyen déplacement.

img2 = MeanShiftFilter[img, 3, 0.1]

Obtenez une segmentation par région en croissance.

mask = RegionBinarize[img2, \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1:eJzt1jEKwkAQQNFdK0uv4C1sLW0VD6AYxSZCFMRzCJ7XiF3SzFb7lf8ggUCK
D8MmM99f1sdJSuk67W/r3X3ZdbvHZtY/bNvr+dQ2h1V7a05Nt9h/Xnv21ytJ
kiRJkiRJkn5H7tVuGLMqzqo4q+KsiuNW8bKsimNWfbNwXVbF5Yzuqp0xZFUB
dBaui5kF/T5AsxJ1jNAsq0qgs3BlOSPDMrMLmvUBDcNnsbqov2x4FrWrdscA
NIu6SjCzoEOEZlGniF5Ta0eMmVXCqjjmCJlV5KzaDWNWxXGreFnMKvAIazeM
MUfIXEmtKsCs8hSWsCrOqjhmlSRJkiRJkvS/3tRrD1M=
"], {{0, 147}, {150,
0}}, {0, 1},
ColorFunction->GrayLevel],
BoxForm`ImageTag["Bit", ColorSpace -> Automatic, Interleaving -> None],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{150, 147},
PlotRange->{{0, 150}, {0, 147}}]\), 1/5]

Récupérez un objet de BoundaryMeshRegion de la surface du lac surface.

\[ScriptCapitalR] = ImageMesh[mask]

Créez une surface de maille du lac.

\[CapitalOmega] =
TriangulateMesh[\[ScriptCapitalR], MaxCellMeasure -> 8]

Résolvez l'équation de la surface du lac d'onde en déterminant les fonctions propres du Laplacien intérieur de la région du lac.

\[ScriptCapitalL] = -\!\(
\*SubsuperscriptBox[\(\[Del]\), \({x, y}\), \(2\)]\(\[CurlyPhi][x,
y]\)\);
Utiliser une condition de limite.

\[ScriptCapitalB] = DirichletCondition[\[CurlyPhi][x, y] == 0, True];
Générez une base orthonormée de fonctions propres Φ avec valeurs propres Λ.

{\[CapitalLambda], \[CapitalPhi]} =
NDEigensystem[{\[ScriptCapitalL], \[ScriptCapitalB]}, \[CurlyPhi][x,
y], {x, y} \[Element] \[CapitalOmega], 64];
Montrez les six premiers modes d'oscillation.

GraphicsGrid[
Partition[
Table[ContourPlot[\[CapitalPhi][[
k]], {x, y} \[Element] \[CapitalOmega], PlotRange -> All,
PlotLabel -> \[CapitalLambda][[k]], PlotTheme -> "Minimal"], {k,
6}],
3
],
ImageSize -> 512
]

L'évolution temporelle des modes d'oscillation en décomposition est donnée par ce qui suit.

\[CapitalTheta][\[Lambda]_, \[Xi]_, t_] = FullSimplify[
DSolveValue[Join[{ \!\(
\*SubscriptBox[\(\[PartialD]\), \(t,
t\)]\(\(TraditionalForm\`\[CurlyTheta]\)[
t]\)\) + \[Xi] \!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]\(\(TraditionalForm\`\
\[CurlyTheta]\)[
t]\)\) == -\[Lambda] \!\(TraditionalForm\`\[CurlyTheta]\)[
t] }, {\!\(TraditionalForm\`\[CurlyTheta]\)[0] ==
1, \[CurlyTheta]'[0] ==
0} ], \!\(TraditionalForm\`\[CurlyTheta]\)[t], t],
{\[Lambda] > 0, \[Xi] > 0, \[Xi]^2 < 4 \[Lambda], t \[Element] Reals}
]

Au moyen de l'expansion d'une perturbation initiale en fonctions propres et en laissant évoluer dans le temps, une simulation de la propagation des ondes à travers le lac est obtenu.
