scipy.integrate.

newton_cotes#

scipy.integrate.newton_cotes(rn, equal=0)[Quelle]#

Gibt Gewichte und Fehlerkoeffizienten für die Newton-Cotes-Integration zurück.

Angenommen, wir haben (N+1) Abtastwerte von f an den Positionen x_0, x_1, ..., x_N. Dann ist eine N-Punkt-Newton-Cotes-Formel für das Integral zwischen x_0 und 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)\)

wobei \(\xi \in [x_0,x_N]\) und \(\Delta x = \frac{x_N-x_0}{N}\) der durchschnittliche Abtastabstand ist.

Wenn die Abtastwerte gleichmäßig verteilt sind und N gerade ist, dann ist der Fehlerterm \(B_N (\Delta x)^{N+3} f^{N+2}(\xi)\).

Parameter:
rnint

Die ganzzahlige Ordnung für gleichmäßig verteilte Daten oder die relativen Positionen der Abtastwerte, wobei der erste Abtastwert bei 0 und der letzte bei N liegt, wobei N+1 die Länge von rn ist. N ist die Ordnung der Newton-Cotes-Integration.

equalint, optional

Setzen Sie auf 1, um gleichmäßig verteilte Daten zu erzwingen.

Rückgabe:
anndarray

1-D-Array von Gewichten, die auf die Funktion an den angegebenen Abtastpositionen angewendet werden.

Bfloat

Fehlerkoeffizient.

Hinweise

Normalerweise werden die Newton-Cotes-Regeln auf kleinere Integrationsbereiche angewendet und eine zusammengesetzte Regel wird verwendet, um das Gesamtintegral zurückzugeben.

Beispiele

Berechnen Sie das Integral von sin(x) in [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