; chaos in progress by fredvoisin, Paris-Nice, april 2004
;fibonacci
;an+1 = an + an-1
(define (fibo a0 a1 n)
(if (= 0 n)
a1
(fibo a1 (+ a0 a1) (- n 1))))
(define (fibosuite a0 a1 n)
(if (= 0 n)
a1
(let ((an (+ a0 a1)))
(display an)
(display ", ")
(fibosuite a1 an (- n 1)))))
;Lothar Collatz: 3a+1 problem
(define (aaa+1 x)
(if (even? x)
(let ((a (/ x 2)))
(display a)
(display ", ")
(aaa+1 a))
(if (= 1 x) (display 'stop)
(let ((a (+ (* 3 x) 1)))
(display a)
(display ", ")
(aaa+1 a)))))
(define (aaa+1- x)
(if (even? x)
(let ((a (/ x 2)))
(aaa+1- a))
(if (= 1 x) 0
(let ((a (+ (* 3 x) 1)))
(aaa+1- a)))))
;quadratic iterator pb
(define (quadit x c n)
(if (= 0 n) x
(let ()
(display x) (display ",")
(quadit (+ c (* x x)) c (- n 1)))))
;(quadit 0.5 -2 10)
(define (quadit- x c n)
(if (= 0 n) x
(quadit- (+ c (* x x)) c (- n 1))))
(define (logistic1 p r n)
(if (= 0 n) p
(logistic1 (+ p (* (- 1 p) (* r p))) r (- n 1))))
(define (logistic2 p r n)
(if (= 0 n) p
(logistic2 (- (* p (+ 1 r)) (* r p p)) r (- n 1))))
;(- (logistic1 0.01 3 55) (logistic1 0.01 ;3 55)) = T|C
(define (logistic3 p r n)
(let ((c (/ (- 1 (* r r)) 4))
(x (- (/ (+ 1 r) 2) (* r p))))
(if (= 0 n) p
(logistic3 (quadit x c n) r (- n 1)))))