本文简要介绍 python 语言中 scipy.interpolate.sproot
的用法。
用法:
scipy.interpolate.sproot(tck, mest=10)#
求三次方 B-spline 的根。
给定三次 B-spline 的结 (>=8) 和系数,返回样条曲线的根。
- tck: 元组或 BSpline 对象
如果是元组,那么它应该是长度为 3 的序列,包含结向量、B-spline 系数和样条曲线的阶数。结的数量必须 >= 8,且次数必须为 3。结必须是单调递增的序列。
- mest: 整数,可选
零数量的估计(默认为 10)。
- zeros: ndarray
给出样条根的数组。
参数 ::
返回 ::
注意:
不建议直接操作tck-tuples。在新代码中,更喜欢使用
BSpline
对象。参考:
[1]C. de Boor,“关于使用 b-splines 进行计算”,J. 近似理论,6,第 50-62 页,1972 年。
[2]M. G. Cox,“b-splines 的数值评估”,J. Inst。数学应用,10,第 134-149 页,1972 年。
[3]P. Dierckx,“用样条拟合曲线和曲面”,数值分析专着,牛津大学出版社,1993 年。
例子:
对于某些数据,此方法可能会丢失根。当样条线结之一(FITPACK 自动放置)恰好与真实根重合时,就会发生这种情况。解决方法是转换为
PPoly
,它使用不同的 root-finding 算法。例如,
>>> 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)
转换为 PPoly 对象确实可以在 x=2 处找到根:
>>> ppoly = PPoly.from_spline(tck) >>> ppoly.roots(extrapolate=False) array([2.])
本教程中给出了更多示例。
相关用法
- Python SciPy interpolate.splder用法及代码示例
- Python SciPy interpolate.splantider用法及代码示例
- Python SciPy interpolate.splrep用法及代码示例
- Python SciPy interpolate.splprep用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy interpolate.InterpolatedUnivariateSpline用法及代码示例
- Python SciPy interpolate.BSpline用法及代码示例
- Python SciPy interpolate.LSQSphereBivariateSpline用法及代码示例
- Python SciPy interpolate.griddata用法及代码示例
- Python SciPy interpolate.LinearNDInterpolator用法及代码示例
- Python SciPy interpolate.PPoly用法及代码示例
- Python SciPy interpolate.NdBSpline用法及代码示例
- Python SciPy interpolate.pade用法及代码示例
- Python SciPy interpolate.barycentric_interpolate用法及代码示例
- Python SciPy interpolate.RegularGridInterpolator用法及代码示例
- Python SciPy interpolate.NdPPoly用法及代码示例
- Python SciPy interpolate.interp2d用法及代码示例
- Python SciPy interpolate.approximate_taylor_polynomial用法及代码示例
- Python SciPy interpolate.RectSphereBivariateSpline用法及代码示例
- Python SciPy interpolate.CloughTocher2DInterpolator用法及代码示例
- Python SciPy interpolate.interp1d用法及代码示例
- Python SciPy interpolate.BPoly用法及代码示例
- Python SciPy interpolate.BarycentricInterpolator用法及代码示例
- Python SciPy interpolate.make_smoothing_spline用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.interpolate.sproot。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。