sproot#
- scipy.interpolate.sproot(tck, mest=10)[source]#
- Find the roots of a cubic B-spline. - Legacy - This function is considered legacy and will no longer receive updates. While we currently have no plans to remove it, we recommend that new code uses more modern alternatives instead. Specifically, we recommend constructing a - BSplineobject and using the following pattern: PPoly.from_spline(spl).roots().- Given the knots (>=8) and coefficients of a cubic B-spline return the roots of the spline. - Parameters:
- tcktuple or a BSpline object
- If a tuple, then it should be a sequence of length 3, containing the vector of knots, the B-spline coefficients, and the degree of the spline. The number of knots must be >= 8, and the degree must be 3. The knots must be a montonically increasing sequence. 
- mestint, optional
- An estimate of the number of zeros (Default is 10). 
 
- Returns:
- zerosndarray
- An array giving the roots of the spline. 
 
 - Notes - Manipulating the tck-tuples directly is not recommended. In new code, prefer using the - BSplineobjects.- References [1]- C. de Boor, “On calculating with b-splines”, J. Approximation Theory, 6, p.50-62, 1972. [2]- M. G. Cox, “The numerical evaluation of b-splines”, J. Inst. Maths Applics, 10, p.134-149, 1972. [3]- P. Dierckx, “Curve and surface fitting with splines”, Monographs on Numerical Analysis, Oxford University Press, 1993. - Examples - For some data, this method may miss a root. This happens when one of the spline knots (which FITPACK places automatically) happens to coincide with the true root. A workaround is to convert to - PPoly, which uses a different root-finding algorithm.- For example, - >>> 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) - Converting to a PPoly object does find the roots at - x=2:- >>> ppoly = PPoly.from_spline(tck) >>> ppoly.roots(extrapolate=False) array([2.]) - Further examples are given in the tutorial.