【发布时间】:2011-07-08 02:28:40
【问题描述】:
在Modelling Cellular automata Simulations with mathematica一书中,作者正在使用以下代码模拟二维格中的元胞自动机,
摩尔邻里的更新规则是
update[site, N, E, S, W, NE, SE, SW, NW]
其中 N = 北,E= 东,S=南,W=西,NE= 东北,SE=东南,SW= 东南,NW=西北。这些参数代表了 Moor 社区中最近邻居的值。为了应用这些规则,它使用下面的代码,
Moore[func_, lat_]:= MapThread[func,Map[RotateRight[lat,#]&,
{{0,0},{1,0},{0,-1},{-1,0},{0,1},
{1,-1},{-1,-1},{-1,1},{1,1}}],2]
对于如下表(本书第 144 页)
pasture= Table[Floor[Random[]+(preyDensity+predDensity)]*
Floor[1+Random[]+predDensity/(preyDensity+predDensity)],{n},{n}]/.
2:>{RND,Random[Integer, {1,3}],Random[Integer,{1,5}]}
RND:= Random[Integer, {1,4}]
他正在使用以下更新规则
update[{_,0,0},_,_,_,_,_,_,_,_] := {RND, 3,5}
我的问题是:通过使用如下的四维表?我也可以应用以下更新规则吗?
InitialMatrix[x_, y_, age_, disease_] :=
ReplacePart[
Table[3, {x}, {y}, {age}, {disease}], {{_, _, 1, _} ->
0, {_, _, 2, 1} ->
Floor[dogpopulation*0.2/cellsno], {_, _, 2, 3} ->
Floor[dogpopulation*0.05/cellsno], {_, _, 3, 1} ->
Floor[dogpopulation*0.58/cellsno], {_, _, 3, 3} ->
Floor[dogpopulation*0.15/cellsno]}] /.
3 :> If[RandomReal[] > 0.2, 0, RandomInteger[{1, 2}]];
update[{{x_,0,0},{y_,z_,w_},{a_,b_,c_}},_,_,_,_,_,_,_,_] :=
{{x-1,0,0},{y+z,0,w},{a,b,c}}
这是我认为如何使用我的表来处理元胞自动机的一个示例。我可以做这样的事情吗?还是我错了?
编辑我的表格
通过将我的表格更改为下面的代码,我可以使用上面的更新规则吗?
MyMatrix[x_, y_, age_, disease_] :=
Table[0, {x}, {y}] /.
0 :> ReplacePart[
Table[3, {age}, {disease}], {{1, _} -> 0, {2, 1} ->
Floor[dogpopulation*0.2/cellsno], {2, 3} ->
Floor[dogpopulation*0.05/cellsno], {3, 1} ->
Floor[dogpopulation*0.58/cellsno], {3, 3} ->
Floor[dogpopulation*0.15/cellsno]}] /.
3 :> If[RandomReal[] > 0.2, 0, RandomInteger[{1, 2}]];
【问题讨论】:
-
我想知道你什么时候才能找到与 CA 的连接。鉴于您目前使用的方法目前存在的问题,切换中游可能只会混淆问题。无论如何,您将 3*3 矩阵的规则应用于四维张量,所以我不确定该规则是否匹配。您将需要编辑规则以使其匹配。此外,这本书已有 15 年历史,其中一些代码可能会被修改。记住人们早先关于 BernoulliDistribution 和 BinomialDistribution 的建议。 15 年前他们不在那里。
-
“...这本书将附带一个 DOS 软盘...”它在亚马逊上说。 - 会吗?
-
@ndroock1 是的,它有,但我没有,因为我是从二手买的。 @Verveia我知道这本书很老了,确实有些代码已经改变了,但这是我发现对数学中的细胞自动机非常有帮助的唯一一本书,但是因为我的表是四维的,就像你说的那样,我不确定如果我可以应用这条规则。注意:我表中的每个 3x3 矩阵都是元胞自动机中的一个单元格
-
我只是注意到我在之前的帖子中写错了@Verbeia。
标签: wolfram-mathematica cellular-automata