Boole's rule
In mathematics, Boole's rule, named after George Boole, is a method of numerical integration. It approximates an integral
by using the values of ƒ at five equally spaced points
It is expressed thus in Abramowitz and Stegun (1972, p. 886):
and the error term is
for some number c between x1 and x5. (945 = 1 × 3 × 5 × 7 × 9.)
It is often known as Bode's rule, due to a typographical error that propagated from Abramowitz and Stegun (1972, p. 886).[1][2]
The following constitutes a very simple implementation of the method in Common Lisp which ignores the error term:
(defun integrate-booles-rule (f x1 x5)
"Calculates the Boole's rule numerical integral of the function F in
the closed interval extending from inclusive X1 to inclusive X5
without error term inclusion."
(declare (type (function (real) real) f))
(declare (type real x1 x5))
(let ((h (/ (- x5 x1) 4)))
(declare (type real h))
(let* ((x2 (+ x1 h))
(x3 (+ x2 h))
(x4 (+ x3 h)))
(declare (type real x2 x3 x4))
(* (/ (* 2 h) 45)
(+ (* 7 (funcall f x1))
(* 32 (funcall f x2))
(* 12 (funcall f x3))
(* 32 (funcall f x4))
(* 7 (funcall f x5)))))))
Composite Boole's Rule
In cases where the integration is permitted to extend over equidistant sections of the interval , the composite Boole's rule might be applied. Given divisions, the integrated value amounts to[3]
The following Common Lisp code implements the aforementioned formula:
(defun integrate-composite-booles-rule (f a b n)
"Calculates the composite Boole's rule numerical integral of the
function F in the closed interval extending from inclusive A to
inclusive B across N subintervals."
(declare (type (function (real) real) f))
(declare (type real a b))
(declare (type (integer 1 *) n))
(let ((h (/ (- b a) n)))
(declare (type real h))
(flet ((f[i] (i)
(declare (type (integer 0 *) i))
(let ((xi (+ a (* i h))))
(declare (type real xi))
(the real (funcall f xi)))))
(* (/ (* 2 h) 45)
(+ (* 7 (+ (f[i] 0) (f[i] n)))
(* 32 (loop for i from 1 to (- n 1) by 2 sum (f[i] i)))
(* 12 (loop for i from 2 to (- n 2) by 4 sum (f[i] i)))
(* 14 (loop for i from 4 to (- n 4) by 4 sum (f[i] i))))))))
References
- Weisstein, Eric W. "Boole's Rule". MathWorld.
- Zucker, Ruth (1983) [June 1964]. "Chapter 25.4.14: Numerical Interpolation, Differentiation, and Integration - Integration - Numerical Analysis". In Abramowitz, Milton; Stegun, Irene Ann (eds.). Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. Applied Mathematics Series. 55 (Ninth reprint with additional corrections of tenth original printing with corrections (December 1972); first ed.). Washington D.C.; New York: United States Department of Commerce, National Bureau of Standards; Dover Publications. p. 886. ISBN 978-0-486-61272-0. LCCN 64-60036. MR 0167642. LCCN 65-12253.
- Ubale, P. V. (2012). Numerical Solution of Boole’s rule in Numerical Integration By Using General Quadrature Formula (PDF). G. S. College of Science, Arts, Comm., Khamgaon, India. Retrieved 17 April 2021.