問題3.82 – SICP(計算機プログラムの構造と解釈)その172
2009年05月07日
問題3.82
(define (estimate-integral p x1 x2 y1 y2) (define monte-carlo-stream (stream-map (lambda (m) (* (- x2 x1) (- y2 y1) m)) (monte-carlo random-in-range-experiment-stream 0.0 0.0))) (define random-in-range-experiment-stream (stream-map p random-in-range-x-stream random-in-range-y-stream)) (define random-in-range-x-stream (stream-map (lambda (x) (random-in-range x1 x2)) ones)) (define random-in-range-y-stream (stream-map (lambda (x) (random-in-range y1 y2)) ones)) monte-carlo-stream) ;;;; よりスマートな estimate-integral (define (estimate-integral p x1 x2 y1 y2) (stream-map (lambda (m) (* (- x2 x1) (- y2 y1) m)) (monte-carlo (stream-map p (stream-map (lambda (x) (random-in-range x1 x2)) ones) (stream-map (lambda (x) (random-in-range y1 y2)) ones)) 0.0 0.0)))
円周率の算出
;; 面積と面積から算出した円周率piを表示する手続き (define (pi-from-monte-carlo-simulation circle-area radius) (display circle-area) (newline) (/ circle-area radius)) ; 中心(5, 5) 半径5 の円の場合 ;テスト手続き (define (p-test x y) (<= (+ (square (- x 5)) (square (- y 5))) (square 5))) ;;結果 (pi-from-monte-carlo-simulation (stream-ref (estimate-integral p-test 0 10 0 10) 100000) (square 5)) gosh> 79.02120978790212 3.160848391516085
これで、3章が終了。いよいよ4章へ突入!
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542