當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy interpolate.sproot用法及代碼示例


本文簡要介紹 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.])

本教程中給出了更多示例。

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.interpolate.sproot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。