2015-10-09から1日間の記事一覧
(define (iterative-improve enough? improve) (lambda (guess) (define (iter guess) (if (enough? guess) (improve guess) (iter (improve guess)))) (iter guess))) (define (sqrt x) (define (improve guess) (average guess (/ x guess))) (define (goo…
;;実験用に作った手続き ;; x^n k回平均緩和 (define (test x n k) (fixed-point-of-transform (lambda (y) (/ x (expt y (- n 1)))) (lambda (z) ((repeated average-damp k) z)) 1.0)) 実験の結果, 2 ≦ n < 4 の時 k=1 4 ≦ n < 8 の時 k=2 8 ≦ n < 16 の…
平滑化関数とn重平滑化関数 (define (smooth f) (let ((dx 0.0001)) (lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3)))) (define (n-fold-smooth f n) (lambda (x) ((repeated smooth n) x)))
関数fをn回作用を計算する手続きrepeated (define (repeated f n) (define (iter fn count) (if (= count n) fn (iter (compose f fn) (+ count 1)))) (iter f 1)) gosh> ((repeated inc 5) 0) 5
合成関数を実装する手続きcompose (define (compose f g) (lambda (x) (f (g x)))) gosh> ((compose square inc) 6) 49
(define (inc n) (+ 1 n)) (define (double f) (lambda (x) (f (f x)))) (define D double) (define DD (D D)) (((D (D D)) inc) 5) (((D DD) inc) 5) ((DD (DD inc)) 5) ((DD (D (D inc)))) ((D (D (D (D inc)))) 5) ((D (D (D (lambda (x) (+ 2 x))))) 5) …
(define (cubic a b c) (lambda (x) (+ (cube x) (* a (square x)) (* b x) c))) gosh> (newtons-method (cubic 3 3 1) 1) -0.9999755158323895