我正在尝试实现一个模拟波浪行为的元胞自动机。我在r=2
这里使用冯诺依曼社区
我的问题是:我应该如何计算边界上单元格的状态?
例如:我有一个数组a
,我想计算a[0][0]
.
细胞状态是 (-1,1) 范围内的浮点数,其中 0 是陆地。在“常规”单元格上,我可以获取邻居的状态,但是当邻居较少(<12)时,结果就是错误的,并“产生”了新的浪潮。
我正在尝试实现一个模拟波浪行为的元胞自动机。我在r=2
这里使用冯诺依曼社区
我的问题是:我应该如何计算边界上单元格的状态?
例如:我有一个数组a
,我想计算a[0][0]
.
细胞状态是 (-1,1) 范围内的浮点数,其中 0 是陆地。在“常规”单元格上,我可以获取邻居的状态,但是当邻居较少(<12)时,结果就是错误的,并“产生”了新的浪潮。
您的问题有不同的解决方案。
示例:a[-1][0] = a[n-2][0]
好的一面:这通过使晶格通过平移保持不变来避免任何“边界效应”,这应该会导致更自然的进化。坏的一面:在较小的范围内,这可能会产生不希望的影响,例如共振。
如果您想对模型进行定量研究,例如相变、平均场等,这种方法特别适合。
示例:a[-1][0] = 10e-6 左右,因为 0 表示着陆。
好的一面:你避免了共振效应。坏的一面:潜在的边界效应,以及没有外部波源。
这种方法更适合定性使用:检查实现的有效性,寻找模型人工制品(例如,类似漩涡的模式?)或简单地展示一个对观察者来说看起来很有机的系统。
示例:所有边界单元都是陆地 (0)。