> |
(define (cube x) (* x x x)) |
> |
(define (sum-integers a b) (if (> a b) 0 (+ a (sum-integers (+ a 1) b)))) |
> |
(define (sum-cubes a b) (if (> a b) 0 (+ (cube a) (sum-cubes (+ a 1) b)))) |
> |
(define (pi-sum a b) (if (> a b) 0 (+ (/ 1.0 (* a (+ a 2))) (pi-sum (+ a 4) b)))) |
> |
(sum-integers 1 3) |
> |
(sum-cubes 1 3) |
> |
(pi-sum 1 3) |
> |
(define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)))) |
> |
(define (inc n) (+ n 1)) |
> |
(define (sum-cubes-2 a b) (sum cube a inc b)) |
> |
(sum-cubes-2 1 3) |
> |
(define (identity x) x) |
> |
(define (sum-integers-2 a b) (sum identity a inc b)) |
> |
(sum-integers-2 1 10) |
> |
(define (pi-sum-2 a b) (define (pi-term x) (/ 1.0 (* x (+ x 2)))) (define (pi-next x) (+ x 4)) (sum pi-term a pi-next b)) |
> |
(* 8 (pi-sum-2 1 1000)) |
> |
> |
(define (square x) (* x x)) |
> |
((lambda (x y z) (+ x y (square z))) 1 2 3) |
> |
> |
(define (average x y) (/ (+ x y) 2)) |
> |
(define (search f neg-point pos-point) (let ((midpoint (average neg-point pos-point))) (if (close-enough? neg-point pos-point) midpoint (let ((test-value (f midpoint))) (cond ((positive? test-value) (search f neg-point midpoint)) ((negative? test-value) (search f midpoint pos-point)) (else midpoint)))))) |
> |
(define (close-enough? x y) (< (abs (- x y)) 0.001)) |
> |
(define (half-interval-method f a b) (let ((a-value (f a)) (b-value (f b))) (cond ((and (negative? a-value) (positive? b-value)) (search f a b)) ((and (negative? b-value) (positive? a-value)) (search f b a)) (else (error "Values are not of opposite sign" a b))))) |
> |
(half-interval-method sin 2.0 4.0) |
> |
(half-interval-method (lambda (x) (- (* x x x) (* 2 x) 3)) 1.0 2.0) |
> |
(define tolerance 0.00001) |
> |
(define (fixed-point f first-guess) (define (close-enough? v1 v2) (< (abs (- v1 v2)) tolerance)) (define (try guess) (let ((next (f guess))) (if (close-enough? guess next) next (try next)))) (try first-guess)) |
> |
(fixed-point cos 1.0) |
> |
(fixed-point (lambda (y) (+ (sin y) (cos y))) 1.0) |
> |