scipy.interpolate.CubicSpline的外推如何在数学上起作用?

时间:2018-06-25 13:23:06

标签: scipy spline extrapolation

我正在尝试了解scipy.interpolate.CubicSpline(...,extrapolate = True) 在内部工作:Scipy如何在数学上精确地实现超出[a,b]的点x的外推?

我正在寻找一个公式,例如: 如果x> b(这似乎不是它们的实现方式),score(x)= exp(-x + b)。

试图查看源代码,无法找到其实现方式。文档也没有提供任何详细信息。

1 个答案:

答案 0 :(得分:3)

样条曲线是分段多项式,即数据间隔[a, b]的多个子间隔在每个子间隔上都是多项式。对于extrapolate=True,最左边间隔的多项式用于x < a,最右边间隔的多项式用于x > b。这就是文档描述为

  

根据第一个和最后一个间隔外推到边界点,

非常简单,非常无用。这是一个例子。

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import CubicSpline
f = CubicSpline([-2, -1, 0, 1, 2], [1, 1, 0, 2, 2], extrapolate=True)
t = np.linspace(-4, 4)
plt.plot(t, f(t))
plt.show()

所有给定的y值都在0到2之间,但是三次多项式进行了糟糕的外推。

plot