立方根をとる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 件のコメント:
コメントを投稿