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

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

Régularisez l'image avec un filtre à décalage moyen.

img2 = MeanShiftFilter[img, 3, 0.1]

Obtenez une segmentation par la croissance des régions.

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 BoundaryMeshRegion de la surface du lac.

\[ScriptCapitalR] = ImageMesh[mask]

Créez un maillage de la surface du lac.

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

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

\[ScriptCapitalL] = -\!\(
\*SubsuperscriptBox[\(\[Del]\), \({x, y}\), \(2\)]\(\[CurlyPhi][x,
y]\)\);
Utilisez une condition aux 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];
Affichez 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}
]

En développant une perturbation initiale en fonctions propres et en les laissant évoluer dans le temps, on obtient une simulation de la propagation des ondes à travers le lac.
