暇なので復習シリーズ ~Newton法による立方根~


問題 1.8
立方根をとる Newton 法は y が x の立方根の近似値なら、よりよい近似は
 \dfrac{x/y^2 + 2y}{3}
の値で与えられるという事実によっている。この式を使い平方根の手続きと似た立方根の手続きを実装せよ。

(数式面倒くさいけど頑張って書きました。褒めて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