【发布时间】:2013-07-08 23:32:41
【问题描述】:
我已经编写了标准盒计数算法的实现,用于确定 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。
【问题讨论】:
-
你试过运行几次了吗?
-
@Ali 是的,运行它几次似乎重现了与以前相同的结果:在小数点后第三位仍然不正确。
-
我的意思是它每次总是给出 1.994 或者不同的数字。此外,如果您在 mathematica.stackexchange.com 上提问,您获得答案的机会肯定会更高。我在那里也看到了一些相关的问题,例如:mathematica.stackexchange.com/questions/22052 和 mathematica.stackexchange.com/questions/13125
-
@Ali 在连续运行时,它可能会在小数点后第三位略有不同,例如 1.995,统计误差也会有微小变化。
标签: wolfram-mathematica fractals