Bifurcation diagram for the logistic map

Tags

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 310 times • Downloaded 9 times • Run 0 times

## WHAT IS IT?

NB: For better model performance/visualization it is recommended to download the program and run it on your PC, because on the server it is very slow.

This model is an example of the bifurcation diagram of the logistic map/ iterated logistic function f(x) = r * x (1 - x ).

The bifurcation parameter r is shown on the horizontal axis of the plot generated in NetLogo World View Window and the vertical axis shows the set of values of the iterated logistic function.

The bifurcation diagram shows the forking of the periods of stable orbits from 1 to 2 to 4 to 8 etc. Each of these bifurcation points is a period-doubling bifurcation. The ratio of the lengths of successive intervals between values of r for which bifurcation occurs converges to the first Feigenbaum’s constant.

In this model the initial condition (X0) is 0.5 and starting r-parameter-value is 0.95

## HOW IT WORKS

Every time-step (tick) an iteration is performed and as a result a point is generated (i.e. a green color turtle is created) and it is placed/plotted on the plane (where Y-coordinates are obtained as a result of logistic function iterations and X-coordinates represent every tick r-increments of 0.00015, with every new r-value participating in the next-step iteration by definition).

After the diagram is created the first Feigenbaum's constant (δ), which expresses the limit of the ratio of distances between consecutive bifurcations can be calculated. The value of Feigenbaum's constant converges to 4.669201609...

## HOW TO USE IT

Press the buttons (in respective numerical order):

(1) Setup: creates basic conditions for the model to run (i.e. erases data from previous runs, generates X and Y axes, etc.)

(2) Generates bifurcation diagram: starts iterations and generation of new points (turtles) in accordance with numeric values as a result of iterations.

(3) Mark bifurcations: this button can be activated only after iterations are completed (in this model after 20320 ticks/iterations). Pressing the button will generate red dots (i.e. red color turtles) for the first several bifurcations.

(4) Mark periodic window: this button can also be activated only after iterations are completed. It will point on a well visible periodic window, where chaotic behavior of the system 'suddenly' become 'non-chaotic'.

(5) Calculate 1st Feigenbaum's constant: Pressing this button after iterations ended, will highlight (by vertical white color lines) the regions of bifurcation and calculate (δ) based on x-coordinates of the turtles located in the respective 'bifurcation points'.

The distances between such points are marked by L0, L1, L2, etc.

(6) The bottom reporter shows the calculated value of 1st Feigenbaum's constant.

Pressing the buttons 3, 4, 5 before the end of iterations (i.e. before 20320 ticks) will case no particular changes to the model. The same is valid for the reporter - it will show "N/A" message.

## THINGS TO NOTICE

The result of the iterations with an r-value between 0 and 1.0 (see the Iterated logistic function model for more details) will be always '0'.

The starting value for r-parameter in this model is 0.95. Respectively, first points in the diagram will have Y-coordinates = 0. With the increase in r-parameter beyond 1.0 points will get Y-coordinates higher than '0' with the resulting line leaving '0'y-coordinates and the first bifurcation appearing just after r=3, followed by a period-doubling cascade.

At r = approximately 3.57 is the onset of chaos, at the end of the period-doubling cascade.

During the model run one can observe the result of iterations in time (by ticks): new turtles/points being created and plotted.

Feighenbaum's constant is calculated as the ratio of distances between consecutive bifurcations on diagram: on Li / Li+1. In this model it is calculated as the ratio between x-coordinates of turtles located in the respective specific regions of the bifurcation diagram (i.e. the transition between period 4 and period 8). The calculated and reported value is an approximate.

## EXTENDING THE MODEL

For a more precise value of the Feigenbaum's constant a better tuned selection of turtles/points which coordinates are used for calculation would be desirable. Another extension would be using for calculation the mean of x-coordinates of several turtles in the same regions of the bifurcation diagram and using the mean instead of a single turtle(s) coordinates.

## RELATED MODELS

This is one of the models in a suit of models created to visualize some key concepts of Chaos Theory and Dynamical Systems. Most of the models are available on http://modelingcommons.org/account/models/2495

Of a special interest can be the model describing the iterated logistic function with a final-state diagram. Comparing the behavior of the logistic function described by respective model and the actual bifurcation diagram model for the same r-values can provide additional insights.

## CREDITS AND REFERENCES

This simple abstract model was developed by Victor Iapascurta, MD. At time of development he was in the Department of Anesthesia and Intensive Care at University of Medicine and Pharmacy in Chisinau, Moldova / ICU at City Emergency Hospital in Chisinau. Please email any questions or comments to viapascurta@yahoo.com

The model was created in NetLogo 6.0.1, Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

