scipy.interpolate.splantider

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

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

参数
tckB样条实例或(t,c,k)的元组

要计算其反导数的样条

n整型,可选

要计算的反导数的顺序。默认值:1

退货
B样条实例或(t2,c2,k2)的元组

阶为k2=k+n的样条,表示输入样条的逆导数。返回元组当且仅当输入参数 tck 是元组,否则将构造并返回BSpline对象。

注意事项

这个 splder 函数是该函数的逆运算。也就是说, splder(splantider(tck)) 等同于 tck 取模取整误差。

0.13.0 新版功能.

示例

>>> from scipy.interpolate import splrep, splder, splantider, splev
>>> 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