验证Mathematica中的分形维数计算

时间:2013-07-08 23:32:41

标签: wolfram-mathematica fractals

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

当我尝试针对随机生成的矩阵测试我的算法时出现问题。在这种情况下,分形维数应该精确为2,但我得到约1.994,统计误差约为0.004。因此,我的盒子计数算法似乎对Sierpinski三角形完全正常,但对于随机分布来说效果不是很好。任何想法为什么不呢?

以下代码:

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。

1 个答案:

答案 0 :(得分:1)

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

我很感激您的FractalDimension代码!