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
混沌映射X(n+1) = r * Xn(1-Xn),给出python的画图代码,感兴趣可以跑一下。混沌科普请看https://www.bilibili.com/video/av86292156/
最新推荐文章于 2023-02-27 18:56:05 发布