Clojure で 積分(台形則)して π を求める
積分(台形則)
(defn f[x] (/ 4 (+ 1 (* x x)))) (def a 0) (def b 1) ; 台形則で積分 (doseq [j (range 1 11)] (def n (Math/pow 2 j)) (def h (/ (- b a) n)) (def x a) (def s 0) (doseq [i (range 1 n)] (def x (+ x h)) (def s (+ s (f x)))) (def t1 (double (* h (+ (/ (+ (f a) (f b)) 2) s)))) (def t2 (- t1 (. Math PI))) ; 結果を π と比較 (println (format "%2d : %13.10f, %13.10f" j t1 t2)))
1 : 3.1000000000, -0.0415926536 2 : 3.1311764706, -0.0104161830 3 : 3.1389884945, -0.0026041591 4 : 3.1409416120, -0.0006510415 5 : 3.1414298932, -0.0001627604 6 : 3.1415519635, -0.0000406901 7 : 3.1415824811, -0.0000101725 8 : 3.1415901105, -0.0000025431 9 : 3.1415920178, -0.0000006358 10 : 3.1415924946, -0.0000001589 nil
参考文献