细胞自动机-在边界细胞上做什么



我正在尝试实现一个模拟波浪行为的细胞自动机。我正在使用带有r=2的Von Neumann邻域,就像这里的一样

我的问题是:我应该如何计算边界上单元格的状态?

例如:我有一个数组a,我想计算a[0][0]的值。

细胞的状态是在(-1,1)范围内的浮动,其中0是陆地。在"常规"细胞上,我可以获取邻居的状态,但当邻居较少(<12)时,结果是错误的,并"产生"新的浪潮。

您的问题有不同的解决方案。

  1. 周期边界条件:将晶格视为环面,并使用模来循环单元

示例:a[-1][0]=a[n-2][0]

好的一面是:这通过平移使晶格不变来避免任何"边界效应",这应该会导致更自然的进化。坏的一面:在较小的尺度上,这可能会产生不希望的影响,如共振。

如果你想对你的模型进行定量研究,比如相变、平均场等,这种方法特别适合

  1. 惰性边界条件:考虑晶格的边界具有吸收规则,即它们模拟总是具有相同惰性状态的"外部"细胞

例如:a[-1][0]=10e-6左右,因为0表示陆地。

好的一面:你可以避免共振效应。不利的一面:潜在的边界效应,以及缺乏外部波源。

这种方法更适合定性使用:检查实现的有效性,寻找模型伪像(例如,类似马的模式?),或者简单地呈现一个对观察者来说看起来有机的系统。

  1. 要有创造力

示例:所有边界单元格都是陆地(0)。

相关内容

  • 没有找到相关文章

最新更新