scipy.interpolate.BPoly.
from_derivatives#
- classmethod BPoly.from_derivatives(xi, yi, orders=None, extrapolate=None)[源代码][源代码]#
在Bernstein基中构造一个分段多项式,与在断点处指定的值和导数兼容。
- 参数:
- xiarray_like
排序后的 x 坐标的一维数组
- 一类似数组的对象或类似数组对象的列表
yi[i][j]
是在xi[i]
处已知的第j
阶导数- 订单None 或 int 或 int 的类数组。默认值:None。
指定局部多项式的次数。如果未指定,则忽略某些导数。
- 外推布尔值或 ‘periodic’,可选
如果是布尔值,决定是否根据第一个和最后一个区间对边界外的点进行外推,或者返回NaN。如果是’periodic’,则使用周期性外推。默认为True。
注释
如果在断点
x
处指定了k
个导数,则构造的多项式在x
处恰好是k
次连续可微的,除非显式提供了order
。在后一种情况下,断点处多项式的平滑度由order
控制。从
order
和可用导数的数量推断出在每个端点匹配的导数数量。如果可能,它从每个端点使用相同数量的导数;如果数量是奇数,它会尝试从 y2 中取额外的导数。在任何情况下,如果在一端或另一端没有足够的导数可用,它会从另一端抽取足够的导数以补足总数。如果阶数过高且可用的导数不足,则会引发异常。
示例
>>> from scipy.interpolate import BPoly >>> BPoly.from_derivatives([0, 1], [[1, 2], [3, 4]])
创建一个三次多项式 f(x),定义在 [0, 1] 上,使得 f(0) = 1, df/dx(0) = 2, f(1) = 3, df/dx(1) = 4
>>> BPoly.from_derivatives([0, 1, 2], [[0, 1], [0], [2]])
创建一个分段多项式 f(x),使得 f(0) = f(1) = 0,f(2) = 2,以及 df/dx(0) = 1。基于提供的导数数量,局部多项式的阶数在 [0, 1] 上为 2,在 [1, 2] 上为 1。注意,在
x = 1
和x = 2
处没有对导数施加限制。确实,多项式的显式形式是:
f(x) = | x * (1 - x), 0 <= x < 1 | 2 * (x - 1), 1 <= x <= 2
使得 f’(1-0) = -1 且 f’(1+0) = 2