没有图像吗?

2024-06-16 09:42:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为以下迭代映射绘制分叉图: x_n+1 = x_n * e^(r(1-x_n))

首先,我定义了地图:

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()时,我得到一个空白的绘图

我不确定我在这里哪里出错了


Tags: infordefpltmindiagramappendrset
1条回答
网友
1楼 · 发布于 2024-06-16 09:42:24

问题是x=0是一个不动点,x=1也是一个不动点。如果将x=0切换到x=0.1,但将其保留在原来的位置,则第一个r值将x驱动到(这些值的作用是什么)吸引人的固定点1。您需要将x=0.1放入主循环的中:

for r in rspace:
    x = 0.01

(其他一切都和以前一样)

相关问题 更多 >