LSQUnivariateSpline#
- class scipy.interpolate.LSQUnivariateSpline(x, y, t, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)[原始碼]#
具有顯式內部節點的 1-D 樣條。
舊版
此類別被視為舊版,將不再接收更新。雖然我們目前沒有移除它的計畫,但我們建議新的程式碼改用更現代的替代方案。具體來說,我們建議改用
make_lsq_spline
。將 k 次樣條曲線 y = spl(x) 擬合到提供的 x, y 資料。t 指定樣條曲線的內部節點
- 參數:
- x(N,) 類陣列
資料點的輸入維度 – 必須遞增
- y(N,) 類陣列
資料點的輸入維度
- t(M,) 類陣列
樣條曲線的內部節點。必須依升序排列且
bbox[0] < t[0] < ... < t[-1] < bbox[-1]
- w(N,) 類陣列,選用
樣條曲線擬合的權重。必須為正數。如果為 None(預設值),則權重皆為 1。
- bbox(2,) 類陣列,選用
指定近似區間邊界的 2 序列。如果為 None(預設值),
bbox = [x[0], x[-1]]
。- kint,選用
平滑樣條曲線的次數。必須為 1 <= k <= 5。預設值為 k = 3,即三次樣條曲線。
- extint 或 str,選用
控制未在節點序列定義的區間內的元素的外插模式。
如果 ext=0 或 ‘extrapolate’,則傳回外插值。
如果 ext=1 或 ‘zeros’,則傳回 0
如果 ext=2 或 ‘raise’,則引發 ValueError
如果 ext=3 或 ‘const’,則傳回邊界值。
預設值為 0。
- check_finitebool,選用
是否檢查輸入陣列是否僅包含有限數字。停用可能會提高效能,但如果輸入包含無限或 NaN,可能會導致問題(崩潰、未終止或無意義的結果)。預設值為 False。
- 引發:
- ValueError
如果內部節點不滿足 Schoenberg-Whitney 條件
另請參閱
UnivariateSpline
用於擬合給定資料點集的平滑單變量樣條曲線。
InterpolatedUnivariateSpline
用於給定資料點集的內插單變量樣條曲線。
splrep
用於查找一維曲線 B 樣條表示的函數
splev
用於評估 B 樣條或其導數的函數
sproot
用於查找三次 B 樣條根的函數
splint
用於評估給定兩點之間 B 樣條定積分的函數
spalde
用於評估 B 樣條所有導數的函數
註解
資料點的數量必須大於樣條曲線次數 k。
節點 t 必須滿足 Schoenberg-Whitney 條件,即必須存在資料點
x[j]
的子集,使得t[j] < x[j] < t[j+k+1]
,適用於j=0, 1,...,n-k-2
。範例
>>> import numpy as np >>> from scipy.interpolate import LSQUnivariateSpline, UnivariateSpline >>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng() >>> x = np.linspace(-3, 3, 50) >>> y = np.exp(-x**2) + 0.1 * rng.standard_normal(50)
使用預先定義的內部節點擬合平滑樣條曲線
>>> t = [-1, 0, 1] >>> spl = LSQUnivariateSpline(x, y, t)
>>> xs = np.linspace(-3, 3, 1000) >>> plt.plot(x, y, 'ro', ms=5) >>> plt.plot(xs, spl(xs), 'g-', lw=3) >>> plt.show()
檢查節點向量
>>> spl.get_knots() array([-3., -1., 0., 1., 3.])
使用另一個樣條曲線的節點建構 lsq 樣條曲線
>>> x = np.arange(10) >>> s = UnivariateSpline(x, x, s=0) >>> s.get_knots() array([ 0., 2., 3., 4., 5., 6., 7., 9.]) >>> knt = s.get_knots() >>> s1 = LSQUnivariateSpline(x, x, knt[1:-1]) # Chop 1st and last knot >>> s1.get_knots() array([ 0., 2., 3., 4., 5., 6., 7., 9.])
方法
__call__
(x[, nu, ext])在位置 x 評估樣條曲線(或其 nu 階導數)。
antiderivative
([n])建構一個新的樣條曲線,表示此樣條曲線的反導數。
derivative
([n])建構一個新的樣條曲線,表示此樣條曲線的導數。
derivatives
(x)傳回樣條曲線在點 x 的所有導數。
傳回樣條曲線係數。
傳回樣條曲線內部節點的位置。
傳回樣條曲線近似值的平方殘差加權總和。
integral
(a, b)傳回給定兩點之間樣條曲線的定積分。
roots
()傳回樣條曲線的零點。
使用給定的平滑因子 s 和上次呼叫中找到的節點繼續樣條曲線計算。
validate_input