The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Sun's Java site.


powered by NetLogo

view/download model file: logistic.nlogo

WHAT IS IT?

logistic.nlogo, to explore the logistic family, see instructions at visual-chaos.org/lab.


PROCEDURES

;;; logistic.nogo, cr 15 apr 2011 by rha on pro

globals
[
  deltax deltay   ;;; window widths for conversion routines
  deltau deltav   ;;; world coord window widths
  umin umax vmin vmax ;;; from def of map-u and map-v
  xmin xmax ymin ymax ;;; from Graphics Window attributes
  u0 x0 ;;; init values
  ;;; R defined by a slider from 0 to 4
]

;;; procedures

;;; these are for coord conversion functions (affine isomorphisms)
to init-globals
  set xmin ( - max-pxcor )
  set xmax  max-pxcor
  set ymin ( - max-pycor )
  set ymax max-pycor
  set deltax world-width ;;; this is Graphics Window attribute
  set deltay world-height ;;; this is Graphics Window attribute
  set umin 0
  set umax 1
  set vmin 0
  set vmax 1
  set deltau (umax - umin) 
  set deltav (vmax - vmin)
  set u0 0.5
  set x0 map-x u0
end

;;; reporters
;;; ==============================================
;;; conversion functions, world-coords <--> turtle-screen-coords:
;;; horizontal: (u <--> x), vertical (v <--> y)
;;; ----------------------------------------------
;;; (u <-- x): u = convert(x)
to-report horizconvert [ x ]
  let u (deltau * ( x - xmin ) / deltax) + umin
  report u
end

;;; (u --> x): x = deconvert(u)
to-report horizdeconvert [ u ]
  let x (deltax * ( u - umin ) / deltau) + xmin
  report x
end

;;; (v <-- y): v = convert(y)
to-report vertconvert [ y ]
  let v (deltav * ( y - ymin ) / deltay) + vmin
  report v
end

;;; (v --> y): y = deconvert(v)
to-report vertdeconvert [ v ]
  let y (deltay * ( v - vmin ) / deltav) + ymin
  report y
end
;;; ==============================================

;;; more procedures
to setup
  ca
  init-globals
  crt 1 ;;;  turtle 0 draws diag and arch
   [
     ht ;;; hide
   ]
  draw-diag
  draw-arch
  crt 1 ;;; turtle 1 draws red cobwebs
   [
     ;;; ht ;;; hide
     set color green ;;; only for cobwebs
     setxy 0 0 ;;; init value dep on choice of u0
     pd ;;; ready to draw
   ]
end

to draw-diag ;;; red diagonal
  ask turtle 0 
    [ 
      set color red
      set pen-size 3 ;;; wider for the arch and diag, narrower for the cobwebs
      pu ;;; ready to move
      setxy xmin ymin ;;; first move
      pd ;;; ready to draw
      setxy 0 0 ;;; needs two steps
      setxy xmax ymax
    ]
end

to draw-arch ;;; yellow graph of logistic function
  ask turtle 0 
    [ 
      set color yellow
      set pen-size 3 ;;; wider for the arch and diag, narrower for the cobwebs
      pu ;;; ready to move
      let xnow xmin
      let ynow ymin
      setxy xnow ynow ;;; first move
      pd ;;; ready to draw
      repeat world-width - 1
      [
        set xnow xnow + 1
        set ynow map-x xnow
        setxy xnow ynow
      ]
    ]
end

to step
  ask turtle 1
  [
    let xnew map-x xcor ;;; new x
    setxy xcor xnew ;;; draw vertigo
    setxy xnew xnew ;;; draw horrid
  ]
end

to clear
  clear-drawing ;;; erase red diag, yellow arch, green cobweb
  draw-arch
  draw-diag
end

;; calculate the horizontal component of the map where the turtle is located
to-report map-x [ x  ] ;; turtle procedure
  let utemp1 horizconvert x
  let utemp2 map-u utemp1
  let xtemp horizdeconvert utemp2
  report xtemp
end

;;; and at last, the logistic func in world coords
to-report map-u [ u ]
  report R * u * (1 - u)
end
;;; end of nlogo code