基于有效精度的Logistic混沌方程计算轨道偏离研究
2022-07-20王佳音宋大全侯梦瑜朱巍伟刘嘉辉
王佳音,宋大全,侯梦瑜,朱巍伟,刘嘉辉*
(1.哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨 150080;2.牡丹江师范学院 学术理论研究中心,黑龙江 牡丹江 157011)
混沌方程研究中存在的一个关键问题是真实轨道难以在计算机中实现.混沌方程的计算需要精度不断扩展,随着迭代次数的增加,计算机系统中的浮点运算已经难以满足精度扩展的要求.计算机系统中的实数表示范围虽然很大,但其有效的精度却受到一定的限制,这种限制对于混沌方程的计算非常不利.Logistic混沌方程是典型的研究混沌的模型,被广泛用于随机数发生器、密码算法、人口分布研究和物理数学方程等领域中.在计算机系统中研究Logistic混沌方程需要进行离散化轨道处理,即不能使用连续的实数区间表示其轨道的数值,因此,离散的计算轨道与最初的原始轨道的规律变化成为关注的重点.Logistic混沌方程在计算机系统中的计算轨道是由计算机系统中浮点运算实现的.本文介绍计算机系统中数值表示的基本形式和浮点数的标准,给出Logistic混沌方程真实轨道的基本定义以及轨道点的精度变化规律,对Logistic混沌方程的计算轨道进行详细分析,给出对比实验和一些推论.
1 计算机中数值的标准化形式
数值可以采用科学记数法来进行标准化:
±(d0.d1 d2 d3)…×Be.
(1)
其中,“±”代表该数值的符号,即正数或者负数;“d0”代表该数值的小数点前整数部分的第一位数字位;“.d1 d2 d3”代表该数值的小数点后的第一位、第二位、第三位数字位等;“e”代表该数值的指数;“B”代表基数,即十进制数值、八进制数值、二进制数值等.
在程序设计语言中,可以用整数和实数等表示计算数值.实数是最常用的一种数值表示方法,可以分为单精度和双精度两种.很多计算机系统中采用浮点数表示法表示数值.IEEE 754浮点数标准一般用{S,E,M}表示一个浮点数.
在IEEE 754浮点数标准的单精度浮点数结构中(图1),S(Sign)占1 Bit,代表该数值的符号位,即“±”正数或者负数,E(Exponent)占8 Bit,代表该数值的公式(1)科学记数法的指数部分,M(Mantissa)占23 Bit,代表该数值的有效数字部分,有效数字部分也被称为尾数位.一个二进制的浮点数F可以表示为:
F =(-1)S×M×2E.
(2)
其中,S符号位可以决定该数值是正数还是负数.
IEEE 754浮点数标准的64位双精度浮点数结构如图2所示.符号位S占1 Bit,指数部分E占11 Bit,尾数部分占52 Bit.
从图1和图2中可以看出,计算机能够表示的数值非常大.在32位单精度浮点数中,可以表示的最大正实数约为3.402 823×1038,最小的正实数约为1.175 494×10-38,所表示数值的有效数字位由M(Mantissa)尾数位控制.
图1 32位单精度浮点数结构图 图2 64位双精度浮点数结构图
定义1计算机系统中实数的有效精度是计算机中所表示的实数能够标准化表示为公式(1)的形式,十进制标准的该数值小数点后有效数字位的个数定义为该数值的有效精度.
由IEEE 754的32位单精度浮点数的结构可以看出,该数值的有效精度是由Mantissa决定的.在微软的操作系统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]”.在该文件中,单精度浮点数的有效精度定义为:#define FLT_DIG 6/* # of decimal digits of precision */.float类型的单精度浮点数能保证的十进制有效精度是6位.单精度对于普通的计算能够满足基本的要求,而对于科学计算可以使用双精度double类型,在float.h文件中,其定义为:#define DBL_DIG 15/* # of decimal digits of precision */.double类型的双精度浮点数能保证的十进制有效位数是15位.
2 Logistic混沌方程的真实轨道
Logistic混沌方程定义为:
x[n+1]=a×x[n]×(1-x[n]).
(3)
其中,x[n]是Logistic混沌方程随着时间变化的序列,x[n]的值在0和1之间.x[0]是Logistic混沌方程的初始值,a是Logistic混沌方程的控制参数,a的值在3.6和4之间是混沌区域.
定义2Logistic混沌方程的真实轨道是由Logistic混沌方程公式(3)中的x[n]的真实值组成的点轨迹.
Logistic混沌方程的真实轨道在目前的计算机中是很难实现的.
假设Logistic混沌方程的初始值x[0]=0.77,给定控制参数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[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[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.
当Logistic混沌方程迭代一次时,x[1]的有效精度是6.
当Logistic混沌方程迭代第二次时,x[2]的有效精度是14.
x[2]的有效精度是控制参数a(3.99)的小数部分,有效精度是2,与实数x[1](0.706 629)的有效精度是6,以及实数(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]的中间有效数字位的真实值,其组成是小数点后10位有效数字位和自末位起的最后10有效数字位.其中,
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.
显然,以目前的计算机系统中的浮点运算法则难以实现混沌真实轨道的计算.从表1可以看出,Logistic混沌方程在迭代到第11次时,有效精度已经达到1万位以上,第12次已经超过3万位的有效精度.在目前的计算机系统中,在如此巨大有效精度下观察混沌轨道是很难实现的.
3 Logistic混沌方程的计算轨道
定义3Logistic混沌方程的计算轨道是由x[n]在计算机系统的单精度、双精度或者其他浮点运算形式下获得的x[n]的值组成的点轨迹.
分别对Logistic混沌方程进行有效精度为1至6的单精度计算.在计算轨道的数值处理中,当计算的数值超过给定的有效精度时,采用截尾的处理方式.在IEEE 754标准中,Mantissa位中如果超出了最大的比特数,溢出的位进行截尾处理.因此,在Logistic混沌方程计算的过程中,对于给定的有效精度P,在每次Logistic混沌方程迭代计算轨道的数值x[n]所获得的是当前有效精度下的截尾的数值.图3表示的是有效精度小于等于4时计算轨道与真实轨道的对比图.在图3中,P代表计算机系统给定的有效精度,即在计算轨道中获得的实数x[n]数值的小数部分有效数字的个数.“real”代表Logistic混沌方程的真实轨道的x[n]轨道序列值.
图3 有效精度小于等于4时计算轨道与真实轨道的对比图
当计算轨道P=1时,获得的Logistic混沌方程的x[n]小数部分在十进制表示下只能有一位有效数字位.科学记数法表示的形式为:d1×10-1.当计算轨道P=2时,获得的实数x[n]的小数部分在十进制表示下只能有二位有效数字位.科学记数法表示的形式为:d1.d2×10-1.当计算轨道P=3和4时,表示形式分别为:d1.d2 d3×10-1和d1.d2 d3 d4×10-1.其中,{d1,d2,d3,d4}分别是十进制的数字{0,1,…,9}.
按照表1中Logistic混沌方程真实轨道x[n]的精度,当Logistic混沌方程迭代15次时,其精度已经超过了10万位.x[15]的精度是131 070位,远远超过了大部分计算机硬件和计算软件所允许的最大精度.因此,本文只统计前15次迭代值,并对Logistic混沌方程的计算轨道和真实轨道进行对比分析.
从图3可以看出,在P=1,2,3,4时,第一次迭代的值均接近0.7.第二次的迭代值均在0.8附近,而且P=1的计算轨道的x[n]开始偏离真实轨道“real”.当第三次迭代时,P=2的计算轨道开始偏离真实轨道“real”,其情形与第二次迭代时候P=1的计算轨道接近.从第三次迭代可以看出,P=1的计算轨道偏离真实轨道“real”逐渐加大;当迭代到第四次时,P=1的计算轨道已经远远的与真实轨道“real”以及其他计算轨道分离.在第五次迭代之后,P=1的计算轨道出现了短周期循环:0.3->0.8->0.6->0.9.在第七次迭代时,P=1,2,3的计算轨道均与真实轨道“real”分离.P=4的计算轨道在第11次迭代时与真实轨道“real”分离.从图3可以看出,当P=4时,从第11次迭代之后,其与真实轨道“real”的偏离距离逐渐加大.不仅如此,各个计算轨道也逐渐增加了轨道偏离距离.
由以上的分析可以获得如下的基本推论:
推论1Logistic混沌方程的计算轨道和真实轨道随着迭代次数的增加,计算轨道逐渐与真实轨道分离.
推论2计算机的有效精度很大程度上影响着Logistic混沌方程的计算轨道与真实轨道的分离速度.
为进一步验证推论2,对P=5和P=6的计算轨道实现进一步的研究,在分别进行P=5和P=6的计算轨道计算后,该计算轨道的x[n]与真实轨道的序列值进行差值计算,获得其绝对差值.
图4表示当有效精度是5和6时计算轨道与真实轨道的差值图.图中“1E”代表10的幂,“1E-6”代表10-6,“1E-5”代表10-5,以此类推.
从图4可以明显看出,当有效精度是6时,即P=6时,其与真实轨道的差值明显小于计算轨道P=5.图4中一个明显的趋势是:随着迭代次数的增加,计算轨道明显偏离了真实轨道,当P=5的计算轨道在第一次迭代时与真实轨道的误差接近0.000 01,在第15次迭代时接近0.1,前后相差104倍.
图4 当有效精度是5和6时计算轨道与真实轨道的差值图
当计算轨道P=6时,第一次迭代差值等于0是因为在表1中,x[1]的有效精度是6,而计算轨道P=6时,其有效精度也等于6,因此,其差值等于0.但是,随着迭代次数的增加,计算轨道逐渐偏离了真实轨道.计算轨道P=5偏离真实轨道的速度明显快于计算轨道P=6.
4 结论
Logistic混沌方程的真实轨道与计算轨道的研究是混沌理论研究中一个重要的分支,通过计算轨道的分析,可以分离出不同计算轨道的基本特征及其变化的基本规律,为混沌的计算轨道的进一步研究提供了一定的基础,对未来进一步研究混沌计算轨道的规律和特点进行了有益的探索.