立方根をとるNewton法はyがxの立方根の近似値なら, よりよい近似は
x / y^2 + 2y
--------------
3
の値で与えられるという事実によっている. この式を使い平方根の手続きと似た立方根の手続きを実装せよ. (1.3.4節で平方根と立方根の手続きの抽象化として, 一般的なNewton法の実装法を学ぶ.)
平方根を求めるプログラムを修正して, 立方根を求めるプログラムに作り変えます.
立方根を求められるように手続きimproveを修正します.
また, 手続き名に現れるsqrtをcubeに変更します.
プログラムの全体は次のようになります.
(define (square x)
(* x x))
(define (improve guess x)
(/ (+ (/ x (square guess))
(* 2 guess))
3))
(define (good-enough? guess x)
(< (abs (/ (- (improve guess x) guess)
guess))
0.001))
(define (cube-iter guess x)
(if (good-enough? guess x)
guess
(cube-iter (improve guess x)
x)))
(define (cube x)
(cube-iter 1.0 x))
実行してみます.
ようこそ DrRacket, バージョン 6.1 [3m]. 言語: Pretty Big; memory limit: 2048 MB. > (cube 8) 2.000004911675504 > (cube 10) 2.1544959251533746 > (cube 27) 3.001274406506175 >
0 件のコメント:
コメントを投稿