scipy.interpolate.BPoly.

from_derivatives#

classmethod BPoly.from_derivatives(xi, yi, orders=None, extrapolate=None)[原始碼]#

在 Bernstein 基底中建構一個分段多項式,與斷點處指定的數值和導數相容。

參數:
xiarray_like (類陣列)

已排序的 x 座標一維陣列

yiarray_like (類陣列) 或 array_likes (類陣列列表) 的列表

yi[i][j] 是在 xi[i] 處已知的第 j 個導數

ordersNone 或 int 或 ints 的 array_like (類陣列)。預設值:None。

指定局部多項式的次數。如果不是 None,則會忽略某些導數。

extrapolatebool 或 ‘periodic’,選填

如果是 bool,則決定是否基於第一個和最後一個區間外推到超出範圍的點,或者返回 NaN。如果是 ‘periodic’,則使用週期性外推。預設值為 True。

註解

如果在斷點 x 處指定了 k 個導數,則建構的多項式在 x 處正好是 k 次連續可微分的,除非明確提供了 order。在後一種情況下,斷點處多項式的平滑度由 order 控制。

order 和可用的導數數量推斷出每端要匹配的導數數量。如果可能,它會使用來自每一端的相同數量的導數;如果數量是奇數,它會嘗試從 y2 中取得額外的一個。在任何情況下,如果一端或另一端沒有足夠的導數可用,它會從另一端提取足夠的導數來補足總數。

如果 order 太高且沒有足夠的導數可用,則會引發例外。

範例

>>> from scipy.interpolate import BPoly
>>> BPoly.from_derivatives([0, 1], [[1, 2], [3, 4]])

創建一個次數為 3 的多項式 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) = 0f(2) = 2df/dx(0) = 1。根據提供的導數數量,局部多項式的次數在 [0, 1] 上為 2,在 [1, 2] 上為 1。請注意,在 x = 1x = 2 處沒有對導數施加限制。

實際上,多項式的顯式形式為

f(x) = | x * (1 - x),  0 <= x < 1
       | 2 * (x - 1),  1 <= x <= 2

因此 f’(1-0) = -1 且 f’(1+0) = 2