scipy.interpolate.

sproot#

scipy.interpolate.sproot(tck, mest=10)[Quelle]#

Finden Sie die Nullstellen einer kubischen B-Spline.

Veraltet

Diese Funktion gilt als veraltet und wird keine Updates mehr erhalten. Obwohl wir derzeit keine Pläne haben, sie zu entfernen, empfehlen wir, dass neuer Code modernere Alternativen verwendet. Insbesondere empfehlen wir, ein BSpline-Objekt zu erstellen und das folgende Muster zu verwenden: PPoly.from_spline(spl).roots().

Gegeben die Knoten (>=8) und Koeffizienten einer kubischen B-Spline, geben Sie die Nullstellen der Spline zurück.

Parameter:
tckTupel oder ein BSpline-Objekt

Wenn es sich um ein Tupel handelt, sollte es eine Sequenz der Länge 3 sein, die den Vektor der Knoten, die B-Spline-Koeffizienten und den Grad der Spline enthält. Die Anzahl der Knoten muss >= 8 sein und der Grad muss 3 sein. Die Knoten müssen eine monoton steigende Sequenz sein.

mestint, optional

Eine Schätzung der Anzahl der Nullstellen (Standard ist 10).

Rückgabe:
zerosndarray

Ein Array, das die Nullstellen der Spline enthält.

Hinweise

Die direkte Manipulation von tck-Tupeln wird nicht empfohlen. In neuem Code sollten stattdessen BSpline-Objekte bevorzugt werden.

Referenzen

[1]

C. de Boor, „On calculating with b-splines“, J. Approximation Theory, 6, S. 50-62, 1972.

[2]

M. G. Cox, „The numerical evaluation of b-splines“, J. Inst. Maths Applics, 10, S. 134-149, 1972.

[3]

P. Dierckx, “Curve and surface fitting with splines”, Monographs on Numerical Analysis, Oxford University Press, 1993.

Beispiele

Bei einigen Daten kann diese Methode eine Nullstelle übersehen. Dies geschieht, wenn einer der Spline-Knoten (die FITPACK automatisch platziert) zufällig mit der tatsächlichen Nullstelle zusammenfällt. Eine Umgehung besteht darin, in PPoly zu konvertieren, das einen anderen Algorithmus zur Nullstellensuche verwendet.

Zum Beispiel,

>>> x = [1.96, 1.97, 1.98, 1.99, 2.00, 2.01, 2.02, 2.03, 2.04, 2.05]
>>> y = [-6.365470e-03, -4.790580e-03, -3.204320e-03, -1.607270e-03,
...      4.440892e-16,  1.616930e-03,  3.243000e-03,  4.877670e-03,
...      6.520430e-03,  8.170770e-03]
>>> from scipy.interpolate import splrep, sproot, PPoly
>>> tck = splrep(x, y, s=0)
>>> sproot(tck)
array([], dtype=float64)

Die Konvertierung in ein PPoly-Objekt findet die Nullstellen bei x=2

>>> ppoly = PPoly.from_spline(tck)
>>> ppoly.roots(extrapolate=False)
array([2.])

Weitere Beispiele finden Sie im Tutorial.