This model was inspired by Introduction to Dynamical Systems and Chaos (Fall, 2017) MOOC by David Feldman @ Complexity Explorer (https://www.complexityexplorer.org/courses).

Click to Run Model

``` globals [     ;; setting the globals for the model functioning
mylist-x
mylist-r
num-iterations
axis
F-const?
]

breed [ m-turtles m-turtle ]    ;; these are turtles to be ploted on
;; on bifurcation diagram
patches-own [    ;; properties of the patches used
alpha          ;; to set up X and Y axes
omega
]

to setup   ;; general setup procedure
ca
set mylist-x  list (0) (0.5)     ;; setting the list for turtles x-coordinates
set mylist-r list  (0) (0.95)    ;; setting the list for turtles y-coordinates
create-axis                   ;; creating coordinates axes
setup-alpha                   ;; and their components
setup-beta-omega
set num-iterations 20325    ;; this is the max number of iterates which
;; "keeps" the results of iterations in the
;; limits of the model world
reset-ticks
end

to create-axis
ask patches with [ pxcor = 0 ] [ set pcolor white ]
ask patches with [ pycor = 0 ] [ set pcolor white ]
end

to setup-alpha
[ set plabel "0"
set plabel-color white ]
[ set plabel "f (x)"
set plabel-color white
]
[ set plabel "r-parameter"
set plabel-color white
]
end

to setup-beta-omega
[ set plabel "1.0"
set plabel-color white
]

[ set plabel "2.0"
set plabel-color white
]

[ set plabel "2.5"
set plabel-color white
]

[ set plabel "3.0"
set plabel-color white
]

[ set plabel "3.5"
set plabel-color white
]

[ set plabel "4.0"
set plabel-color white
]

[ set plabel "0.5"
set plabel-color white
]
[ set plabel "1.0"
set plabel-color white
]
end

to go                                        ;; procedure of iteration

set mylist-x lput result mylist-x               ;; generation of the list with
repeat 50 [set mylist-x lput result mylist-x]   ;; x-coordinates of turtles

set mylist-r lput result-r mylist-r         ;; generation of the list with
;; x-coordinates of turtles
if ticks >= Num-iterations [ stop ]    ;; condition for stopping the model once
;; the preset number of iterations is reached
create-m-turtles 1 [        ;; creating a turtle every iteration/tick
set color green           ;; and ploting it according to the coordinates
set shape "circle"        ;; as values in the respective lists
set size 0.5
set xcor (last mylist-r) * 100
set ycor (last mylist-x) * 200
]
tick
end

to-report result                                               ;; reports the result of iterations
report  last mylist-r * last mylist-x * (1 - last mylist-x)
end

to-report result-r                  ;; reports the result of r-increments with every iteration/tick
report last mylist-r + 0.00015
end

to mark                       ;; marking the bifurcations by creating red color turtles
;; in respective zones
if ticks >= 20320 [         ;; condition that makes respective button active only after
;; iterations are completed
crt 1 [
set color red
set shape "circle"
set size 2
set xcor 300
set ycor 133
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 354
set ycor 164
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 345
set ycor 170
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 354
set ycor 177
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 345
set ycor 88
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 354
set ycor 105
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 354
set ycor 73
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.37
set ycor 69.43
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.41
set ycor 74.92
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.43
set ycor 98.16
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.47
set ycor 110.93
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.42
set ycor 161.49
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.46
set ycor 167.02
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.44
set ycor 176.12
]

crt 1 [
set color red
set shape "circle"
set size 2
set xcor 356.48
set ycor 178.16
]
]
end

to mark-pw                         ;; marking a periodic window

if ticks >= 20320 [
ask patches with [ pxcor = 380 ]
[set pcolor red]
ask patches with [ pxcor = 390 ]
[set pcolor red]
]
end

to calculate-feigenbaum-constant  ;; procedure ref. to Feigenbaum's constant: ploting
;; vertical lines aligned to bifurcations and marking
;; the distance between consecutive period-doublings with "L"
if ticks >= 20320 [
;; condition that makes the procedure valid after the
set F-const? true                 ;; preset number of iterations

ask patches with [ pxcor = 300 ]
[set pcolor white]
ask patches with [ pxcor = 345 ]
[set pcolor  white]
ask patches with [ pxcor = 354 ]
[set pcolor  white]
ask patches with [ pxcor = 356 ]
[set pcolor  white]

[ set plabel "L0"
set plabel-color yellow
]

[ set plabel "L1"
set plabel-color yellow
]

[ set plabel "L2/L3"
set plabel-color yellow
]

[ set plabel "Feigenbaum's constant = Li / Li+1"
set plabel-color yellow
]
]
end

to-report F-constant-1     ;; procedure for calculation of the 1st Feigenbaum's constant
if F-const? = true       ;; based on x-coordinates of the turtles located in the bifurcations zones
[                        ;; 'bifurcations zones'
report (([xcor] of turtle 17294) - ([xcor] of turtle 16688)) /
(([xcor] of turtle 17422) - ([xcor] of turtle 17292))
]
end
```

There is only one version of this model, created about 1 year ago by Victor Iapascurta.

Attached files

File Type Description Last updated
Bifurcation diagram for the logistic map.png preview Preview for 'Bifurcation diagram for the logistic map' about 1 year ago, by Victor Iapascurta Download

This model does not have any ancestors.

This model does not have any descendants.