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