Exercise 1.13
Posted on Wednesday, September 12th, 2007
Ok, so I’m not taking this class to learn about math proofs so instead I wrote a program to test out the equations:
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1))
(fib (- n 2))))))
(define (o) (/ (+ 1 (sqrt 5))
2))
(define (u) (/ (- 1 (sqrt 5))
2))
(define (proof n)
(/ (- (exp (o) n)
(exp (u) n))
(sqrt 5)))
(define (exp x e)
(exp-iter x e 1 1))
(define (exp-iter x e count product)
(if (< e count)
product
(exp-iter x e (+ 1 count) (* product x))))
(define (sqrt x)
(sqrt-iter 1.0 0.0 x))
(define (sqrt-iter guess last-guess x)
(if (good-enough? last-guess guess)
guess
(sqrt-iter (improve guess x)
guess
x)))
(define (good-enough? guess last-guess)
(< (abs (- guess last-guess)) 0.001))
(define (improve guess x)
(average guess (/ x guess)))
(define (average x y)
(/ (+ x y) 2))
(define (abs x)
(if (< x 0)
(- x)
x))
(define (square x) (* x x))
Test:
> (fib 10) 55 > (proof 10) 55.000000000027384 >
Categorized as SICP Chapter 1, SICP Exercises