我正在尝试了解scipy.interpolate.CubicSpline(...,extrapolate = True) 在内部工作:Scipy如何在数学上精确地实现超出[a,b]的点x的外推?
我正在寻找一个公式,例如: 如果x> b(这似乎不是它们的实现方式),score(x)= exp(-x + b)。
试图查看源代码,无法找到其实现方式。文档也没有提供任何详细信息。
答案 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之间,但是三次多项式进行了糟糕的外推。