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) = 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