Создание бифуркационной диаграммы в python

Я пытаюсь придумать код, который позволит мне построить диаграмму для бифуркации удвоения периода.

Я использую уравнение x = rx − 1(1 − x), и я пытаюсь смоделировать его со значениями r от 0,5 до 4. Вот код, с которым я работаю

startr = 0.5
finalr = 4
max_time = 200
x = [0.1]
r= np.linspace(.5,4,200)

for n in range(0,200):

    x = np.append(r * x[n] * (1-x[n]))


plt.plot(x, label='x');
plt.xlabel('t');

Это продолжает быть выгнанным

TypeError: append() missing 1 required positional argument: 'values'

2 ответа

Решение

Вот два абсолютно необходимых аргумента для numpy.append(), взято из ссылки Numpy.

arr: array_like Значения добавляются к копии этого массива.

values: array_like Эти значения добавляются в копию обр. Он должен иметь правильную форму (ту же форму, что и arr, за исключением оси). Если ось не указана, значения могут иметь любую форму и будут сплющены перед использованием.

Поэтому попробуйте использовать

np.append(x, r * x[n] * (1-x[n]))

внутри вашей петли.

Логистическая карта Сохраните файл и запустите, файл изображения графика в формате png будет сохранен в той же папке

      import numpy as np
import matplotlib.pyplot as plt

Many =50000

x = np.random.rand(Many)
r = np.linspace(0,4.0, num= Many)

for i in range(1, 54):
    x_a = 1-x
    Data= np.multiply(x,r)
    Data= np.multiply(Data, x_a)
    x = Data

    plt.title(r'Logistic map: $x_{n+1} = r x_{n} (1-x_{n}).$  n = '+ str(i) )
    plt.ylabel('x-Random number')
    plt.xlabel('r-Rate')
    
    plt.scatter(r, Data, s=0.1, c='k')
    plt.show()
    plt.savefig(str(i) + " Logistic Map.png", dpi = 300)
    plt.clf()
Другие вопросы по тегам