scipy.interpolate.

splantider#

scipy.interpolate.splantider(tck, n=1)[原始碼]#

計算給定 spline 的反導數(積分)的 spline。

傳統

此函數被認為是傳統函數,將不再接收更新。雖然我們目前沒有計劃移除它,但我們建議新程式碼改用更現代的替代方案。具體來說,我們建議建構 BSpline 物件並使用其 antiderivative 方法。

參數:
tckBSpline 實例或 (t, c, k) 的 tuple

要計算反導數的 Spline

nint,可選

要求值的反導數階數。預設值:1

返回:
BSpline 實例或 (t2, c2, k2) 的 tuple

階數 k2=k+n 的 Spline,表示輸入 spline 的反導數。如果輸入參數 tck 是 tuple,則返回 tuple,否則建構並返回 BSpline 物件。

另請參閱

spldersplevspalde
BSpline

筆記

splder 函數是此函數的反向操作。也就是說,splder(splantider(tck))tck 相同,模數捨入誤差。

在版本 0.13.0 中新增。

範例

>>> from scipy.interpolate import splrep, splder, splantider, splev
>>> import numpy as np
>>> x = np.linspace(0, np.pi/2, 70)
>>> y = 1 / np.sqrt(1 - 0.8*np.sin(x)**2)
>>> spl = splrep(x, y)

導數是反導數的反向操作,儘管會累積一些浮點誤差

>>> splev(1.7, spl), splev(1.7, splder(splantider(spl)))
(array(2.1565429877197317), array(2.1565429877201865))

反導數可用於評估定積分

>>> ispl = splantider(spl)
>>> splev(np.pi/2, ispl) - splev(0, ispl)
2.2572053588768486

這確實是完整橢圓積分 \(K(m) = \int_0^{\pi/2} [1 - m\sin^2 x]^{-1/2} dx\) 的近似值

>>> from scipy.special import ellipk
>>> ellipk(0.8)
2.2572053268208538