王佳音,宋大全,侯夢瑜,朱巍偉,劉嘉輝*
(1.哈爾濱理工大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150080;2.牡丹江師范學(xué)院 學(xué)術(shù)理論研究中心,黑龍江 牡丹江 157011)
混沌方程研究中存在的一個關(guān)鍵問題是真實軌道難以在計算機(jī)中實現(xiàn).混沌方程的計算需要精度不斷擴(kuò)展,隨著迭代次數(shù)的增加,計算機(jī)系統(tǒng)中的浮點運算已經(jīng)難以滿足精度擴(kuò)展的要求.計算機(jī)系統(tǒng)中的實數(shù)表示范圍雖然很大,但其有效的精度卻受到一定的限制,這種限制對于混沌方程的計算非常不利.Logistic混沌方程是典型的研究混沌的模型,被廣泛用于隨機(jī)數(shù)發(fā)生器、密碼算法、人口分布研究和物理數(shù)學(xué)方程等領(lǐng)域中.在計算機(jī)系統(tǒng)中研究Logistic混沌方程需要進(jìn)行離散化軌道處理,即不能使用連續(xù)的實數(shù)區(qū)間表示其軌道的數(shù)值,因此,離散的計算軌道與最初的原始軌道的規(guī)律變化成為關(guān)注的重點.Logistic混沌方程在計算機(jī)系統(tǒng)中的計算軌道是由計算機(jī)系統(tǒng)中浮點運算實現(xiàn)的.本文介紹計算機(jī)系統(tǒng)中數(shù)值表示的基本形式和浮點數(shù)的標(biāo)準(zhǔn),給出Logistic混沌方程真實軌道的基本定義以及軌道點的精度變化規(guī)律,對Logistic混沌方程的計算軌道進(jìn)行詳細(xì)分析,給出對比實驗和一些推論.
數(shù)值可以采用科學(xué)記數(shù)法來進(jìn)行標(biāo)準(zhǔn)化:
±(d0.d1 d2 d3)…×Be.
(1)
其中,“±”代表該數(shù)值的符號,即正數(shù)或者負(fù)數(shù);“d0”代表該數(shù)值的小數(shù)點前整數(shù)部分的第一位數(shù)字位;“.d1 d2 d3”代表該數(shù)值的小數(shù)點后的第一位、第二位、第三位數(shù)字位等;“e”代表該數(shù)值的指數(shù);“B”代表基數(shù),即十進(jìn)制數(shù)值、八進(jìn)制數(shù)值、二進(jìn)制數(shù)值等.
在程序設(shè)計語言中,可以用整數(shù)和實數(shù)等表示計算數(shù)值.實數(shù)是最常用的一種數(shù)值表示方法,可以分為單精度和雙精度兩種.很多計算機(jī)系統(tǒng)中采用浮點數(shù)表示法表示數(shù)值.IEEE 754浮點數(shù)標(biāo)準(zhǔn)一般用{S,E,M}表示一個浮點數(shù).
在IEEE 754浮點數(shù)標(biāo)準(zhǔn)的單精度浮點數(shù)結(jié)構(gòu)中(圖1),S(Sign)占1 Bit,代表該數(shù)值的符號位,即“±”正數(shù)或者負(fù)數(shù),E(Exponent)占8 Bit,代表該數(shù)值的公式(1)科學(xué)記數(shù)法的指數(shù)部分,M(Mantissa)占23 Bit,代表該數(shù)值的有效數(shù)字部分,有效數(shù)字部分也被稱為尾數(shù)位.一個二進(jìn)制的浮點數(shù)F可以表示為:
F =(-1)S×M×2E.
(2)
其中,S符號位可以決定該數(shù)值是正數(shù)還是負(fù)數(shù).
IEEE 754浮點數(shù)標(biāo)準(zhǔn)的64位雙精度浮點數(shù)結(jié)構(gòu)如圖2所示.符號位S占1 Bit,指數(shù)部分E占11 Bit,尾數(shù)部分占52 Bit.
從圖1和圖2中可以看出,計算機(jī)能夠表示的數(shù)值非常大.在32位單精度浮點數(shù)中,可以表示的最大正實數(shù)約為3.402 823×1038,最小的正實數(shù)約為1.175 494×10-38,所表示數(shù)值的有效數(shù)字位由M(Mantissa)尾數(shù)位控制.
圖1 32位單精度浮點數(shù)結(jié)構(gòu)圖 圖2 64位雙精度浮點數(shù)結(jié)構(gòu)圖
定義1計算機(jī)系統(tǒng)中實數(shù)的有效精度是計算機(jī)中所表示的實數(shù)能夠標(biāo)準(zhǔn)化表示為公式(1)的形式,十進(jìn)制標(biāo)準(zhǔn)的該數(shù)值小數(shù)點后有效數(shù)字位的個數(shù)定義為該數(shù)值的有效精度.
由IEEE 754的32位單精度浮點數(shù)的結(jié)構(gòu)可以看出,該數(shù)值的有效精度是由Mantissa決定的.在微軟的操作系統(tǒng)Windows中的float.h文件中,一般性地描述了ANSI浮點運算,“This file contains defines for a number of implementation dependent values which are commonly used by sophisticated numerical(floating point)programs.[ANSI]”.在該文件中,單精度浮點數(shù)的有效精度定義為:#define FLT_DIG 6/* # of decimal digits of precision */.float類型的單精度浮點數(shù)能保證的十進(jìn)制有效精度是6位.單精度對于普通的計算能夠滿足基本的要求,而對于科學(xué)計算可以使用雙精度double類型,在float.h文件中,其定義為:#define DBL_DIG 15/* # of decimal digits of precision */.double類型的雙精度浮點數(shù)能保證的十進(jìn)制有效位數(shù)是15位.
Logistic混沌方程定義為:
x[n+1]=a×x[n]×(1-x[n]).
(3)
其中,x[n]是Logistic混沌方程隨著時間變化的序列,x[n]的值在0和1之間.x[0]是Logistic混沌方程的初始值,a是Logistic混沌方程的控制參數(shù),a的值在3.6和4之間是混沌區(qū)域.
定義2Logistic混沌方程的真實軌道是由Logistic混沌方程公式(3)中的x[n]的真實值組成的點軌跡.
Logistic混沌方程的真實軌道在目前的計算機(jī)中是很難實現(xiàn)的.
假設(shè)Logistic混沌方程的初始值x[0]=0.77,給定控制參數(shù)a=3.99.計算過程為:
x[1]=a×x[0]×(1-x[0])
=3.99×0.77×(1-0.77)
=0.706 629.
因此,x[1]=0.706 629.將x[1]帶入下一次迭代運算.計算過程為:
x[2]=a×x[1]×(1-x[1])
=3.99×0.706 629×(1-0.706 629)
=0.827 144 780 872 41.
因此,x[2]=0.827 144 780 872 41.繼續(xù)進(jìn)行下一次迭代計算.計算過程為:
x[3]=a×x[2]×(1-x[2])
=3.99×0.827 144 780 872 41×
(1-0.827 144 780 872 41)
=0.570 475 406 468 291 948 355 210
159 681.
因此,x[3]=0.570 475 406 468 291 948 355 210
159 681.
繼續(xù)迭代的計算過程為:
x[4]=a×x[3]×(1-x[3])
=3.99×0.570 475 406 468 291 948 355
210 159 681×(1-0.570 475 406 468 291
948 355 210 159 681)
=0.977 682 536 161 684 843 293 825 121
525 298 332 899 560 454 680 759 943 093
173 61.
因此,x[4]=0.977 682 536 161 684 843 293 825 121 525 298 332 899 560 454 680 759 943 093 173 61.
當(dāng)Logistic混沌方程迭代一次時,x[1]的有效精度是6.
當(dāng)Logistic混沌方程迭代第二次時,x[2]的有效精度是14.
x[2]的有效精度是控制參數(shù)a(3.99)的小數(shù)部分,有效精度是2,與實數(shù)x[1](0.706 629)的有效精度是6,以及實數(shù)(1-x[1])的有效精度是6.計算它們的和,2+6+6=14.由此可見,x[3]的有效精度是:2+14+14=30.x[4]的有效精度為:2+30+30=62.x[5]的有效精度為:2+62+62=126.表1給出了Logistic混沌方程迭代的有效精度值.
表1 Logistic混沌方程迭代的有效精度
由于篇幅有限,以下是省略了x[n]的中間有效數(shù)字位的真實值,其組成是小數(shù)點后10位有效數(shù)字位和自末位起的最后10有效數(shù)字位.其中,
x[5]=0.087 059 384 6…141 427 592 1.
x[6]=0.317 125 392 2…256 110 184 1.
x[7]=0.864 061 942 5…053 787 688 1.
x[8]=0.468 661 018 8…339 902 376 1.
x[9]=0.993 581 294 3…080 853 672 1.
x[10]=0.025 446 248 4…703 269 544 1.
顯然,以目前的計算機(jī)系統(tǒng)中的浮點運算法則難以實現(xiàn)混沌真實軌道的計算.從表1可以看出,Logistic混沌方程在迭代到第11次時,有效精度已經(jīng)達(dá)到1萬位以上,第12次已經(jīng)超過3萬位的有效精度.在目前的計算機(jī)系統(tǒng)中,在如此巨大有效精度下觀察混沌軌道是很難實現(xiàn)的.
定義3Logistic混沌方程的計算軌道是由x[n]在計算機(jī)系統(tǒng)的單精度、雙精度或者其他浮點運算形式下獲得的x[n]的值組成的點軌跡.
分別對Logistic混沌方程進(jìn)行有效精度為1至6的單精度計算.在計算軌道的數(shù)值處理中,當(dāng)計算的數(shù)值超過給定的有效精度時,采用截尾的處理方式.在IEEE 754標(biāo)準(zhǔn)中,Mantissa位中如果超出了最大的比特數(shù),溢出的位進(jìn)行截尾處理.因此,在Logistic混沌方程計算的過程中,對于給定的有效精度P,在每次Logistic混沌方程迭代計算軌道的數(shù)值x[n]所獲得的是當(dāng)前有效精度下的截尾的數(shù)值.圖3表示的是有效精度小于等于4時計算軌道與真實軌道的對比圖.在圖3中,P代表計算機(jī)系統(tǒng)給定的有效精度,即在計算軌道中獲得的實數(shù)x[n]數(shù)值的小數(shù)部分有效數(shù)字的個數(shù).“real”代表Logistic混沌方程的真實軌道的x[n]軌道序列值.
圖3 有效精度小于等于4時計算軌道與真實軌道的對比圖
當(dāng)計算軌道P=1時,獲得的Logistic混沌方程的x[n]小數(shù)部分在十進(jìn)制表示下只能有一位有效數(shù)字位.科學(xué)記數(shù)法表示的形式為:d1×10-1.當(dāng)計算軌道P=2時,獲得的實數(shù)x[n]的小數(shù)部分在十進(jìn)制表示下只能有二位有效數(shù)字位.科學(xué)記數(shù)法表示的形式為:d1.d2×10-1.當(dāng)計算軌道P=3和4時,表示形式分別為:d1.d2 d3×10-1和d1.d2 d3 d4×10-1.其中,{d1,d2,d3,d4}分別是十進(jìn)制的數(shù)字{0,1,…,9}.
按照表1中Logistic混沌方程真實軌道x[n]的精度,當(dāng)Logistic混沌方程迭代15次時,其精度已經(jīng)超過了10萬位.x[15]的精度是131 070位,遠(yuǎn)遠(yuǎn)超過了大部分計算機(jī)硬件和計算軟件所允許的最大精度.因此,本文只統(tǒng)計前15次迭代值,并對Logistic混沌方程的計算軌道和真實軌道進(jìn)行對比分析.
從圖3可以看出,在P=1,2,3,4時,第一次迭代的值均接近0.7.第二次的迭代值均在0.8附近,而且P=1的計算軌道的x[n]開始偏離真實軌道“real”.當(dāng)?shù)谌蔚鷷r,P=2的計算軌道開始偏離真實軌道“real”,其情形與第二次迭代時候P=1的計算軌道接近.從第三次迭代可以看出,P=1的計算軌道偏離真實軌道“real”逐漸加大;當(dāng)?shù)降谒拇螘r,P=1的計算軌道已經(jīng)遠(yuǎn)遠(yuǎn)的與真實軌道“real”以及其他計算軌道分離.在第五次迭代之后,P=1的計算軌道出現(xiàn)了短周期循環(huán):0.3->0.8->0.6->0.9.在第七次迭代時,P=1,2,3的計算軌道均與真實軌道“real”分離.P=4的計算軌道在第11次迭代時與真實軌道“real”分離.從圖3可以看出,當(dāng)P=4時,從第11次迭代之后,其與真實軌道“real”的偏離距離逐漸加大.不僅如此,各個計算軌道也逐漸增加了軌道偏離距離.
由以上的分析可以獲得如下的基本推論:
推論1Logistic混沌方程的計算軌道和真實軌道隨著迭代次數(shù)的增加,計算軌道逐漸與真實軌道分離.
推論2計算機(jī)的有效精度很大程度上影響著Logistic混沌方程的計算軌道與真實軌道的分離速度.
為進(jìn)一步驗證推論2,對P=5和P=6的計算軌道實現(xiàn)進(jìn)一步的研究,在分別進(jìn)行P=5和P=6的計算軌道計算后,該計算軌道的x[n]與真實軌道的序列值進(jìn)行差值計算,獲得其絕對差值.
圖4表示當(dāng)有效精度是5和6時計算軌道與真實軌道的差值圖.圖中“1E”代表10的冪,“1E-6”代表10-6,“1E-5”代表10-5,以此類推.
從圖4可以明顯看出,當(dāng)有效精度是6時,即P=6時,其與真實軌道的差值明顯小于計算軌道P=5.圖4中一個明顯的趨勢是:隨著迭代次數(shù)的增加,計算軌道明顯偏離了真實軌道,當(dāng)P=5的計算軌道在第一次迭代時與真實軌道的誤差接近0.000 01,在第15次迭代時接近0.1,前后相差104倍.
圖4 當(dāng)有效精度是5和6時計算軌道與真實軌道的差值圖
當(dāng)計算軌道P=6時,第一次迭代差值等于0是因為在表1中,x[1]的有效精度是6,而計算軌道P=6時,其有效精度也等于6,因此,其差值等于0.但是,隨著迭代次數(shù)的增加,計算軌道逐漸偏離了真實軌道.計算軌道P=5偏離真實軌道的速度明顯快于計算軌道P=6.
Logistic混沌方程的真實軌道與計算軌道的研究是混沌理論研究中一個重要的分支,通過計算軌道的分析,可以分離出不同計算軌道的基本特征及其變化的基本規(guī)律,為混沌的計算軌道的進(jìn)一步研究提供了一定的基礎(chǔ),對未來進(jìn)一步研究混沌計算軌道的規(guī)律和特點進(jìn)行了有益的探索.