Неверный график логистической карты (Matlab)

Я пытаюсь повторить и построить нелинейную функцию логистической карты, заданную уравнением: x[n+1] = 4*x[n]*(1-x[n]). Я нашел здесь реализацию функции https://www.mathworks.com/matlabcentral/answers/122101-plotting-fx-as-a-function-of-x-logistic-map

Я следил за тем же самым, только количество точек N и начальное начальное условие в моей реализации другое. Я не знаю, почему я не получаю никаких значений в выводе; в основном имеют нулевое значение. Когда начальное состояние x[1] = 0.5, я получаю странный сюжет, показанный на картинке. Но когда начальное условие, скажем, 0,3, я получаю правильную логистическую карту. Теоретически начальным условием может быть любое число от 0 до 1. Итак, почему код не работает, когда начальное условие равно 0,5?

В чем проблема?

N=20000; % number of data points
x = zeros(1,N);
x(1) = 0.5; % initial condition (can be anything from 0 to 1)


for n = 1:N
    x(n+1) = 4*x(n)*(1-x(n));
end
 plot(x(1:N),x(2:N+1),'rs-')
 xlabel('x_n')
 ylabel('x_{n+1}')

Вот сюжет

сюжет


person Ria George    schedule 25.03.2018    source источник


Ответы (1)


Полученный результат правильный. Позвольте мне объяснить это с помощью диаграммы паутины ниже (источник: http://sites.saintmarys.edu/%7Esbroad/example-logistic-cobweb.html)

паутина

Парабола - это кривая y = 4*x*(1-x), синяя линейная кривая - это y=x. Очки x[n] определяются следующим образом:

  1. начать с точки (x0,y(x0)) (часто рисуется линия с (x0,0))
  2. идите горизонтально, пока не дойдете до линейной кривой
  3. идите вертикально, пока не попадете в параболу. Это ваш x[n+1].
  4. повторяйте шаги 2-3 до бесконечности или x[n]=x[n-1] (стабильная точка) или x[n]=x[n-m] (периодичность)

Обратите внимание, что стабильные точки находятся там, где пересекаются парабола и линейная кривая.

Применение этого метода к вашим параметрам дает:

  1. Начать через (0.5,1)
  2. перейти горизонтально к (1,1)
  3. перейти по вертикали к (1,0) (это x[1])
  4. перейти горизонтально к (0,0)
  5. перейти по вертикали к (0,0) (это x[2])
  6. перейти горизонтально к (0,0)
  7. перейти по вертикали к (0,0) (это x[3])
  8. останавливаться

Так что вы просто оказались в стабильной точке.

person ViG    schedule 25.03.2018
comment
Спасибо за ответ с иллюстрацией. Если я понял, я думаю, что есть опечатка в пункте 3) он должен идти вертикально вниз до (1,0), чтобы получить x [1] вместо (0,1)? Кроме того, после шага 4), который соответствует координате (0,0), неясно, как следующая точка x [2] является вертикальной координатой (0,0). Не могли бы вы уточнить? - person Ria George; 01.04.2018
comment
@RiaGeorge, это действительно опечатка, спасибо, что заметили. После шага 4) вы должны двигаться вертикально, пока не попадете в параболу. Однако вы уже находитесь на параболе, поэтому больше не нужно идти вертикально, и вы можете оставаться на месте. - person ViG; 02.04.2018