混沌:Logistic模型

mac2026-02-06  0

import matplotlib.pyplot as plt import numpy as np #初始值 (0-1) x0 = 0.2 #初始值偏差 b = 0.0001 # x_t+1 = R*x_t*(1-x_t) # 小于3 x会达到一个不动点 # 小于3.4 x形成双周期振荡 # 再大一点就会形成 4周期、8周期,等等 # 大于约3.569946时则x变为混沌 # 混沌即初始值有微小的不同,x变化会相差很大 R = 4 # 数组长度 size = 30 t = np.arange(size) # x1 x1 = np.zeros(size) x1[0] = x0 # x2 x2 = np.zeros(size) x2[0] = x0+b #加上初始值偏差 for i in range(1,size): x1[i] = R*x1[i-1]*(1-x1[i-1]) x2[i] = R*x2[i-1]*(1-x2[i-1]) plt.plot(t,x1) plt.plot(t,x2) # 要放在plt.show()前,不然保存的就是空白图片 plt.savefig('1.png',dpi=500)# dpi 图片分辨率 plt.show()

R=4时表现出的混沌现象:

分叉图

#代码参考:https://ipython-books.github.io/121-plotting-the-bifurcation-diagram-of-a-chaotic-dynamical-system/ import matplotlib.pyplot as plt import numpy as np #迭代次数 iterations = 1000 # 取多少个点 last = 100 # 取n个点 n = 20000 r = np.linspace(2.5, 4.0, n) # x初值 x = 0.2 * np.ones(n) fig, ax1 = plt.subplots(figsize=(16, 14), dpi=200) for i in range(iterations): x = r * x * (1 - x) # 输出周期点 if i >= (iterations - last): ax1.plot(r, x, ',k', alpha=0.5) #alpha 透明度 ax1.set_title("Bifurcation diagram") plt.grid(True) plt.savefig('Bifurcation_diagram.png') plt.show()

最新回复(0)