收藏 分销(赏)

一维LOGISTIC映射研究模板.docx

上传人:a199****6536 文档编号:3898494 上传时间:2024-07-23 格式:DOCX 页数:9 大小:161.04KB 下载积分:6 金币
下载 相关 举报
一维LOGISTIC映射研究模板.docx_第1页
第1页 / 共9页
一维LOGISTIC映射研究模板.docx_第2页
第2页 / 共9页


点击查看更多>>
资源描述
一.Introduction 混沌是一种貌似无规则的运动, 指在确定性非线形系统中, 不需要附加任何随机因素亦可出现类似随机的行为( 内在随机性) , 这种过程即非周期又不收敛, 而且对初始值有极其敏感的依赖性, 因此从长期意义上讲, 系统的未来行为是不可预测的。 一维Logistic映射从数学形式上来看就是一个非常简单的混沌映射, 早在20世纪50年代, 就被生态学家用来描述种群的变化, 另外, 基于变形Logistic映射的混沌流密码算法, 在保密通讯领域应用也十分广泛。 一维Logistic映射描述如下: Xn+1=FλXn=λXn1-Xn 其中0≪xn≪1,n∈Z,0<λ≪4, 该模型看起来简单, 而且是确定性的, 但具有极为复杂的动力学行为, 产生的序列由λ和X的初始值控制, 这两个值任何一个出现微小差别时, 所产生的序列将会完全不同。本文即以FORTRAN90为编程语言, 对一维Logistic映射的性质进行了探索。 二.explainprogramming 程序包括module、 主程序和若干子程序, 下面对各部分一一作简单介绍。 2.1module Moduleuseful中封装了所有全局变量, 需要使用这些变量的函数只要写入usemoduleuseful语句即可。Moduleuseful中,习题要求的最大迭代步数1000、 输出最后10步结果等, 均以常量的形式写入; 由于希望观察在不同λ下系统特性, 因此λ使用了一个可变大小数组, 在程序运行中根据输入条件动态取得一系列数值。考虑到非线形迭代对数值非常敏感, Module及程序其它地方声明的实数均为双精度浮点数。 2.2主程序 Programmain中主要调用各个子程序, 并将部分结果写入输出文件。由于程序在最初调试时, 只设计了一个λ, 调试成功后, 为简单起见, 将多个λ的循环部分放在主程序中。 2.3子程序 子程序依次包括input、 pretreat、 iterative和compare, 分别叙述如下: Input():输入参数λ的最小值k0和最大值kn, 以及希望在k0到kn之间划分的多少等份imk; 输入x序列的初始值x0。程序中判断, 如果取值范围不满足要求, 提示重新输入。 Pretreat(): 对输入进行预处理。希望得到当λ在k0到kn之间变化的多个结果, 因此根据输入的imk将区间[k0,kn]进行等分, 当imk取1时, 参数λ取kn值。 Iterative(): 主程序中循环调用该子程序, 根据一维Logistic映射公式递归计算Xn序列,程序中用实数数组xval()表示。 Compare(): 分析Xn序列特性, 是程序的关键部分。算法叙述如下: 1) 从序列点X2开始遍历, 直至X1000, 执行以下操作; 2) 对点Xn, 向前搜索20个点( n<20时, 搜索到X1停止) ,按就近原则逐一比较, 若有Xn-Xm<error, 认为可能有周期出现, 进入3) 进一步判断, 若没有, 则继续1) 3) 比较Xm、 Xm+1……Xn-1和Xn、 Xn+1……X2n-m-1, 若误差均小于常量error, 认为是一个完整的周期, 周期数为n-m, 否则继续1) ; 4) 程序中经过逻辑变量blstart、 blover的操作, 明确当某一个周期数连续的、 不变的出现20次以上时, 且结束于最后, 认为序列是有周期性的, 否则, 认为是混沌的。 三.output 程序有两种输出情况, 一种按习题要求希望得到Xn序列最后10个点的数值, 程序中判断, 当imk取1时, 输出结果。屏幕输出如下: Msg:inputk0、 kn、 imk... 3.33.31 Msg:inputx0... 0.7 Msg:outputthelastpoints... 9900.234 9910.069 9920.234 9930.069 9940.235 9950.069 9960.234 9970.069 9980.234 9990.069 10000.235 ki=3.norbit=2 另一种情况, 当imk较大时, 仍在屏幕上输出则数目较多, 则将序列点写入文本, 为便于分析, 文本中写入了最后200个点。此时, 屏幕中只输出不同ki时的周期数, 若没有周期, 输出’chaotic’, 输出如下: Msg:inputk0、 kn、 imk... 2.54.010 Msg:inputx0... 0.6 ki=2.norbit=1 ki=2.norbit=1 ki=2.norbit=1 ki=3.norbit=2 ki=3.norbit=2 ki=3.norbit=2 ki=3.norbit=4 ki=3.norbit=chaotic ki=3.norbit=3 ki=4.norbit=chaotic 四.分析 该程序可对一维Logistic映射进行分析, 下图是参数λ取[0.001,4], imk取1000, X0取0.6时的结果, 其中Y1在图(a)和(b)中分别表示不同λ对应的Xn序列值和周期数( 若周期数>20, 则认为chaotic, 输出值为0) 由图可知, 当λ<1时, 产生的序列为一固定值, 等于零; 当λ<3时, 系统有稳态解, 即解是不动点, 周期数为1, 由理论可知, 此时解为1-1/λ, 与初始值X0无关; 当λ在3附近时, 系统的稳态解由周期数1变为周期数2, 这是一个一分为二的分叉过程; 当λ在3.45附近时, 系统的稳态解由周期2变为周期4, 随着参数的不断增大, 周期数不断加倍, 产生的序列值周而复始的在有限个周期轨道之间重复, 当λ在3.6附近时系统进入混沌状态。 (a)序列值随λ变化(b)周期数随λ变化 图1λ=[0.001,4], X0=0.6 在输入中重新界定λ的范围, 能够方便的研究不同区间内的特性。根据上图结果, 选取了两个有意思的区间进行观察, 分别是[3.5,3.7]和[3.7,3.9], imk取1000, X0取0.6, 结果如下。能够发现, 周期数除了上述观察到的2、 4、 8……还出现了3、 6、 9……更多的周期数, 可能将程序中搜索的区域( 当前是搜索邻近20个点判断是否有周期出现) 扩大也能获得。同时, 能够注意到, 混沌区中有些空白的窗口, 这种窗口与初始值的选择无关, 观察到, 最大的空白窗口是周期数3的窗口, 它出现在3.828附近, 图(b)的结果更为直观, 且图中零星分布的点表示, 这样的周期窗口很多, 且分布似乎没有规律。 (a)序列值随λ变化(b)周期数随λ变化 图2λ=[3.5,3.7], X0=0.6 (a)序列值随λ变化(b)周期数随λ变化 图3λ=[3.7,3.9], X0=0.6 在上述观察到的混沌区中, 选取一个λ以便观察系统对Xn序列初值的敏感度, 不妨取λ=3.82, X0分别取0.6和0.60001,初值的误差甚至小于程序中用于判断两个变量相等的error,同样的, 程序只在imk取1时会有以下输出, 结果如下图, 由于整个序列不便于比较, 只截取了前后各约50个点。有图可知, 在前20个序列点, 数据基本还保持一致, 随着迭代步数逐渐增大, 误差被逐渐放大, 极为相近的初值, 得到的结果却迥异。 (a)(b) 图4λ=3.82,序列值随迭代步数变化 五.调试和改进 该程序的最终版本能够执行对参数λ的区间进行运算, 获得每一个λ对应的Xn序列, 并进行分析, 寻找序列有无周期, 周期数是多少。调试过程按由简单到复杂, 循序渐进的开展, 先编写对单个输入的代码, 调试经过后再编写完整的程序。程序中并没有复杂的语句, 工作的难点在于寻找序列周期的算法, 如何获得有效的周期数是关键。 下一步工作能够考虑对程序的功能进一步扩展, 如对序列值的上下限进行分析, 以及序列值的聚集区间分析, 由前述工作能够发现, 当参数<4时, 序列值并没有充满(0,1)空间, 且分布不均匀, 能够试图经过程序对数据进行统计分析。 六.总结 作者经过应用FORTRAN语言, 编写一维Logistic映像的分析程序, 在实践中得到了锻炼, 在重复的调试中也颇有收获。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服