混沌映射X(n+1) = r * Xn(1-Xn),给出python的画图代码,感兴趣可以跑一下。混沌科普请看https://www.bilibili.com/video/av86292156/

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from mpl_toolkits.mplot3d import Axes3D


def chaos(x1):
    """
    X(n+1) = r * Xn(1-Xn)一个极为简洁的递推公式,产生出惊人的变化。
    混沌现象图示,递归公式为X(n+1) = r * Xn(1-Xn),展示随着r从0增大的过程中Xn稳态值
    的变化的过程。x1为初始值,实际上稳态的曲线只跟r相关,与x1的值无关,当r超过3.5之后形态
    发生大的变化,产生伪随机数。对混沌现象有兴趣的朋友可以深入研究下~~
    :return: 图像
    """
    matplotlib.rcParams['font.sans-serif'] = ['STZhongsong']
    plt.figure(figsize=(12, 9), dpi=80)
    # 开启交互模式
    plt.ion()
    stable_x, stable_y = [], []
    for r in range(1, 1000):
        r /= 200
        x, y, xn = [], [], x1
        for n in range(80):
            xn = r*xn*(1-xn)
            if xn > 1:
                xn = 0.999999
            if xn < 0:
                xn = 0.000001
            y.append(xn)
            x.append(n)
            if n >= 70:
                stable_y.append(xn)
                stable_x.append(r)
        # print(r, y[0:20])
        # Xn-n
        plt.subplot(2, 1, 1)
        plt.cla()
        plt.title("Chaos,xn-n图像")
        plt.grid(True)
        plt.xlabel("n")
        plt.xlim(-1, 80)
        plt.ylabel("Xn")
        plt.ylim(-0.01, 1.01)
        plt.scatter(x, y, marker=".", linewidths=1)
        # Stable-r
        plt.subplot(2, 1, 2)
        plt.cla()
        plt.title("Chaos,stable-r图像")
        plt.grid(True)
        plt.xlabel("r")
        plt.xlim(0, 5.5)
        plt.ylabel("Stable")
        plt.ylim(-0.01, 1.01)
        plt.scatter(stable_x, stable_y, marker=".", linewidths=1)
        plt.pause(0.005)
    # 关闭交互模式
    plt.ioff()
    plt.show()
    return


if __name__ == "__main__":
    chaos(0.1)
    pass
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值