scipy.interpolate.

KroghInterpolator#

class scipy.interpolate.KroghInterpolator(xi, yi, axis=0)[Quelle]#

Krogh-Interpolator (C∞ glatt).

Das Polynom verläuft durch alle Paare (xi, yi). Man kann zusätzlich eine Anzahl von Ableitungen an jedem Punkt xi angeben; dies geschieht durch Wiederholung des Wertes xi und Angabe der Ableitungen als aufeinanderfolgende yi-Werte.

Ermöglicht die Auswertung des Polynoms und all seiner Ableitungen. Aus Gründen der numerischen Stabilität berechnet diese Funktion nicht die Koeffizienten des Polynoms, obwohl diese durch Auswertung aller Ableitungen erhalten werden können.

Parameter:
xiarray_like, Form (npoints, )

Bekannte x-Koordinaten. Müssen in aufsteigender Reihenfolge sortiert sein.

yiarray_like, Form (…, npoints, …)

Bekannte y-Koordinaten. Wenn ein xi mehrfach hintereinander auftritt, stellen die entsprechenden yi Ableitungswerte dar. Die Länge von yi entlang der Interpolationsachse muss gleich der Länge von xi sein. Verwenden Sie den Parameter axis, um die richtige Achse auszuwählen.

axisint, optional

Achse im Array yi, die den x-Koordinatenwerten entspricht. Standardmäßig axis=0.

Attribute:
dtype

Methoden

__call__(x)

Evaluiere den Interpolanten

derivative(x[, der])

Wertet eine einzelne Ableitung des Polynoms am Punkt x aus.

derivatives(x[, der])

Mehrere Ableitungen des Polynoms an der Stelle x auswerten

Hinweise

Beachten Sie, dass die hier implementierten Algorithmen nicht unbedingt die bekanntesten numerisch stabilen Algorithmen sind. Darüber hinaus ist selbst in einer Welt exakter Berechnungen, es sei denn, die x-Koordinaten werden sehr sorgfältig gewählt – Tschebyscheff-Nullstellen (z. B. cos(i*pi/n)) sind eine gute Wahl – die Polynominterpolation selbst aufgrund des Runge-Phänomens ein sehr schlecht konditionierter Prozess. Im Allgemeinen verursachen selbst bei gut gewählten x-Werten Grade, die größer als etwa dreißig sind, Probleme mit numerischer Instabilität in diesem Code.

Basiert auf [1].

Referenzen

[1]

Krogh, „Efficient Algorithms for Polynomial Interpolation and Numerical Differentiation“, 1970.

Beispiele

Um ein Polynom zu erzeugen, das bei 0 und 1 null ist und eine Ableitung von 2 bei 0 hat, rufen Sie auf:

>>> from scipy.interpolate import KroghInterpolator
>>> KroghInterpolator([0,0,1],[0,2,0])

Dies konstruiert das quadratische Polynom \(2x^2-2x\). Die Ableitungsbedingung wird durch die wiederholte Null in der xi-Liste angezeigt; die entsprechenden yi-Werte sind 0, der Funktionswert, und 2, der Ableitungswert.

Für ein weiteres Beispiel, gegeben xi, yi und eine Ableitung ypi für jeden Punkt, können geeignete Listen konstruiert werden als

>>> import numpy as np
>>> rng = np.random.default_rng()
>>> xi = np.linspace(0, 1, 5)
>>> yi, ypi = rng.random((2, 5))
>>> xi_k, yi_k = np.repeat(xi, 2), np.ravel(np.dstack((yi,ypi)))
>>> KroghInterpolator(xi_k, yi_k)

Um ein vektorwertiges Polynom zu erzeugen, geben Sie ein höherdimensionales Array für yi an

>>> KroghInterpolator([0,1],[[2,3],[4,5]])

Dies konstruiert ein lineares Polynom, das (2,3) bei 0 und (4,5) bei 1 ergibt.