newton_cotes#
- scipy.integrate.newton_cotes(rn, равно=0)[источник]#
Возвращает веса и коэффициент ошибки для интегрирования Ньютона-Котеса.
Предположим, у нас есть (N+1) выборок f в позициях x_0, x_1, …, x_N. Тогда N-точечная формула Ньютона-Котеса для интеграла между x_0 и x_N:
\(\int_{x_0}^{x_N} f(x)dx = \Delta x \sum_{i=0}^{N} a_i f(x_i) + B_N (\Delta x)^{N+2} f^{N+1} (\xi)\)
где \(\xi \in [x_0,x_N]\) и \(\Delta x = \frac{x_N-x_0}{N}\) является средним шагом выборок.
Если выборки равноотстоящие и N чётное, то член погрешности равен \(B_N (\Delta x)^{N+3} f^{N+2}(\xi)\).
- Параметры:
- rnint
Целочисленный порядок для равноотстоящих данных или относительные позиции выборок с первой выборкой в 0 и последней в N, где N+1 — это длина rn. N — порядок интегрирования Ньютона-Котеса.
- равноint, необязательный
Установить в 1 для принудительного использования равноотстоящих данных.
- Возвращает:
- атрибут данного класса.ndarray
Одномерный массив весов, применяемых к функции в заданных позициях выборок.
- Bfloat
Коэффициент ошибки.
Примечания
Обычно правила Ньютона-Котеса используются на меньших областях интегрирования, а составное правило применяется для возврата общего интеграла.
Примеры
Вычислить интеграл sin(x) на [0, \(\pi\)]:
>>> from scipy.integrate import newton_cotes >>> import numpy as np >>> def f(x): ... return np.sin(x) >>> a = 0 >>> b = np.pi >>> exact = 2 >>> for N in [2, 4, 6, 8, 10]: ... x = np.linspace(a, b, N + 1) ... an, B = newton_cotes(N, 1) ... dx = (b - a) / N ... quad = dx * np.sum(an * f(x)) ... error = abs(quad - exact) ... print('{:2d} {:10.9f} {:.5e}'.format(N, quad, error)) ... 2 2.094395102 9.43951e-02 4 1.998570732 1.42927e-03 6 2.000017814 1.78136e-05 8 1.999999835 1.64725e-07 10 2.000000001 1.14677e-09