問題3.65 – SICP(計算機プログラムの構造と解釈)その156

問題3.65

(define (log-summands n)
  (cons-stream (/ 1.0 n)
               (stream-map - (log-summands (+ n 1)))))

(define log-stream
  (partial-sums (log-summands 1)))

それぞれの収束の速さの違いが一目瞭然。

partial-sums 手続きを使った場合

(stream-head log-stream 10)
gosh> 1.0
0.5
0.8333333333333333
0.5833333333333333
0.7833333333333332
0.6166666666666666
0.7595238095238095
0.6345238095238095
0.7456349206349207
0.6456349206349207
done

euler-transform 手続きを使った場合

(stream-head (euler-transform log-stream) 10)
gosh> 0.7
0.6904761904761905
0.6944444444444444
0.6924242424242424
0.6935897435897436
0.6928571428571428
0.6933473389355742
0.6930033416875522
0.6932539682539683
0.6930657506744464
done

タブロー(tableau)を使った場合

(stream-head (accelerated-sequence euler-transform log-stream) 10)
gosh> 1.0
0.7
0.6932773109243697
0.6931488693329254
0.6931471960735491
0.6931471806635636
0.6931471805604039
0.6931471805599445
0.6931471805599427
0.6931471805599454
done
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»