baryzentrische_interpolation#
- scipy.interpolate.baryzentrische_interpolation(xi, yi, x, achse=0, *, der=0, rng=None)[Quelle]#
Bequeme Funktion für die baryzentrische Interpolation.
Konstruiert ein Polynom, das durch einen gegebenen Satz von Punkten verläuft, und wertet dann das Polynom aus. Aus Gründen der numerischen Stabilität berechnet diese Funktion nicht die Koeffizienten des Polynoms.
Diese Funktion verwendet eine „baryzentrische Interpolationsmethode“, die das Problem als Sonderfall der rationalen Funktionsinterpolation behandelt. Dieser Algorithmus ist numerisch recht stabil, aber selbst in einer Welt exakter Berechnungen ist Polynominterpolation ein sehr schlecht konditionierter Prozess, es sei denn, die x-Koordinaten werden sehr sorgfältig gewählt – Tschebyscheff-Nullstellen (z. B. cos(i*pi/n)) sind eine gute Wahl – aufgrund des Runge-Phänomens.
- Parameter:
- xiarray_like
1-D-Array der x-Koordinaten der Punkte, durch die das Polynom verlaufen soll
- yiarray_like
Die y-Koordinaten der Punkte, durch die das Polynom verlaufen soll.
- xSkalar oder array_like
Punkt oder Punkte, an denen der Interpolator ausgewertet werden soll.
- axisint, optional
Achse im yi-Array, die den x-Koordinatenwerten entspricht.
- derint oder list oder None, optional
Wie viele Ableitungen ausgewertet werden sollen, oder None für alle potenziell nicht-null Ableitungen (d. h. eine Zahl gleich der Anzahl der Punkte) oder eine Liste der auszuwertenden Ableitungen. Diese Zahl enthält den Funktionswert als '0-te' Ableitung.
- rng
numpy.random.Generator, optional Zustand des Pseudozufallszahlengenerators. Wenn rng None ist, wird ein neuer
numpy.random.Generatorunter Verwendung von Entropie aus dem Betriebssystem erstellt. Typen außernumpy.random.Generatorwerden annumpy.random.default_rngübergeben, um einenGeneratorzu instanziieren.
- Rückgabe:
- ySkalar oder array_like
Interpolierte Werte. Die Form wird bestimmt, indem die Interpolationsachse im ursprünglichen Array durch die Form von x ersetzt wird.
Siehe auch
BarycentricInterpolatorBaryzentrischer Interpolator
Hinweise
Die Konstruktion der Interpolationsgewichte ist ein relativ langsamer Prozess. Wenn Sie dies viele Male mit demselben
xi(aber möglicherweise unterschiedlichenyioderx) aufrufen möchten, sollten Sie die KlasseBarycentricInterpolatorverwenden. Dies ist das, was diese Funktion intern verwendet.Beispiele
Wir können 2D beobachtete Daten mit baryzentrischer Interpolation interpolieren
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy.interpolate import barycentric_interpolate >>> x_observed = np.linspace(0.0, 10.0, 11) >>> y_observed = np.sin(x_observed) >>> x = np.linspace(min(x_observed), max(x_observed), num=100) >>> y = barycentric_interpolate(x_observed, y_observed, x) >>> plt.plot(x_observed, y_observed, "o", label="observation") >>> plt.plot(x, y, label="barycentric interpolation") >>> plt.legend() >>> plt.show()