当前位置: 首页 > article >正文

PWLCM分段线性混沌映射

混沌映射是生成混沌序列的一种方法,常见的混沌映射方式有 Logistic映射、Tent映射、Lorenz映射,而PWLCM(Piecewise Linear Chaotic Map,分段线性混沌映射)作为混沌映射的典型代表,数学形式简单,具有遍历性和随机性。其公式定义描述如下:


x ( t + 1 ) = { x ( t ) p , p ≤ x ( t ) < p x ( t ) − p 0.5 − p , p ≤ x ( t ) < 0.5 1 − p − x ( t ) 0.5 − p , 0.5 ≤ x ( t ) < 1 − p 1 − x ( t ) p , 1 − p ≤ x ( t ) < 1 \begin{equation} x(t+1)=\left\{ \begin{array}{lr} \frac{x(t)}{p}, p \le x(t) \lt p \\ \frac{x(t)-p}{0.5-p}, p \le x(t) \lt 0.5 \\ \frac{1-p-x(t)}{0.5-p}, 0.5 \le x(t) \lt 1-p \\ \frac{1-x(t)}{p}, 1-p \le x(t) \lt 1 \end{array} \right . \end{equation} x(t+1)= px(t),px(t)<p0.5px(t)p,px(t)<0.50.5p1px(t),0.5x(t)<1pp1x(t),1px(t)<1
其中, p是该映射的控制参数, p ∈ [ 0 , 1 ] p \in [0,1] p[0,1] ; x(t) 为产生的随机迭代值, x ( t ) ∈ [ 0 , 1 ] x(t) \in [0,1] x(t)[0,1]

下图是PWLCM混沌系统产生的伪随机序列的分布图,从图中可以看出PWLCM混沌映射产生的伪随机序列非常均匀。

在这里插入图片描述

python代码
import sys
import matplotlib.pyplot as plt
import cv2
import numpy as np


def pwlcm(x0, p, T):
    x = np.array([])
    y = np.array([])
    for i in range(T):
        if x0 >= 0 and x0 < p:
            x0 = x0 / p
        elif x0 >= p and x0 < 0.5:
            x0 = (x0 - p) / (0.5 - p)
        elif x0 >= 0.5 and x0 < 1 - p:
            x0 = (1 - p - x0) / (0.5 - p)
        elif x0 >= (1 - p) and x0 < 1:
            x0 = (1 - x0) / p
        x = np.append(x, i)
        y = np.append(y, x0)
    return x, y


def main():
    # 设置迭代次数
    T = 10000
    p = 0.3456789012
    x0 = 0.1234567890
    x, y = pwlcm(x0, p, T)
    # 绘制图像
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
    plt.scatter(x, y, s=10, marker='.')
    plt.xlabel("t", fontdict={'fontsize': 20})
    plt.ylabel("x(t)", fontdict={'fontsize': 20})
    plt.rcParams.update({'font.size': 20})
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.show()


if __name__ == '__main__':
    main()


http://www.kler.cn/a/17465.html

相关文章:

  • Linux源码阅读笔记-V4L2框架基础介绍
  • 【MySQL】MySQL函数之JSON_EXTRACT
  • 《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明
  • 时间管理的三个痛点
  • 【前端】Vue中如何避免出现内存泄漏
  • ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结
  • 日语学习(一)
  • flink-on-yarn两种提交模式及其区别
  • 【Linux问题合集001】Linux中如何将用户添加到sudo组中的步骤
  • 武忠祥老师每日一题||不定积分基础训练(六)
  • Lattics ——一款简单易用、好看强大的知识管理工具
  • 【Spring Security第一篇】初始Spring Security、表单认证、认证与授权
  • Docker安全最佳实践
  • 算法的时间复杂度和空间复杂度(友友们专属限定版)
  • linux常用操作
  • Java ---比较器
  • 武忠祥老师每日一题||定积分基础训练(五)
  • java基础:接口的定义与实现
  • 今日事务java所感
  • 深入源码理解redis数据结构(一)
  • 从 Elasticsearch 到 Apache Doris,10 倍性价比的新一代日志存储分析平台
  • IronOCR 2023.4.13 Crack
  • 【移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航栏 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )
  • JDK17新特性之--新的Compact Strings(JEP 254)
  • 以两分钟了解Python之SQLAlchemy框架的使用
  • 腾讯云的cdn怎么配置|腾讯云CDN配置教程