【问题标题】:Create a new Cellular Automata rule in Mathematica在 Mathematica 中创建新的元胞自动机规则
【发布时间】:2012-07-04 09:51:18
【问题描述】:

我需要在 Mathematica 中创建一个新的 CA 规则。 我能怎么做?我的意思是,我需要创建一个具有 3 种颜色(黑色、白色和灰色)的 CA。 你能帮帮我吗?

【问题讨论】:

    标签: wolfram-mathematica cellular-automata


    【解决方案1】:

    指定自定义规则的一种方法是定义一个函数,在给定邻居列表和时间步长的情况下,该函数将输出更新后的值。例如

    fun[lst_, t_] := Mod[Total[lst], 3]
    

    这将简单地计算一个元素的所有邻居的总和以 3 为模。然后可以在CellularAutomaton 中使用此函数,如下所示

    With[{init = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, nsteps = 10, r = 1},
       res = CellularAutomaton[{fun, {}, r}, init, nsteps]]
    
    ArrayPlot[res]
    

    【讨论】:

    • 非常感谢。例如,如果我想使用三种颜色得到以下输出:{0,1,1,0,2,2,1,0},我可以设置一个从它开始的函数吗?
    • @DanieleRicci 你到底是什么意思?在我上面的示例中,提供给fun 的参数是单元的邻域和时间步长,因此对于邻域半径为 1 且可能状态为 0、1、2 的一维 CA,您需要指定 fun[{0, 0, 0}, t]fun[{0, 0, 1}, t], ... 和 fun[{2, 2, 2}, t] 其中t 是时间步长。
    • 亲爱的 Heike,我很抱歉我的愚蠢问题:我想要以下规则:白色 (0)、黑色 (1)、灰色 (2) --> 0, 0, 0 - -> 0; 0,0,1-->
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2012-05-04
    • 2013-06-12
    相关资源
    最近更新 更多