我正在尝试为以下迭代图制作 fork 图:
x_n+1 = x_n * e^(r(1-x_n))
。
首先我定义了 map :
def newmap(x,r):
return x*math.exp(r*(1-x))
然后我尝试了这个:
def bifurcation_diagram(rmin=0, rmax=4, r_N=2000, N_min=4000, N = 1000):
rspace = np.linspace(rmin, rmax, r_N)
x = 0
rset = []
xset = []
for r in rspace:
for i in range(N_min + N):
x = newmap(x,r)
if i > N_min:
rset.append(r)
xset.append(x)
plt.figure(figsize=(16,7))
plt.xlim((rmin,rmax))
plt.ylim((0,5))
plt.scatter(rset,xset,s=0.3,c='C0',linewidth=0)
plt.xlabel(r'r', fontsize=20)
plt.ylabel(r'$x_{end}$', fontsize=29, rotation=0)
plt.show()
当我尝试 bifurcation_diagram()
时,我得到了一个空白图。
我不确定我哪里出错了。
最佳答案
问题在于,x=0
是一个固定点,x=1
也是。如果您将 x=0
切换为 x=0.1
,但将其保留在原来位置,则第一个 r
值将驱动 x
到(这些值的含义)吸引固定点 1
。您需要将 x=0.1
放在主循环内:
for r in rspace:
x = 0.01
(其他一切都和以前一样)。
关于python - fork 图 python - 没有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61175642/