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 物件。
筆記
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