Бифуркационная диаграмма python - нет изображения? - PullRequest
2 голосов
/ 12 апреля 2020

Я пытаюсь сделать бифуркационную диаграмму для следующей итерированной карты: 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(), я получаю пустой график.

Я не уверен, куда я иду не так.

1 Ответ

2 голосов
/ 12 апреля 2020

Проблема в том, что x=0 является фиксированной точкой, как и x=1. Если вы переключите x=0 на x=0.1, но в противном случае оставите его там, где оно есть, первое значение r приводит x к (для этих значений) притягивающей фиксированной точке 1. Вам нужно поместить x=0.1 внутри основного l oop:

for r in rspace:
    x = 0.01

(со всем остальным, как раньше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...