元胞自动机中的周期性
全新函数 FindTransientRepeat 可识别列表的瞬态和重复部分. 其可用于探查元胞自动机.
查看 rule 30 元胞自动机(CA). 版本 11 函数 RulePlot 是查找相关转换规则的有用工具.
In[1]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_47.png)
RulePlot[CellularAutomaton[30]]
Out[1]=
![](assets.zh/periodicity-in-cellular-automata/O_53.png)
通过 CenterArray 定义 CA 的初始条件.
In[2]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_48.png)
initc = CenterArray[7]
Out[2]=
![](assets.zh/periodicity-in-cellular-automata/O_54.png)
同上述起始条件计算 rule 30 CA 并将其绘制在方形离散数组中.
In[3]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_49.png)
ca30 = CellularAutomaton[30, initc, 20];
ArrayPlot[ca30, Mesh -> True]
Out[3]=
![](assets.zh/periodicity-in-cellular-automata/O_55.png)
FindTransientRepeat 给出该 CA 的重复部分.
In[4]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_50.png)
tr30 = FindTransientRepeat[ca30, 2];
ArrayPlot[Last[tr30], Mesh -> True]
Out[4]=
![](assets.zh/periodicity-in-cellular-automata/O_56.png)
对 rule 90 元胞自动机重复相同步骤.
In[5]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_51.png)
RulePlot[CellularAutomaton[90]]
Out[5]=
![](assets.zh/periodicity-in-cellular-automata/O_57.png)
In[6]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_52.png)
ca90 = CellularAutomaton[90, initc, 20];
ArrayPlot[ca90, Mesh -> True]
Out[6]=
![](assets.zh/periodicity-in-cellular-automata/O_58.png)
In[7]:=
![Click for copyable input](assets.zh/periodicity-in-cellular-automata/In_53.png)
tr90 = FindTransientRepeat[ca90, 2];
ArrayPlot[Last[tr90], Mesh -> True]
Out[7]=
![](assets.zh/periodicity-in-cellular-automata/O_59.png)