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:  rn : int
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.
 equal : int, optional
Set to 1 to enforce equally spaced data.
Returns:  an : ndarray
1D array of weights to apply to the function at the provided sample positions.
 B : float
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