scipy.interpolate.InterpolatedUnivariateSpline¶
- class scipy.interpolate.InterpolatedUnivariateSpline(x, y, w=None, bbox=[None, None], k=3, ext=0, check_finite=False)[源代码]¶
给定数据点集合的一维插值样条。
拟合次数为y=spl(X)的样条曲线 k 至提供的 x , y 数据。样条函数通过所有提供的点。相当于
UnivariateSpline
其中s=0。- 参数
- x(n,)类似数组
数据点的输入维度--必须严格增加
- y(n,)类似数组
数据点的输入维度
- w(n,)array_like,可选
样条曲线拟合的权重。一定是阳性的。如果为None(默认),则权重都相等。
- bbox(2,)array_like,可选
2-指定近似间隔边界的序列。如果无(默认值),
bbox=[x[0], x[-1]]
。- k整型,可选
平滑样条曲线的阶数。必须是1<= k <=5。
- extint或str,可选
控制不在节点序列定义的间隔内的元素的外推模式。
如果ext=0或‘Extrapolate’,则返回外推值。
如果ext=1或‘零’,则返回0
如果ext=2或‘RAISE’,则引发ValueError
如果ext=3 of‘const’,则返回边界值。
默认值为0。
- check_finite布尔值,可选
是否检查输入数组是否仅包含有限数字。禁用可能会提高性能,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止或无意义的结果)。默认值为False。
参见
UnivariateSpline
一种光滑的单变量样条,用于拟合给定的数据点集合。
LSQUnivariateSpline
用户为其选择结的样条曲线
SmoothBivariateSpline
一种通过给定点的光顺二元样条
LSQBivariateSpline
基于加权最小二乘拟合的二元样条
splrep
求一维曲线B样条表示的函数
splev
求B样条或其导数的函数
sproot
三次B样条的求根函数
splint
求两点间B样条定积分的一个函数
spalde
求B样条所有导数的一个函数
注意事项
数据点的数量必须大于样条阶数 k 。
示例
>>> import matplotlib.pyplot as plt >>> from scipy.interpolate import InterpolatedUnivariateSpline >>> rng = np.random.default_rng() >>> x = np.linspace(-3, 3, 50) >>> y = np.exp(-x**2) + 0.1 * rng.standard_normal(50) >>> spl = InterpolatedUnivariateSpline(x, y) >>> plt.plot(x, y, 'ro', ms=5) >>> xs = np.linspace(-3, 3, 1000) >>> plt.plot(xs, spl(xs), 'g', lw=3, alpha=0.7) >>> plt.show()
请注意,
spl(x)
插补 y :>>> spl.get_residual() 0.0
方法:
__call__
\(X[, nu, ext] )计算位置x处的样条线(或其第n阶导数)。
antiderivative
\([n] )构造一个表示该样条的逆导数的新样条。
derivative
\([n] )构造一个表示该样条的导数的新样条。
derivatives
\(X)返回点x处样条的所有导数。
get_coeffs
\()返回样条系数。
get_knots
\()返回样条线内部节点的位置。
get_residual
\()返回样条近似残差平方的加权和。
integral
\(a,b)返回两个给定点之间样条的定积分。
roots
\()返回样条曲线的零。
set_smoothing_factor
\(s)使用给定的平滑因子s和上次调用时找到的节点继续样条曲线计算。
validate_input