Правило Сімпсона - це метод числової інтеграції. Іншими словами, це чисельне наближення певних інтегралів.
Правило Сімпсона таке:

В цьому,
f(x)
називається інтеграломa
= нижня межа інтеграціїb
= верхня межа інтеграції
1/3 правила Сімпсона

Як показано на діаграмі вище, інтеграл f(x)
апроксимується поліномом другого порядку; квадратична інтерполянтна істота P(x)
.
Наближення випливає,

Замінивши (b-a)/2
як h
, отримуємо,

Як бачите, 1/3
у наведеному вище вираженні є коефіцієнт . Ось чому його називають Правилом 1/3 Симпсона .
Якщо функція сильно коливається або їй бракує похідних у певних точках, то вищенаведене правило може не дати точних результатів.
Поширеним способом вирішення цього є використання складеного підходу правила Сімпсона . Для цього розбийте [a,b]
на невеликі подинтервали, а потім застосуйте правило Сімпсона до кожного подинтервалу. Потім підсумуйте результати кожного розрахунку, щоб отримати апроксимацію по всьому інтегралу.
Якщо інтервал [a,b]
розділений на n
подинтервали і n
є парним числом, складене правило Сімпсона обчислюється за такою формулою:

де x j = a + jh для j = 0,1,…, n-1, n з h = (ba) / n ; зокрема, x 0 = a та x n = b .
Приклад в C ++:
Для наближення значення інтеграла, наведеного нижче, де n = 8:

#include #include using namespace std; float f(float x) { return x*sin(x); //Define the function f(x) } float simpson(float a, float b, int n) { float h, x[n+1], sum = 0; int j; h = (b-a)/n; x[0] = a; for(j=1; j<=n; j++) { x[j] = a + h*j; } for(j=1; j<=n/2; j++) { sum += f(x[2*j - 2]) + 4*f(x[2*j - 1]) + f(x[2*j]); } return sum*h/3; } int main() { float a,b,n; a = 1; //Enter lower limit a b = 4; //Enter upper limit b n = 8; //Enter step-length n if (n%2 == 0) cout<
Simpson's 3/8 Rule
Simpson's 3/8 rule is similar to Simpson's 1/3 rule, the only difference being that, for the 3/8 rule, the interpolant is a cubic polynomial. Though the 3/8 rule uses one more function value, it is about twice as accurate as the 1/3 rule.
Simpson’s 3/8 rule states :

Original text

Replacing (b-a)/3
as h
, we get,

Simpson’s 3/8 rule for n intervals (n should be a multiple of 3):

where xj = a+jh for j = 0,1,…,n-1,n with h=(b-a)/n; in particular, x0 = a and xn = b.