Трапеции и метод Симпсона

Как считать интегралы точнее, заменяя прямоугольники трапециями и параболами.

Метод трапеций приближает площадь полосок трапециями, а метод Симпсона — кусочками парабол, достигая высокой точности при малом числе отрезков.

Прямоугольники из прошлого урока — простой, но грубоватый инструмент: их плоские верхушки плохо повторяют изгиб кривой. Метод трапеций соединяет соседние точки графика прямыми отрезками, то есть верхушка полоски становится наклонной — это куда ближе к кривой. А метод Симпсона идёт ещё дальше: он подгоняет под каждую пару полосок параболу.

Метод трапеций

Площадь трапеции — полусумма оснований на высоту. Для всего отрезка формула трапеций:

$$\int_a^b f\,dx \approx \Delta x\left(\frac{f(x_0)+f(x_n)}{2} + \sum_{i=1}^{n-1} f(x_i)\right)$$

Крайние точки берутся с половинным весом, внутренние — с полным. Ошибка убывает как $\Delta x^2$ — быстрее, чем у прямоугольников.

Метод Симпсона

Симпсон приближает кривую параболами, проходящими через три точки. Это даёт поразительную точность: ошибка убывает как $\Delta x^4$. Формула чередует веса $1, 4, 2, 4, 2, \ldots, 4, 1$:

$$\int_a^b f\,dx \approx \frac{\Delta x}{3}\big(f_0 + 4f_1 + 2f_2 + 4f_3 + \cdots + 4f_{n-1} + f_n\big)$$

Число отрезков $n$ должно быть чётным.

Сравнение точности

Посчитаем $\int_0^1 x^2\,dx = \frac{1}{3}$ обоими методами при скромном $n=10$.

def f(x): return x*x

a, b, n = 0.0, 1.0, 10
dx = (b - a) / n
xs = [a + i*dx for i in range(n+1)]

trap = dx * ((f(xs[0]) + f(xs[n]))/2 + sum(f(xs[i]) for i in range(1, n)))

simp = f(xs[0]) + f(xs[n])
for i in range(1, n):
    simp += (4 if i % 2 == 1 else 2) * f(xs[i])
simp *= dx / 3

print(f"трапеции = {trap:.10f}")
print(f"Симпсон  = {simp:.10f}")
print("точное   = 0.3333333333")

Вывод:

трапеции = 0.3350000000
Симпсон  = 0.3333333333
точное   = 0.3333333333

При тех же десяти отрезках трапеции дают ошибку в третьем знаке, а Симпсон — точное значение (для многочленов до третьей степени Симпсон вообще точен). Выбор метода радикально влияет на точность.

Как работает под капотом

Трапеция учитывает наклон верхушки, поэтому повторяет линейную часть кривой идеально, а изгиб — приближённо. Симпсон же «вписывает» параболу через три точки, и поскольку парабола сама квадратична, она точно ловит кривизну. Отсюда и магические веса $1{-}4{-}2{-}4$: они выводятся из интегрирования параболы по трём узлам. Чем выше порядок приближающей кривой, тем меньше ошибка при том же числе вычислений функции.

Частые ошибки

Первая — в методе Симпсона взять нечётное число отрезков: формула требует чётного $n$, иначе веса не сойдутся. Вторая — перепутать веса $4$ и $2$: на нечётных узлах ставится $4$, на чётных (внутренних) — $2$, а на краях — $1$. Третья — забыть половинный вес крайних точек в трапециях. Четвёртая — ждать чуда от Симпсона на разрывных или резко осциллирующих функциях: там высокая гладкость нарушена, и преимущество теряется.

Итог

  • Трапеции точнее прямоугольников: ошибка $\sim \Delta x^2$.
  • Симпсон вписывает параболы: ошибка $\sim \Delta x^4$.
  • Симпсон требует чётного числа отрезков, веса $1,4,2,\ldots,4,1$.
  • Для гладких функций Симпсон выигрывает на порядок при том же $n$.
Проверьте себя
1. Чем метод Симпсона точнее метода трапеций?
AОн приближает кривую параболами, а не отрезками
BОн использует меньше точек
CОн не требует значений функции
DОн считает только края
2. Какое требование к числу отрезков n в методе Симпсона?
An должно быть нечётным
Bn должно быть чётным
Cn должно быть простым
Dn не важно