scipy.interpolate.BSpline.
from_power_basis#
- classmethod BSpline.from_power_basis(pp, bc_type='not-a-knot')[原始碼]#
從冪基底的分段多項式建構 B-spline 基底中的多項式。
目前僅接受
CubicSpline
實例。- 參數:
- ppCubicSpline
冪基底中的分段多項式,由
CubicSpline
建立- bc_type字串,選填
邊界條件類型,如同
CubicSpline
:not-a-knot
、natural
、clamped
或periodic
其中之一。 建構BSpline
類別的實例時為必要。 預設值為not-a-knot
。
- 回傳值:
- bBSpline 物件
代表 B-spline 基底中初始多項式的新實例。
註解
在 1.8.0 版本中新增。
目前僅接受
CubicSpline
實例。此演算法遵循 Marsden 恆等式 [1] 的微分:B-spline 基底中 spline 插值函數的每個係數計算如下
\[c_j = \sum_{m=0}^{k} \frac{(k-m)!}{k!} c_{m,i} (-1)^{k-m} D^m p_{j,k}(x_i)\]\(c_{m, i}\) - CubicSpline 的係數,\(D^m p_{j, k}(x_i)\) - 雙多項式在 \(x_i\) 的 m 階導數。
目前
k
始終等於 3。前
n - 2
個係數在 \(x_i = x_j\) 中計算,例如\[c_1 = \sum_{m=0}^{k} \frac{(k-1)!}{k!} c_{m,1} D^m p_{j,3}(x_1)\]最後
nod + 2
個係數在x[-2]
中計算,nod
- 端點的導數數量。例如,考慮 \(x = [0, 1, 2, 3, 4]\)、\(y = [1, 1, 1, 1, 1]\) 且 bc_type =
natural
冪基底中 CubicSpline 的係數
\([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1]]\)
節點向量:\(t = [0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4]\)
在這種情況下
\[c_j = \frac{0!}{k!} c_{3, i} k! = c_{3, i} = 1,~j = 0, ..., 6\]參考文獻
[1]Tom Lyche 和 Knut Morken,《Spline Methods》,2005 年,第 3.1.2 節