Получение ValueError при построении бифуркационной диаграммы в Python со слишком большим количеством итераций - PullRequest
0 голосов
/ 20 января 2019

В настоящее время я пытаюсь построить бифуркационную диаграмму на 1-мерной карте логистики.

Вот мой код:

def logistic_map(x0, r, n):
    """
    This function is returning values for a given logistic map
    after n iterations with an initial state x0 and a parameter r.
    """
    x = [x0]
    for iteration in range(n):
        x.append(r * x[-1] * (1-x[-1]))
    return np.array(x)

def bifurcation_plotter(x0, r_min, r_max, r_step, n, k):
    """
    This function is plotting a bifurcation diagram with an initial step x0,
    with a parameter ranging from r_min to r_max with a step r_step, for n
    iterations. The first k numbers are removed to remove the transient phase.
    """
    r_values = np.arange(r_min, r_max, r_step)
    bifurcations = {}

    for r in r_values:
        log_map = logistic_map(x0, r, n)[k:]
        bifurcations[r] = np.unique(log_map)

    plt.figure()
    plt.plot(bifurcations.keys(), bifurcations.values(), "b,", markersize=1)
    plt.xlabel("$r$")
    plt.ylabel("bifurcations")

Когда я пробую этот код с параметрами, такими как 0,1, 2,4, 4, 0,01, n, 5 и значением n = 25, код работает, и я получаю хороший график, как вы можете видеть здесь:

bifurcation_plotter(0.1, 2.4, 4, 0.01, 25, 5)

Plot

Но как только я пытаюсь увеличить n, скажем, до n = 50, я получаю пустой график с «ValueError: установка элемента массива с последовательностью».

bifurcation_plotter(0.1, 2.4, 4, 0.01, 50, 5)

Я довольно новичок в Python, поэтому не совсем понимаю, почему он не работает.

Можете ли вы помочь мне, пожалуйста? Спасибо!

...