scipy.interpolate.
splantider#
- scipy.interpolate.splantider(tck, n=1)[source]#
计算给定样条的反导数(积分)的样条。
旧版
此函数被视为旧版功能,将不再接收更新。虽然我们目前没有删除它的计划,但我们建议新代码使用更现代的替代方案。具体来说,我们建议构造一个
BSpline
对象并使用其antiderivative
方法。- 参数:
- tckBSpline 实例或 (t, c, k) 元组
要计算其反导数的样条
- nint,可选
要评估的反导数的阶数。默认值:1
- 返回:
- BSpline 实例或 (t2, c2, k2) 元组
阶数为 k2=k+n 的样条,表示输入样条的反导数。当且仅当输入参数 tck 是一个元组时,才返回一个元组,否则会构造并返回一个 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