利用Python仿真logistic映射(利用matplotlib画散点图)

本文通过Python代码介绍了如何使用matplotlib绘制Logistic映射的散点图,展示了参数μ变化对混沌变量分布的影响。通过迭代计算,观察当μ接近4时,变量x的分布呈现出混沌和随机性的特征。代码中初始化x为0.5,然后对不同μ值进行迭代,最终生成散点图以直观展示这一现象。
摘要由CSDN通过智能技术生成

利用Python仿真logistic映射(利用matplotlib画散点图)

目录

Logistic映射

Xn+1=Xn×μ×(1-Xn) μ∈[0,4] X∈[0,1]
当μ趋近于4时,迭代的结果可以看作是随机分布(实际上每个x值都是由映射确定的,也就是说是伪随机)。

目的

动手实践深入理解Logistic混沌变量,了解x的分布与μ的关系。

Python代码

# -*- codeing = utf-8 -*-
# @Time : 2021/4/15 16:35
# @Author : 师伟
# @File : chaoticvar.py
# @Software : PyCharm

import matplotlib.pyplot as plt
import numpy as np

x = np.zeros(shape=(400, 300)) # 定义一个400*300的数组存放x迭代产生的数,400是由于u从0增加到4,增加幅度为0.01,有400个μ,300表示在每个μ下迭代300次产生的300个x值
u = -0.01
for i in range(0, 399):
    u += 0.01
    x[i, 0] = 0.5 # 定义x0为0.5
    for j in range(0, 299):
        x[i, j + 1] = x[i, j] * u * (1 - x[i, j])

Xaxes = np.zeros(shape=(400, 300)) # 由于每个μ对应300个x,所以画散点图就需要让x轴是重复的,因为scatter函数是一个x轴对应一个y轴,所以每个u重复300次就可以把所有的300个x值都对应到该μ上
for i in range(0, 299):
    u1 = -0.01
    for j in range(0, 399):
        u1 += 0.01
        Xaxes[j, i] = u1
Yaxes = np.zeros(shape=(400, 300)) # y轴就是产生的400*300个x的值
for i in range(0, 399):
    for j in range(0, 299):
        Yaxes[i, j] = x[i, j]
plt.scatter(Xaxes, Yaxes)
plt.show()

难点

产生数据之后怎么将一个u对应300个x的情况画成散点图

解决办法

将同一个u重复300与300个x对应

运行结果

在这里插入图片描述

从图中可以看出当横坐标μ趋于4时,x趋于随机分布。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值