scipy.interpolate.

BPoly#

class scipy.interpolate.BPoly(c, x, extrapolate=None, axis=0)[source]#

伯恩斯坦基中的分段多项式。

x[i]x[i + 1] 之间的多项式以伯恩斯坦多项式基表示

S = sum(c[a, i] * b(a, k; x) for a in range(k+1)),

其中 k 是多项式的次数,且

b(a, k; x) = binom(k, a) * t**a * (1 - t)**(k - a),

其中 t = (x - x[i]) / (x[i+1] - x[i])binom 是二项式系数。

参数:
cndarray, 形状 (k, m, …)

多项式系数,阶数 km 个区间

xndarray, 形状 (m+1,)

多项式断点。必须按升序或降序排序。

extrapolatebool, 可选

如果为布尔值,则确定是根据第一个和最后一个区间外推到超出边界的点,还是返回 NaN。如果为“periodic”,则使用周期性外推。默认为 True。

axisint, 可选

插值轴。默认为零。

属性:
xndarray

断点。

cndarray

多项式的系数。它们被重塑为 3D 数组,其中最后一维表示原始系数数组的尾随维度。

axisint

插值轴。

方法

__call__(x[, nu, extrapolate])

评估分段多项式或其导数。

extend(c, x)

向多项式添加额外的断点和系数。

derivative([nu])

构造表示导数的新分段多项式。

antiderivative([nu])

构造表示不定积分的新分段多项式。

integrate(a, b[, extrapolate])

计算分段多项式上的定积分。

construct_fast(c, x[, extrapolate, axis])

不进行检查地构造分段多项式。

from_power_basis(pp[, extrapolate])

从幂基多项式构造伯恩斯坦基中的分段多项式。

from_derivatives(xi, yi[, orders, extrapolate])

构造伯恩斯坦基中的分段多项式,与在断点处指定的值和导数兼容。

另请参阅

PPoly

幂基分段多项式

注释

伯恩斯坦多项式的性质在文献中已有详细记载,例如参见 [1] [2] [3]

参考文献

[3]

E. H. Doha, A. H. Bhrawy, and M. A. Saker, Boundary Value Problems, vol 2011, article ID 829546, DOI:10.1155/2011/829543

示例

>>> from scipy.interpolate import BPoly
>>> x = [0, 1]
>>> c = [[1], [2], [3]]
>>> bp = BPoly(c, x)

这会创建一个二阶多项式

\[\begin{split}B(x) = 1 \times b_{0, 2}(x) + 2 \times b_{1, 2}(x) + 3 \times b_{2, 2}(x) \\ = 1 \times (1-x)^2 + 2 \times 2 x (1 - x) + 3 \times x^2\end{split}\]