SICP問題1.46
こんな感じ?
(define (iterative-improve f) (define (enough? a b) (< (abs (- a b)) 0.001)) (define (iter guess x) (if (enough? guess x) guess (iter (f guess x) x))) (lambda (y) (iter 1.0 y))) (define (sqrt z) ((iterative-improve (lambda (x y) (average y (/ x y)))) z))
と思ったら、うまくいかない orz
どうやら、問題の意味を取り違えているみたい。
- 予測値が十分良好であるか調べる方法
- 予測値を改良する方法
を引数にとって、
- 引数として予測値をとり、予測値が十分良好になるまで改良を繰り返す手続きを返す
という感じでヨサゲ。
書き直し。
(define (iterative-improve enough? improve) (lambda (guess) (define (iter guess) (if (enough? guess) guess (iter (improve guess)))) (iter guess))) (define (sqrt x) (define (enough? guess) (< (abs (- (square guess) x)) 0.00001)) (define (improve guess) (average guess (/ x guess))) ((iterative-improve enough? improve) 1.0)) (define (fixed-point f first-guess) (define (enough? guess) (< (abs (- guess (f guess))) 0.00001)) ; (define (improve guess) ; (f guess)) ((iterative-improve enough? f) first-guess) ;) )
テスト
(fixed-point (lambda (y) (average y (/ 2 y))) 1.0) ; 1.4142156862745097 (sqrt 2) ; 1.4142156862745097
闇の鶯 / 諸星大二郎
- 作者: 諸星大二郎
- 出版社/メーカー: 講談社
- 発売日: 2009/04/23
- メディア: コミック
- 購入: 3人 クリック: 20回
- この商品を含むブログ (29件) を見る
- それは時には少女となりて
- 人魚の記憶
- 書き損じのある妖怪絵巻
- 闇の鶯
- 涸れ川
妖怪ハンターのシリーズが入ってるとは予想してなかったので読み始めは、ちょっとびっくりしましたが、全編単行本未収録作品で、未読だったので、おもしろかったです。