最佳答案
我正在尝试移植一个程序,它使用一个手工翻转的插值器(由一个数学家同事开发)来使用 scipy 提供的插值器。我希望使用或包装 spigy 插值器,以便它的行为尽可能接近旧的插值器。
这两个函数之间的一个关键区别是,在我们的原始插值器-如果输入值高于或低于输入范围,我们的原始插值器将推断结果。如果你尝试这与 scipy 插值器它提出了一个 ValueError
。以这个程序为例:
import numpy as np
from scipy import interpolate
x = np.arange(0,10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y)
print f(9)
print f(11) # Causes ValueError, because it's greater than max(x)
有没有一种合理的方法来代替崩溃,最后一行将简单地做一个线性外推,继续由第一个和最后两个点定义的梯度到无穷大。
注意,在真正的软件中,我并没有真正使用 exp 函数-这只是为了说明问题!