我有一个简单的程序,它的核心是一个二维浮点数组,据说代表气体浓度,我一直试图想出一个简单的算法来模拟向外膨胀的气体,就像一朵云,最终得到电网各处的气体浓度相同。
例如,给定的状态进程可能是:(为简单起见,使用整数)
起始状态
00000
00000
00900
00000
00000
1 次算法通过后的状态
00000
01110
01110
01110
00000
再过一次应该给出一个 5x5 的网格,所有网格都包含 0.36 (9/25) 的值。
我已经在纸上进行了尝试,但无论我如何尝试,我都无法理解算法来做到这一点。
所以我的问题是,我应该如何着手编写这个算法?我已经尝试了一些方法,应用卷积,尝试依次获取每个网格单元并将其分配给它的邻居,但它们最终都会产生不良影响,例如最终使用的气体比我最初开始时少,或者所有的气体运动都在一个方向上,而不是从中心向外扩展。我真的完全无法理解它,并且非常感谢任何帮助。