Периодичность в клеточных автоматах
Новая функция FindTransientRepeat определяет временные и повторяющиеся части списка. Она может быть использована для анализа клеточных автоматов.
Посмотрите на правило 30 клеточного автомата (КА). Функция версии 11 RulePlot является полезным инструментом для поиска соответствующих правил трансформации.
In[1]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_47.png)
RulePlot[CellularAutomaton[30]]
Out[1]=
![](assets.ru/periodicity-in-cellular-automata/O_53.png)
Задайте начальные условия для КА, используя новую функцию CenterArray.
In[2]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_48.png)
initc = CenterArray[7]
Out[2]=
![](assets.ru/periodicity-in-cellular-automata/O_54.png)
Рассчитайте правило 30 КА с указанными ранее начальными условиями и графически изобразите его на дискретном массиве клеток.
In[3]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_49.png)
ca30 = CellularAutomaton[30, initc, 20];
ArrayPlot[ca30, Mesh -> True]
Out[3]=
![](assets.ru/periodicity-in-cellular-automata/O_55.png)
FindTransientRepeat выдаёт повторяющуюся часть данного КА.
In[4]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_50.png)
tr30 = FindTransientRepeat[ca30, 2];
ArrayPlot[Last[tr30], Mesh -> True]
Out[4]=
![](assets.ru/periodicity-in-cellular-automata/O_56.png)
Повторите данные шаги для правила 90 клеточного автомата.
In[5]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_51.png)
RulePlot[CellularAutomaton[90]]
Out[5]=
![](assets.ru/periodicity-in-cellular-automata/O_57.png)
In[6]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_52.png)
ca90 = CellularAutomaton[90, initc, 20];
ArrayPlot[ca90, Mesh -> True]
Out[6]=
![](assets.ru/periodicity-in-cellular-automata/O_58.png)
In[7]:=
![Click for copyable input](assets.ru/periodicity-in-cellular-automata/In_53.png)
tr90 = FindTransientRepeat[ca90, 2];
ArrayPlot[Last[tr90], Mesh -> True]
Out[7]=
![](assets.ru/periodicity-in-cellular-automata/O_59.png)