Язык Wolfram Language

Дифференциальные системы собственных векторов

Вычисление спектра на снежинке Коха

Создадим рекурсивную снежинку Коха.

In[1]:=
Click for copyable input
KochStep[{p1_, p2_}] := With[{q1 = p1 + (p2 - p1)/3, q3 = p1 + 2 (p2 - p1)/3, q2 = (p1 + (p2 - p1)/3) + RotationMatrix[-\[Pi]/3].(p2 - p1)/3}, {p1, q1, q2, q3, p2}]; KochStep[pp : {{_, _} ..}] := Join[Partition[Flatten[Most /@ (KochStep /@ Partition[pp, 2, 1])], 2], {pp[[-1]]}]; vertices = Nest[KochStep, N[{{3 Sqrt[3]/4, 3/4}, {-3 Sqrt[3]/4, 3/4}, {0, -3/2}, {3 Sqrt[3]/4, 3/4}}], 4]; region = Polygon[vertices];

Укажем оператор Лапласа.

In[2]:=
Click for copyable input
\[ScriptCapitalL] = -Laplacian[u[x, y], {x, y}];

Укажем граничное условие Дирихле.

In[3]:=
Click for copyable input
\[ScriptCapitalB] = DirichletCondition[u[x, y] == 0, True];

Рассчитаем девять собственных значений и собственных функций оператора Лапласа.

In[4]:=
Click for copyable input
{vals, funs} = NDEigensystem[{\[ScriptCapitalL], \[ScriptCapitalB]}, u[x, y], {x, y} \[Element] region, 9];

Рассмотрим полученные собственные значения.

In[5]:=
Click for copyable input
vals
Out[5]=

Визуализируем полученную собственную функцию.

код на языке Wolfram Language целиком
In[6]:=
Click for copyable input
Grid[Partition[ Table[Plot3D[funs[[i]], {x, y} \[Element] region, PlotLabel -> vals[[i]], MeshFunctions -> {#3 &}, MeshShading -> {Automatic, None}, Mesh -> 10, Background -> None, Boxed -> False, Axes -> None, PlotRange -> All, ColorFunction -> "TemperatureMap"], {i, Length[vals]}], 3], Spacings -> 0]
Out[6]=

Родственные примеры

de en es fr ja ko pt-br zh