問題 1.8
立方根をとる Newton 法は y が x の立方根の近似値なら、よりよい近似は
の値で与えられるという事実によっている。この式を使い平方根の手続きと似た立方根の手続きを実装せよ。
(数式面倒くさいけど頑張って書きました。褒めてw)
(define (square x) (* x x)) (define (improve guess x) (/ (+ (/ x (square guess)) (* 2 guess)) 3)) (define (good-enough? guess new-guess) (< (abs (- guess new-guess)) 0.001)) (define (cbrt-iter guess x) (let ((new-guess (improve guess x))) (if (good-enough? guess new-guess) new-guess (cbrt-iter new-guess x)))) (define (cbrt x) (cbrt-iter 1.0 x))
設問にある式を improve 手続きに書くだけです。
実行結果
gosh> (cbrt 27) 3.0000000000000977 gosh> (cbrt 1000) 10.000000000000002