2013-07-08 18 views
0

我已經寫了一個標準盒子計數算法的實現,用於確定Mathematica中圖像或集合的分形維數,並且我試圖驗證它。我使用CellularAutomaton函數生成了一個Sierpinski三角矩陣,並計算出它的分形維數爲1.58496,統計誤差約爲10^-15。這與log(3)/ log(2)= 1.58496的預期值非常好地匹配。驗證Mathematica中的分形維數計算

當我嘗試對隨機生成的矩陣測試我的算法時出現問題。這種情況下的分形維數應該恰好爲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我以上產生。

+0

你有沒有試過運行幾次? – Ali

+0

@Ali是的,運行幾次似乎重現了與以前相同的結果:在小數點後三位仍然不正確。 – user1748343

+0

我的意思是它總是給出1.994或每次可能有不同的數字。如果您在http://mathematica.stackexchange.com上提出問題,您也將有更高的機會獲得答案。我也看到了一些相關的問題,例如:http://mathematica.stackexchange.com/questions/22052和http://mathematica.stackexchange.com/questions/13125 – Ali

回答

1

我已經通過與知名物理學家進行了一次實證研究,並且我們相信隨着點數的增長,隨機點過程的分形維數達到2(在極限中,我認爲)大。我無法提供「大」的確切定義,但不能少於幾千點。所以,我認爲你應該得到D < 2,除非點的數量相當大,理論上足夠大以平鋪飛機。

我會感謝您的FractalDimension代碼!