<TeXmacs|2.1.2> <style|<tuple|generic|no-page-numbers|chinese>> <\body> <subsection*|1.3.1> <\session|scheme|default> <\unfolded-io|Scheme] > (define (cube x) (* x x x)) <|unfolded-io> cube </unfolded-io> <\unfolded-io|Scheme] > (define (sum-integers a b) \ \ (if (\<gtr\> a b) \ \ \ \ \ \ 0 \ \ \ \ \ \ (+ a (sum-integers (+ a 1) b)))) <|unfolded-io> sum-integers </unfolded-io> <\unfolded-io|Scheme] > (define (sum-cubes a b) \ \ (if (\<gtr\> a b) \ \ \ \ \ \ 0 \ \ \ \ \ \ (+ (cube a) (sum-cubes (+ a 1) b)))) <|unfolded-io> sum-cubes </unfolded-io> <\unfolded-io|Scheme] > (define (pi-sum a b) \ \ (if (\<gtr\> a b) \ \ \ \ \ \ 0 \ \ \ \ \ \ (+ (/ 1.0 (* a (+ a 2))) (pi-sum (+ a 4) b)))) <|unfolded-io> pi-sum </unfolded-io> <\unfolded-io|Scheme] > (sum-integers 1 3) <|unfolded-io> 6 </unfolded-io> <\unfolded-io|Scheme] > (sum-cubes 1 3) <|unfolded-io> 36 </unfolded-io> <\unfolded-io|Scheme] > (pi-sum 1 3) <|unfolded-io> 0.3333333333333333 </unfolded-io> <\unfolded-io|Scheme] > (define (sum term a next b) \ \ (if (\<gtr\> a b) \ \ \ \ \ \ 0 \ \ \ \ \ \ (+ (term a) \ \ \ \ \ \ \ \ \ (sum term (next a) next b)))) <|unfolded-io> sum </unfolded-io> <\unfolded-io|Scheme] > (define (inc n) (+ n 1)) <|unfolded-io> inc </unfolded-io> <\unfolded-io|Scheme] > (define (sum-cubes-2 a b) \ \ (sum cube a inc b)) <|unfolded-io> sum-cubes-2 </unfolded-io> <\unfolded-io|Scheme] > (sum-cubes-2 1 3) <|unfolded-io> 36 </unfolded-io> <\input|Scheme] > \; </input> <\unfolded-io|Scheme] > (define (identity x) x) <|unfolded-io> identity </unfolded-io> <\unfolded-io|Scheme] > (define (sum-integers-2 a b) \ \ (sum identity a inc b)) <|unfolded-io> sum-integers-2 </unfolded-io> <\unfolded-io|Scheme] > (sum-integers-2 1 10) <|unfolded-io> 55 </unfolded-io> <\unfolded-io|Scheme] > (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)) <|unfolded-io> pi-sum-2 </unfolded-io> <\unfolded-io|Scheme] > (* 8 (pi-sum-2 1 1000)) <|unfolded-io> 3.139592655589783 </unfolded-io> <\input|Scheme] > \; </input> </session> <subsection*|1.3.2> <\session|scheme|default> <\unfolded-io|Scheme] > (define (square x) (* x x)) <|unfolded-io> square </unfolded-io> <\unfolded-io|Scheme] > ((lambda (x y z) (+ x y (square z))) 1 2 3) <|unfolded-io> 12 </unfolded-io> <\input|Scheme] > \; </input> </session> <subsection*|1.3.3> <\session|scheme|default> <\unfolded-io|Scheme] > (define (average x y) (/ (+ x y) 2)) <|unfolded-io> average </unfolded-io> <\unfolded-io|Scheme] > (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)))))) <|unfolded-io> search </unfolded-io> <\unfolded-io|Scheme] > (define (close-enough? x y) \ \ (\<less\> (abs (- x y)) 0.001)) <|unfolded-io> close-enough? </unfolded-io> <\unfolded-io|Scheme] > (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))))) <|unfolded-io> half-interval-method </unfolded-io> <\unfolded-io|Scheme] > (half-interval-method sin 2.0 4.0) <|unfolded-io> 3.14111328125 </unfolded-io> <\unfolded-io|Scheme] > (half-interval-method (lambda (x) (- (* x x x) (* 2 x) 3)) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1.0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2.0) <|unfolded-io> 1.89306640625 </unfolded-io> <\input|Scheme] > \; </input> <\unfolded-io|Scheme] > (define tolerance 0.00001) <|unfolded-io> 0.00001 </unfolded-io> <\unfolded-io|Scheme] > (define (fixed-point f first-guess) \ \ (define (close-enough? v1 v2) \ \ \ \ (\<less\> (abs (- v1 v2)) tolerance)) \ \ (define (try guess) \ \ \ \ (let ((next (f guess))) \ \ \ \ \ \ (if (close-enough? guess next) \ \ \ \ \ \ \ \ \ \ next \ \ \ \ \ \ \ \ \ \ (try next)))) \ \ (try first-guess)) <|unfolded-io> fixed-point </unfolded-io> <\unfolded-io|Scheme] > (fixed-point cos 1.0) <|unfolded-io> 0.7390822985224024 </unfolded-io> <\unfolded-io|Scheme] > (fixed-point (lambda (y) (+ (sin y) (cos y))) \ \ \ \ \ \ \ \ \ \ \ \ \ 1.0) <|unfolded-io> 1.2587315962971173 </unfolded-io> <\input|Scheme] > \; </input> </session> </body> <\initial> <\collection> <associate|page-medium|papyrus> <associate|page-screen-margin|false> </collection> </initial> <\references> <\collection> <associate|auto-1|<tuple|?|?>> <associate|auto-2|<tuple|?|?>> <associate|auto-3|<tuple|?|?>> </collection> </references> <\auxiliary> <\collection> <\associate|toc> <with|par-left|<quote|1tab>|1.3.1 <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-1>> <with|par-left|<quote|1tab>|1.3.2 <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-2>> <with|par-left|<quote|1tab>|1.3.3 <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>> <no-break><pageref|auto-3>> </associate> </collection> </auxiliary>