0

我已经编写了标准盒计数算法的实现,用于确定 Mathematica 中图像或集合的分形维数,我正在尝试验证它。我使用 CellularAutomaton 函数生成了一个谢尔宾斯基三角矩阵,并计算出它的分形维数为 1.58496,统计误差约为 10^-15。这与 log(3)/log(2) = 1.58496 的预期值非常吻合。

当我尝试针对随机生成的矩阵测试我的算法时,就会出现问题。在这种情况下,分形维数应该正好是 2,但我得到大约 1.994,统计误差约为 0.004。因此,我的盒子计数算法似乎对谢尔宾斯基三角形工作得很好,但对随机分布来说不是很好。有什么想法为什么不呢?

下面的代码:

sierpinski512 = CellularAutomaton[90, {{1}, 0}, 512];
ArrayPlot[%]
d512 = FractalDimension[sierpinski512, {512, 256, 128, 64, 32, 16, 8, 4, 2}]

rtable = Table[Round[RandomReal[]], {i, 1, 512}, {j, 1, 1024}];
ArrayPlot[%]
drand = FractalDimension[rtable, {512, 256, 128, 64, 32, 16, 8, 4, 2}]

如果有人真的需要它,我可以发布 FractalDimension 代码,但我认为解决方案(如果有)与 FractalDimension 算法无关,而是我在上面生成的 rtable。

4

1 回答 1

1

我在与一位著名物理学家协商后对这个问题进行了一些经验性的研究,我们相信随着点数的增加,随机点过程的分形维数会变为 2(我认为是极限)。我无法提供“大”的确切定义,但不能少于几千点。所以,我认为你应该期望得到 D < 2,除非点的数量非常大,理论上,大到足以平铺平面。

我将不胜感激您的 FractalDimension 代码!

于 2014-01-08T22:00:42.480 回答