lunes, 28 de noviembre de 2011

Gráfica de la Telaraña (Cobweb)



;Autor: José Manuel Gómez Soto

#lang racket
(require plot)

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

(define intercala1 (lambda(lista1 lista2)
                    (if (null? lista1)
                       '()
               (cons  (list (car lista1)
                           (car lista2))
                     (intercala1 (cdr lista1)
                                (cdr lista2)))
                    )))

(define join (lambda(lista1 lista2)
               (if(null? lista1) lista2
                  (cons (car lista1)
                (join (cdr lista1) lista2)))))

(define flatten (lambda(lista)
                     (if (null? lista) '()
                         (join (car lista)
                               (flatten (cdr lista))))
                     ))

(define particion21r (lambda(lista n)
                     (cond ((null? lista) '())
                           ((null? (cdr lista)) '())
                           (else (cons
                                  (vector (car lista)
                                          (if (= n 1) 0
                                   (car (cdr lista))))
                          (particion21r (cdr lista) (+ n 1)))))))

(define puntosorbita (lambda(orbita)
                       (particion21r
                        (flatten (intercala1 orbita orbita)
                       ) 1)))


(define telarania (lambda(x0 nitera
                   funcion x1 x2 coloridenti colorfuncio colororbita)
            (plot
              (list (lines (puntosorbita (orbita funcion x0 nitera)) #:color colororbita)
                   (function funcion x1 x2 #:color colorfuncio)
                   (function (lambda(x) x) x1 x2 #:color coloridenti) (axes)))))



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


(telarania 0.2 200 (funcionlogistica 0.76) 0 1 0 3 4)

No hay comentarios:

Publicar un comentario