Use a decomposição de Smith para analisar um reticulado
Considere o reticulado gerados pelos números inteiros múltiplos dos vetores
e
.
In[1]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_91.png)
b1 = {3, -3};
b2 = {2, 1};
In[2]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_92.png)
ptsb = Flatten[Table[j b1 + k b2, {j, -12, 12}, {k, -12, 12}], 1];
In[3]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_93.png)
graphicsb =
Graphics[{Blue, PointSize[Large], Point@ptsb}, PlotRange -> 10,
Axes -> True]
Out[3]=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_81.png)
Permita que seja a matriz cujas linhas são
e
.
In[4]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_94.png)
m = {b1, b2};
A decomposição Smith dá três matrizes que satisfazem a identidade .
In[5]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_95.png)
{u, r, v} = SmithDecomposition[m];
In[6]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_96.png)
u.m.v == r
Out[6]=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_82.png)
As matrizes e
possuem entradas de números inteiros e um fator determinante.
In[7]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_97.png)
{u // MatrixForm, v // MatrixForm, Det[u], Det[v]}
Out[7]=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_83.png)
A matriz é um número inteiro e diagonal. De suas entradas, pode ser visto que a estrutura do grupo
is
ou simplesmente
, as
é um grupo trivial.
In[8]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_98.png)
r // MatrixForm
Out[8]//MatrixForm=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_84.png)
Multiplicando a identidade a direita por
resulta
. Como
é um número inteiro e fator determinante
,
gera o mesmo reticulado como
porém mais simples.
In[9]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_99.png)
g = r.Inverse[v];
g // MatrixForm
Out[9]//MatrixForm=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_85.png)
Visualize o reticulado gerado pelas linhas de .
In[10]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_100.png)
ptsg = Flatten[
Table[j First[g] + k Last[g], {j, -12, 12}, {k, -12, 12}], 1];
In[11]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_101.png)
graphicsg =
Graphics[{Red, PointSize[Medium], Point@ptsg}, PlotRange -> 10,
Axes -> True]
Out[11]=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_86.png)
Sobrepondo o novo reticulado sobre o original, podemos ver que eles são os mesmos.
In[12]:=
![Click for copyable input](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/In_102.png)
Show[{graphicsb, graphicsg}]
Out[12]=
![](assets.pt-br/use-the-smith-decomposition-to-analyze-a-lattice/O_87.png)