scipy.interpolate.BPoly¶
- class scipy.interpolate.BPoly(c, x, extrapolate=None, axis=0)[源代码]¶
关于系数和断点的分段多项式。
之间的多项式
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,.)
多项式系数,阶数 k 和 m 间隔时间
- xndarray,形状(m+1,)
多项式断点。必须按升序或降序排序。
- extrapolate布尔值,可选
如果为bool,则确定是根据第一个和最后一个间隔外推到越界点,还是返回NAN。如果为‘PERIONAL’,则使用周期性外推。默认值为True。
- axis整型,可选
插值轴。默认值为零。
参见
PPoly
幂基中的分段多项式
注意事项
伯恩斯坦多项式的性质在文献中有很好的记载,例如参见 [1] [2] [3].
参考文献
- 1
- 2
肯尼思·I·乔伊,伯恩斯坦多项式,http://www.idav.ucdavis.edu/education/CAGDNotes/Bernstein-Polynomials.pdf
- 3
E.H.多哈,A.H.Bhrawy和M.A.Saker,边值问题,2011卷,文章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\x b_{0,2}(X)+2\x b_{1,2}(X)+3\x b_{2,2}(X)\\ =1\x(1-x)^2+2\x 2 x(1-x)+3\x^2\end{split}\]- 属性
- xndarray
断点。
- cndarray
多项式的系数。它们被重塑为三维数组,最后一维表示原始系数数组的尾部维数。
- axis集成
插值轴。
方法:
__call__
\(X[, nu, extrapolate] )计算分段多项式或其导数。
extend
\(C,x[, right] )向多项式添加其他断点和系数。
derivative
\([nu] )构造一个新的分段多项式来表示导数。
antiderivative
\([nu] )构造一个新的分段多项式来表示该反导数。
integrate
\(a,b[, extrapolate] )计算分段多项式上的定积分。
construct_fast
\(C,x[, extrapolate, axis] )构造分段多项式而不做校验。
from_power_basis
\(PP[, extrapolate] )从幂基多项式出发,构造一个分段Bernstein基多项式。
from_derivatives
\(xi,yi[, orders, extrapolate] )在Bernstein基上构造分段多项式,与断点处的指定值和导数兼容。