scipy.integrate.newton_cotes¶

scipy.integrate.
newton_cotes
(rn, equal=0)[source]¶ Return weights and error coefficient for NewtonCotes integration.
Suppose we have (N+1) samples of f at the positions x_0, x_1, …, x_N. Then an Npoint NewtonCotes formula for the integral between x_0 and x_N is:
\(\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)\)
where \(\xi \in [x_0,x_N]\) and \(\Delta x = \frac{x_Nx_0}{N}\) is the average samples spacing.
If the samples are equallyspaced and N is even, then the error term is \(B_N (\Delta x)^{N+3} f^{N+2}(\xi)\).
 Parameters
 rnint
The integer order for equallyspaced data or the relative positions of the samples with the first sample at 0 and the last at N, where N+1 is the length of rn. N is the order of the NewtonCotes integration.
 equalint, optional
Set to 1 to enforce equally spaced data.
 Returns
 anndarray
1D array of weights to apply to the function at the provided sample positions.
 Bfloat
Error coefficient.
Notes
Normally, the NewtonCotes rules are used on smaller integration regions and a composite rule is used to return the total integral.
Examples
Compute the integral of sin(x) in [0, \(\pi\)]:
>>> from scipy.integrate import newton_cotes >>> 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.43951e02 4 1.998570732 1.42927e03 6 2.000017814 1.78136e05 8 1.999999835 1.64725e07 10 2.000000001 1.14677e09