Scipy tarafından sağlanan interpolatörleri kullanmak için elle çevrilmiş bir interpolatör (matematikçi bir meslektaş tarafından geliştirilmiş) kullanan bir programı taşımaya çalışıyorum. Eski enterpolatöre mümkün olduğu kadar yakın davranışa sahip olması için scipy interpolatörünü kullanmak veya sarmak istiyorum.
İki fonksiyon arasındaki temel fark, orijinal enterpolatörümüzde - eğer giriş değeri giriş aralığının üstünde veya altında ise, orijinal enterpolatörümüz sonucu tahmin eder. Bunu scipy interpolator ile denerseniz, bir ValueError
. Bu programı bir örnek olarak düşünün:
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)
Bunu yapmanın mantıklı bir yolu var mı, böylece son çizginin çarpmak yerine, ilk ve son iki nokta tarafından tanımlanan gradyanları sonsuza kadar devam ettirerek basitçe doğrusal bir ekstrapolasyon yapacak.
Not, gerçek yazılımda aslında exp işlevini kullanmıyorum - bu sadece gösterim amaçlı burada!
scipy.interpolate.UnivariateSpline
sorunsuz bir sonuca varıyor gibi görünüyor.