Périodicité dans les automates cellulaires
La nouvelle fonction FindTransientRepeat identifie les parties transitoires et répétées d'une liste. Utilisons-la pour examiner les automates cellulaires.
Regardez la règle 30 de l'automate cellulaire. La fonction RulePlot de la version 11 est un outil utile pour trouver les règles de transformation associées.
In[1]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_47.png)
RulePlot[CellularAutomaton[30]]
Out[1]=
![](assets.fr/periodicity-in-cellular-automata/O_53.png)
Définissez les conditions initiales de l'automate cellulaire en utilisant la nouvelle fonction CenterArray.
In[2]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_48.png)
initc = CenterArray[7]
Out[2]=
![](assets.fr/periodicity-in-cellular-automata/O_54.png)
Calculez la règle 30 de l'automate cellulaire avec les conditions initiales ci-dessus, et tracez-la dans un réseau discret de carrés.
In[3]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_49.png)
ca30 = CellularAutomaton[30, initc, 20];
ArrayPlot[ca30, Mesh -> True]
Out[3]=
![](assets.fr/periodicity-in-cellular-automata/O_55.png)
FindTransientRepeat fournit la partie répétée de cet automate cellulaire.
In[4]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_50.png)
tr30 = FindTransientRepeat[ca30, 2];
ArrayPlot[Last[tr30], Mesh -> True]
Out[4]=
![](assets.fr/periodicity-in-cellular-automata/O_56.png)
Répétez les mêmes étapes pour la règle 90 de l'automate cellulaire.
In[5]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_51.png)
RulePlot[CellularAutomaton[90]]
Out[5]=
![](assets.fr/periodicity-in-cellular-automata/O_57.png)
In[6]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_52.png)
ca90 = CellularAutomaton[90, initc, 20];
ArrayPlot[ca90, Mesh -> True]
Out[6]=
![](assets.fr/periodicity-in-cellular-automata/O_58.png)
In[7]:=
![Click for copyable input](assets.fr/periodicity-in-cellular-automata/In_53.png)
tr90 = FindTransientRepeat[ca90, 2];
ArrayPlot[Last[tr90], Mesh -> True]
Out[7]=
![](assets.fr/periodicity-in-cellular-automata/O_59.png)