郭美美
(韓山師范學院陶瓷職業技術學校,潮州 521031)
關于Sierpinski墊片的Hausdorff測度的上方估算法實現研究
郭美美
(韓山師范學院陶瓷職業技術學校,潮州521031)
分形集的Hausdorff測度是非線性科學的一個理論課題。其中,對于具有嚴格自相似性的經典分形集,如關于Sierpinski墊片等,至今的結果還不多,研究發展較慢。近年來,一部分學者對于Sierpinski墊片的Hausdorff測度的研究使該課題得到了更一步的有意義的結果[1-3]。2000年在文獻[3]中,提出定理1:
即通項xn滿足:

則Sierpinski墊片的Hausdorff測度有以下估值:,其中k,j為正整數且k≥2,1≤ j≤2k-2
并有一編程代碼實現。
本文主要對文獻[3]中的程序代碼進行測試驗證,并作修正,最后作進一步的延展,打破文獻[3]的計算局限,得到較好的上方估算。
在文獻[3]中定理1的的算法實現分為五個函數模塊,各模塊的作用及調用關系如圖1(具體代碼見文獻[3]):
之所以對該算法的實現研究,是因為算法實現的運行過程中,限制了對于k值,要求不超過22。根據定理1算法的研究表明:k值越大,上方估算值越是精確。文獻[3]限制k不超過22是由當時的實現算法的運行平臺所局限,那么,計算機飛速發展的今天,這個局限能否得到突破,怎么突破成為關鍵的問題。本文把文獻[3]算法的實現作延展,對于得到更精確的上估算值具有重要的意義。
2.1運行環境
本文程序運行環境為處理器:Intel Core i5 CPU;內存:4GB;操作系統:64位Windows 7,C++Builder 2010。
2.2糾正幾處語法錯誤
文獻[3]運行結果如圖2:
(1)關系表達式
文獻[3]中:

圖1

圖2

其中下劃線部分是用關系表達式來表達判斷,必須改成j==1。

主函數main中下劃線部分除了不應該用相等符號外,邏輯關系錯誤。從算法的理論和實現的設計來看,每次循環時,比較k=i時,Hi與TempHK1比較大小,并把兩者中較小的記錄于變量TempHK1。所以應該改成“>”。
(2)輸出格式控制

下劃線部分是long double類型的數據輸出L必須為大寫才能正常顯示正確的數據。
(3)其他

下劃線部分有三個輸出格式控制,輸出表列卻只有兩個變量名。其實這里的錯誤,會導致在運行中途直接閃退,無法得到圖1內容。只有在TempHK1前加上“i,”才可以有圖2顯示。
經過以上的修正后,程序的運行結果為圖3:

圖3
文獻[3]中Hk中的k值是約束在2≤k≤22的整數。最終結果是Hk,k=22時,H(s)是最小值。然而,從算法所得規律來看,k值越大,得到的上估值就越精確。那么,如果提高k值上限或不限制是什么結果?
(1)這里先測試上限提高到30,嘗試k=26結果如圖4。

圖4
由計算結果觀察得知:當k=23以及其后的H值都下降得較前面快。
(2)測試k=23時,j為何值時,Hk開始急速下降。在MinHK()中增加以下代碼作測試:

并且適當修改了主函數,只計算K=23時的所有Hk。于是測試結果如下圖5:

圖5
可知,當j=1048577時,是個Hk,k=23的急降點。
(3)測試Hk,k=23,j分別為1048576和1048577時各個計算過程的值。

程序運行如圖6:

圖6
這里的Hk肯定了上一步的推斷,明顯異常地急降。
根據文獻[3]中的定理1,計算各參數在計算過程中的變化,首先驗證Xn的值是否計算有誤。
(4)檢驗Xn
當k=23,j分別為1048576和1048577時調用的計算Xn的值的函數是Yj()函數,其中,Yj調用了MyPow()函數。現在函數FunctionHK()中添加了以下下劃線部分的代碼,以作測試Xn:

結果如圖7:

圖7
根據定理1,Xn是一個不斷增大的函數值,j越高,Xn越大,從圖6觀察說明Xn=1870418613是錯誤的值。對于k=23,當j=1048576×2-1時Xn是與運行程序結果一致的;當j=1048577×2-1時10460353205這個值與圖7中的Xn的值是不一致的。
(5)計算321
按定理1計算Xn,涉及到一個求冪的運算。文獻[3]中計算時,是調用MyPow函數的。MyPow函數的返回值是unsigned long int,這個數據類型的長度為4個字節。而321=10460353203(10)=10 0110 1111 0111 1100 0101 0010 1011 0011(2)這個數的長度超過了32bit,因此,對于函數MyPow()的調用返回值其他是丟失了最高位的數據,變成0 0110 1111 0111 1100 0101 0010 1011 0011(2)=1870418611(10),而由于丟失了最高位數據后,成為 1870418611+2= 1870418613剛好與圖6的計算顯示結果一致。由此得出,是計算過程中調用MyPow()函數,由于溢出導致計算結果錯誤。
綜上所述,修改MyPow()的數據類型,就可以提高計算的上限。
(1)修改后的代碼如下:



(2)運算結果
對于輸出的結果Hn表示當k=n時,j取值為m時Hs(s)的最好上估值。運算結果如圖8:

圖8
算法的實現符合定理1,保持了原算法實現的結構,并修改了文獻[3]中的計算上限值,理論上可以達到66,但本文測試已花了接近一小時的計算才得圖8結果,而且,對于Hn的計算結果之間的變化已不是很明顯,故沒再進一步作運算。但本文的算法實現已對文獻[3]的算法實現作了延展,計算結果改進了文獻[3]中的有關結論。
[1]Marion J.Mesures de Hausdorff D'Ensembles Fractals[J].Ann Sc Math Quebec,1981,11(1):111~137
[2]周作領.自相似集的Hausdorff測度——Kock曲線[J].中國科學(A),1998,28(2):103~107
[3]曾山,許紹元.關于Sierpinski墊片的Hausdorff測度的上估的算法.韓山師范學院學報,2000,6(2):27~31
Sierpinski Gasket;Hausdorff Measure;Algorithm Implementation
Research on the Implementation of an Algorithm for the Upper Extimation of the Hausdorff Measure of Sierpinski Gasket
GUO Mei-mei
(Ceramic Vocation Technical School,Hanshan Normal University,Chaozhou 521031)
1007-1423(2015)17-0075-06
10.3969/j.issn.1007-1423.2015.17.017
郭美美(1982-),女,廣東潮州人,碩士,講師,研究方向為軟件工程
2015-04-28
2015-05-20
Sierpinski墊片的Hausdorff測度的估計和計算在分形理論上具有重要的意義。利用Sierpinski墊片的Hausdorff測度上方估算的算法,對少數的已有的計算機編程實現進行研究分析,修正文獻[3]算法實現中的代碼錯誤,并對其作進一步的延展。
Sierpinski墊片;Hausdorff測度;算法實現
國家大學生創新創業訓練項目
Extimation and Calculation of Hausdorff Measure of Sierpinski Gasket has important significance.With an Algorithm for the upper extimation of the Hausdorff Measure of Sierpinski Gasket,researches and analyzes the existing implementation of an algorithm of computer,corrects paper[3]and extends to higher upper limit.