У меня есть две функции, которые я использую. Я пытаюсь сделать бифуркационную карту. Первая функция, которую я использую, составляет карту с использованием matplotlib.Хотя цикл выполняется один раз во время возврата, работает отлично во время печати [python]
def print_bifurcation_map(initial,rmin,rmax,rstep,iterates,k):
xn_list = []
r_list = []
for r in np.linspace(rmin, rmax,rstep):
xn = []
xn.append(run_logistic(initial,r,iterates))
xn_list =xn_list + xn[-k:]
r_list = r_list + [r]*len(xn)
Что делает этот код принять ряд Rs и вычисляет предел при х приближается большое количество (итерация). Мы берем последние k чисел из списка. Он вызывает функцию run_logistic, которая ниже.
def run_logistic(xn,r,iterates):
iteration = 1
while iteration <= iterates:
xn1 = logistic_map(xn,r)
iteration = iteration + 1
xn = xn1
print xn
Здесь все становится немного странным. когда я использую return и вызывается через функцию 'print_bifurcation_map', он запускается один раз и добавляет один раз. Однако, если я меняю return xn на «print xn», что есть в блоке кода, теперь он работает более корректно, хотя и очень медленно.
Так что я делаю неправильно в определении print_bifurcation_map или в функции run_logistic. Ниже приведена функция logistic_map.
def logistic_map(xn,r):
xn1 = r*xn*(1-xn)
return xn1
Эй, спасибо. Я не понимал, что возврат выходит из функции. Мне нужны все значения xn_list для этого, поэтому мне придется возвращать прилагаемый список. Спасибо за вашу помощь. – user2723240