правило Буля
В математике , правило Буля , названное в честь Джорджа Буля представляет собой метод численного интегрирования .
Формула
[ редактировать ]Простое правило Буля
[ редактировать ]Он приближается к интегралу: используя значения f в пяти равноотстоящих точках: [ 1 ]
Это выражено у Абрамовица и Стегуна следующим образом : [ 2 ] где член ошибки на какое-то число между и где 945 = 1 × 3 × 5 × 7 × 9 .
Его часто называют правилом Боде из-за типографской ошибки, исходящей от Абрамовица и Стегуна. [ 3 ]
Ниже представлена очень простая реализация метода в Common Lisp , которая игнорирует термин ошибки:
(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)))))))
Составное правило Буля
[ редактировать ]В случаях, когда допускается интегрирование на равноотстоящих участках интервала , можно применить составное правило Буля. Данный подразделения, где против , интегрированное значение составляет: [ 4 ]
где член ошибки аналогичен приведенному выше. Следующий код Common Lisp реализует вышеупомянутую формулу:
(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))))))))
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Буль 1880 , с. 47, уравнение (21).
- ^ Дэвис и Полонский 1983 .
- ^ Вайсштейн .
- ^ Саблоньер, Сбибих и Тахричи 2010 , стр. 852.
Ссылки
[ редактировать ]- Буль, Джордж (1880) [1860]. Трактат об исчислении конечных разностей (3-е изд.). Макмиллан и компания .
- Дэвис, Филип Дж.; Полонский, Иван (1983) [июнь 1964]. «Глава 25, уравнение 25.4.14» . В Абрамовице, Милтон ; Стегун, Ирен Энн (ред.). Справочник по математическим функциям с формулами, графиками и математическими таблицами . Серия «Прикладная математика». Том. 55 (Девятое переиздание с дополнительными исправлениями десятого оригинального издания с исправлениями (декабрь 1972 г.); первое изд.). Вашингтон, округ Колумбия; Нью-Йорк: Министерство торговли США, Национальное бюро стандартов; Дуврские публикации. п. 886. ИСБН 978-0-486-61272-0 . LCCN 64-60036 . МР 0167642 . LCCN 65-12253 .
- Саблоньер, П.; Сбибих, Д.; Тахричи, М. (2010). «Оценка ошибки и экстраполяция квадратурной формулы, полученной на основе квазиинтерполянта сплайна четвертой степени». БИТ Численная математика . 50 : 843–862. дои : 10.1007/s10543-010-0278-0 .
- Вайсштейн, Эрик В. «Правило Буля» . Математический мир .