我已经编写了标准盒计数算法的实现,用于确定 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。