おんがえしの blog

作ったプログラムと調べた技術情報

問題1.15

sinの近似と増加量の計算

(define (cube x) (* x x x))

(define (p x)
  (- (* 3 x) (* 4 (cube x))))

(define (sine angle)
  (if (not (> (abs angle) 0.1))
      angle
      (p (sine (/ angle 3.0)))))

a. (sine 12.5) の評価で、手続きpは何回作用させられたか?

5回

(define (p x)
  (display "1")
  (- (* 3 x) (* 4 (cube x))))

出力された'1'の数で作用回数が分かる。

計算でも求められる。

guile> (/ 12.5 3)
4.16666666666667
guile> (/ 4.16666666666667 3)
1.38888888888889
guile> (/ 1.38888888888889 3)
0.462962962962963
guile> (/ 0.462962962962963 3)
0.154320987654321
guile> (/ 0.154320987654321 3)
0.051440329218107

b. sine(a) のスペースとステップの増加の程度を求めよ
いまひとつ増加の程度の計算方法がピンときてないなあ。

ステップ : θ(log a)
スペース : θ(log a)