Вычисление числа Пи путём интегрирование функции 1 / sqrt (1 - x^2) в пределах [-1; 1] методом центральных прямоугольников(sqrt вычисляется по алгоритму Ньютона):
(define (sqrt x)
(define (sqrt_helper x y)
(if (< (abs (- (square y) x)) 0.000001)
y
(sqrt_helper x (/ (+ y (/ x y)) 2))))
(sqrt_helper x 1.0))
(define (pi)
(define (f x)
(/ 1.0 (sqrt (- 1.0 (square x)))))
(define (pi_helper x lim h value)
(if (> x lim)
value
(pi_helper (+ x h) lim h (+ value (* (f (+ x (/ h 2))) h)))))
(pi_helper (- (- 1.0 0.000001)) (- 1.0 0.000001) 0.000001 0.0)
)
Вычисление числа Пи путём интегрирование функции 1 / sqrt (1 - x^2) в пределах [-1; 1] методом Cимпсона:
integral f a b = (integral_helper f a a b 0 0) * 0.00001 / 3
where
integral_helper f x a b n sum | x == a = integral_helper f (x + 0.00001) a b 4 (f x)
| x >= b = sum + f b
| otherwise = integral_helper f (x + 0.00001) a b (if n == 2 then 4 else 2) (sum + n * f x)
main = print(integral (\x -> 1 / (sqrt(1 - x * x))) (-1 + 0.00001) (1 - 0.00001))
также принимается критика и усовершенствования этих алгоритмов.