手巻き補間器(数学者の大学によって開発された)を使用するプログラムを移植して、scipyが提供する補間器を使用しようとしています。scipy補間器を使用またはラップして、古い補間器に可能な限り近い動作をさせたいと思います。
2つの関数の主な違いは、元の補間器では、入力値が入力範囲より上または下の場合、元の補間器が結果を外挿することです。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)
クラッシュする代わりに、最後の行が単純に線形外挿を行い、最初と最後の2つのポイントで定義された勾配を無限に続けるようにするための賢明な方法はありますか?
実際のソフトウェアでは、実際にはexp関数を使用していないことに注意してください。これは説明のためだけのものです。
scipy.interpolate.UnivariateSpline
問題なく外挿しているようです。