scipy.interpolate.

splantider#

scipy.interpolate.splantider(tck, n=1)[源代码]#

计算给定样条曲线的导数(积分)的样条曲线。

旧版

此函数被认为是旧版,将不再接收更新。虽然我们目前没有计划删除它,但我们建议新代码使用更现代的替代方案。具体来说,我们建议构造一个 BSpline 对象并使用其 antiderivative 方法。

参数:
tckBSpline 实例或 (t, c, k) 元组

要计算导数的样条曲线

nint,可选

要计算的导数阶数。默认值:1

返回:
BSpline 实例或 (t2, c2, k2) 元组

阶数为 k2=k+n 的样条曲线,表示输入样条曲线的导数。当输入参数 tck 为元组时,返回一个元组,否则构造并返回一个 BSpline 对象。

另请参见

splder, splev, spalde
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