मैं एक प्रोग्राम को पोर्ट करने की कोशिश कर रहा हूं, जो हाथ से लुढ़का हुआ इंटरपोलर (एक गणितज्ञ सहयोगी द्वारा विकसित) का उपयोग करता है, जो स्काइप द्वारा प्रदान किए गए इंटरपोलर का उपयोग करता है। मैं स्कैपी इंटरपोलर का उपयोग करना या लपेटना चाहता हूं ताकि पुराने इंटरपोलर के पास यथासंभव व्यवहार हो।
दो कार्यों के बीच एक महत्वपूर्ण अंतर यह है कि हमारे मूल प्रक्षेपक में - यदि इनपुट मान इनपुट सीमा के ऊपर या नीचे है, तो हमारा मूल प्रक्षेपक परिणाम को एक्सट्रपलेट करेगा। यदि आप इसे scipy interpolator के साथ आज़माते हैं तो यह उठता है 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)
क्या इसे बनाने का एक समझदार तरीका है ताकि दुर्घटनाग्रस्त होने के बजाय, अंतिम पंक्ति बस एक रैखिक एक्सट्रपलेशन कर सकेगी, पहले और अंतिम दो बिंदुओं द्वारा परिभाषित अनन्तता को जारी रखेगी।
ध्यान दें, कि वास्तविक सॉफ़्टवेयर में मैं वास्तव में ऍक्स्प फ़ंक्शन का उपयोग नहीं कर रहा हूँ - यह केवल चित्रण के लिए यहाँ है!
scipy.interpolate.UnivariateSpline
मुद्दों के बिना बाहर निकालने के लिए लगता है।