make_splrep#
- scipy.interpolate.make_splrep(x, y, *, w=None, xb=None, xe=None, k=3, s=0, t=None, nest=None)[Quelle]#
Erzeugt eine glättende B-Spline-Funktion mit begrenztem Fehler, die Sprünge in den Ableitungen minimiert.
Gegeben die Datenpunkte
(x[i], y[i]), ermittelt eine glatte Spline-Approximation vom Gradkim Intervallxb <= x <= xe.- Parameter:
- x, yarray_like, Form (m,)
Die Datenpunkte, die eine Kurve
y = f(x)definieren.- warray_like, Form (m,), optional
Streng positive 1D-Array von Gewichten, die die gleiche Länge wie x und y haben. Die Gewichte werden zur Berechnung des gewichteten Spline-Fits mittels Kleinster Quadrate verwendet. Wenn die Fehler in den y-Werten Standardabweichungen haben, die durch den Vektor
dgegeben sind, dann sollte w gleich1/dsein. Standard istnp.ones(m).- xb, xefloat, optional
Das zu fittende Intervall. Wenn None, werden diese Standardwerte
x[0]undx[-1]verwendet.- kint, optional
Der Grad des Spline-Fits. Es wird empfohlen, kubische Splines (
k=3) zu verwenden, was der Standard ist. Gerade Werte von k sollten vermieden werden, insbesondere bei kleinen s-Werten.- sfloat, optional
Die Glättungsbedingung. Das Maß an Glätte wird durch die Erfüllung der LSQ-Bedingung (Kleinste Quadrate) bestimmt:
sum((w * (g(x) - y))**2 ) <= s
wobei
g(x)die geglättete Anpassung an(x, y)ist. Der Benutzer kann s verwenden, um den Kompromiss zwischen Nähe zu den Daten und Glätte des Fits zu steuern. Größere s-Werte bedeuten mehr Glättung, während kleinere s-Werte weniger Glättung anzeigen. Empfohlene s-Werte hängen von den Gewichten w ab. Wenn die Gewichte die Umkehrung der Standardabweichung von y darstellen, dann sollte ein guter s-Wert im Bereich(m-sqrt(2*m), m+sqrt(2*m))liegen, wobeimdie Anzahl der Datenpunkte in x, y und w ist. Standard ists = 0.0, d. h. Interpolation.- tarray_like, optional
Die Spline-Knoten. Wenn None (Standard), werden die Knoten automatisch konstruiert. Es müssen mindestens
2*k + 2und höchstensm + k + 1Knoten vorhanden sein.- nestint, optional
Die Ziel-Länge des Knotenvektors. Sollte zwischen
2*(k + 1)(die minimale Anzahl von Knoten für einen Spline vom Gradk) undm + k + 1(die Anzahl der Knoten des interpolierenden Splines) liegen. Die tatsächliche Anzahl der von dieser Routine zurückgegebenen Knoten kann etwas größer sein als nest. Standard ist None (keine Begrenzung, bis zum + k + 1Knoten hinzufügen).
- Rückgabe:
- spleine
BSpline-Instanz Für s=0 gilt
spl(x) == y. Für Werte von s ungleich Null stellt spl die geglättete Annäherung an (x, y) dar, im Allgemeinen mit weniger Knoten.
- spleine
Siehe auch
generate_knotswird intern zur Erzeugung der Knoten verwendet
make_splprepdas Analogon dieser Routine für parametrische Kurven
make_interp_splinekonstruiert einen interpolierenden Spline (
s = 0)make_lsq_splinekonstruiert den Spline nach der Methode der kleinsten Quadrate unter Angabe des Knotenvektors
splrepein FITPACK-Analogon dieser Routine
Hinweise
Diese Routine konstruiert die glättende Spline-Funktion, \(g(x)\), um die Summe der Sprünge \(D_j\) der
k-ten Ableitung an den internen Knoten (\(x_b < t_i < x_e\)) zu minimieren, wobei\[D_i = g^{(k)}(t_i + 0) - g^{(k)}(t_i - 0)\]Insbesondere konstruiert die Routine die Spline-Funktion \(g(x)\), die minimiert:
\[\sum_i | D_i |^2 \to \mathrm{min}\]vorausgesetzt, dass
\[\sum_{j=1}^m (w_j \times (g(x_j) - y_j))^2 \leqslant s ,\]wobei \(s > 0\) der Eingabeparameter ist.
Mit anderen Worten, wir balancieren die Maximierung der Glätte (gemessen an den Sprüngen der Ableitung, das erste Kriterium) und die Abweichung von \(g(x_j)\) von den Daten \(y_j\) (das zweite Kriterium).
Beachten Sie, dass die Summation im zweiten Kriterium über alle Datenpunkte erfolgt und im ersten Kriterium über die internen Spline-Knoten (d. h. diejenigen mit
xb < t[i] < xe). Die Spline-Knoten sind im Allgemeinen eine Teilmenge der Daten, siehegenerate_knotsfür Details.Beachten Sie auch den Unterschied zu
make_lsq_spline: Letztere Routine berücksichtigt keine Glätte und löst einfach ein Problem der kleinsten Quadrate\[\sum w_j \times (g(x_j) - y_j)^2 \to \mathrm{min}\]für eine Spline-Funktion \(g(x)\) mit einem _festen_ Knotenvektor
t.Hinzugefügt in Version 1.15.0.
Referenzen
[1]P. Dierckx, “Algorithms for smoothing data with periodic and parametric splines, Computer Graphics and Image Processing”, 20 (1982) 171-184.
[2]P. Dierckx, “Curve and surface fitting with splines”, Monographs on Numerical Analysis, Oxford University Press, 1993.