Создание бифуркационной диаграммы в 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()