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