lunes, 28 de noviembre de 2011

Diagrama de Bifurcación


;Autor: José Manuel Gómez Soto

#lang racket
(require plot)

(define intervalo (lambda (a b inc)
                    (if (> a b)
                        '()
                        (cons a
                           (intervalo (+ a inc) b inc)))
                    ))


(define mimap (lambda(f lista)
                (if (null? lista) '()
                    (cons (f (car lista))
                        (mimap f (cdr lista))))))


(define orbita (lambda(f x0 n)              
                 (if (=  n 0) '()
                 (cons x0 (orbita f (f x0) (- n 1))))))


(define funcionlogistica (lambda(lam)
                           (lambda(x) (* 4 lam (* x (- 1 x))))))

(define diagramabifurcacion
  (lambda (funcion a b inclambda incorbitas nitera color)
   (plot (points (flatten (mimap (lambda(y)
     (map (lambda(x1)
         (vector y (last (orbita (lambda(x) ((funcion y) x)) x1 nitera)))) (intervalo a b incorbitas)))
     (intervalo a b inclambda)))  #:sym 'dot #:color color
                                  ) #:x-min a
                                  #:x-max b #:y-min a #:y-max b)))

(diagramabifurcacion  funcionlogistica 0.1 1.0 0.001 0.01 100 5)

No hay comentarios:

Publicar un comentario