2010-08-17 18 views
10

मान लीजिए कि मेरे पास युगल की एक श्रृंखला है, Akima interpolation का उपयोग करके इस श्रृंखला का नमूना देने के लिए एक अच्छा एल्गोरिदम क्या है? मैं उस गणितीय विवरण को कोड में अनुवाद करने के लिए बहुत बेवकूफ हूं।युगल की एक सरणी का अकिमा इंटरपोलेशन

// values is an array of doubles 
// idx is the index of the left-hand value for the current interpolation 
// t is the normalized parameter between values[idx] and values[idx+1] 
// Don't worry about array bounds, I'll handle that separately. 
public double InterpolateAkima(double[] values, int idx, double t) 
{ 
    ...? 
} 
+3

यह बहुत काम है कि कोई भी सिर्फ तुम्हारे लिए ऊपर कोड होगा की तरह दिखता है। यह काफी सीधे आगे दिखता है, लेकिन इसे करने के लिए कोडिंग के कुछ अच्छे घंटे। यह पूछने में संकोच न करें कि कोई विशिष्ट चीज है जिसे आप समझ में नहीं आते हैं। –

+0

@ एल्बिन, मुझे लगता है कि काफी उचित है। घन इंटरपोलेशन कोड की 10 लाइनों की तरह है, मैं उम्मीद कर रहा था कि यह गणित संभवतः 20 लाइनों तक संकुचित हो सकता है ... –

उत्तर

27

another SO question पर मेरे उत्तर पर दोबारा पोस्ट और विस्तार जो इस प्रश्न के एक डुप्लिकेट के रूप में बंद था - जैसा कि उस प्रश्न पर एक टिप्पणी द्वारा सुझाया गया है।

Akima के मूल कागज: `` प्रक्षेप और चिकनी वक्र फिटिंग की एक नई विधि स्थानीय प्रक्रियाओं '' के आधार पर, एसीएम 17, 4 (1970) के जर्नल, 589-602

http://www.leg.ufpr.br/lib/exe/fetch.php/wiki:internas:biblioteca:akima.pdf

सी कार्यान्वयन

https://github.com/ampl/gsl/blob/master/interpolation/akima.c

सी # कार्यान्वयन

https://gist.github.com/dreikanter/3526685

डेल्फी कार्यान्वयन (डेल्फी/src/spline3.pas में प्रक्रिया BuildAkimaSpline देख)

http://www.alglib.net/translator/re/alglib-2.6.0.delphi.zip

Akima के फोरट्रान 66 कार्यान्वयन

http://cran.r-project.org/web/packages/akima/

फोरट्रान 90 कार्यान्वयन

http://miyoshi.googlecode.com/svn-history/r72/trunk/common/common.f90

जावा कार्यान्वयन

https://commons.apache.org/proper/commons-math/jacoco/org.apache.commons.math3.analysis.interpolation/AkimaSplineInterpolator.java.html

लिस्प "ऑटोकैड 2 डी-पॉलीलाइन के लिए" कार्यान्वयन

http://autocad.xarch.at/code/candido/akima.lsp

मैटलैब कार्यान्वयन

http://www.mathworks.se/matlabcentral/fileexchange/1814-akima-interpolation

पास्कल कार्यान्वयन (program description)

http://jean-pierre.moreau.pagesperso-orange.fr/Pascal/akima_pas.txt

अजगर कार्यान्वयन

http://www.lfd.uci.edu/~gohlke/code/akima.py.html

VB6 कार्यान्वयन (VB6/src/spline3 में सबरूटीन BuildAkimaSpline देखते हैं।बस)

http://www.alglib.net/translator/re/alglib-2.6.0.vb6.zip

http://www.koders.com/cpp/fid1393B9D668316C1700966643DE0609660B9CB13A.aspx?s=%22Brian+Smith%22

+0

इसके अतिरिक्त: [जेन्स-पीयर कुस्का द्वारा गणित कार्यान्वयन] (https://groups.google.com/d/msg/comp.soft-sys.math .mathematica/XAWwuMCV_8w/FZDMf3Pgsz0J)। –

+0

इसके अलावा alglib (केवल वीबी 6 और डेल्फी के तहत उल्लिखित) में सी ++, सी #, पायथन और अन्य कार्यान्वयन भी हैं। – Dan

+0

एक और सी कार्यान्वयन (जीएसएल): https://www.gnu.org/software/gsl/manual/html_node/Interpolation-Types.html#Interpolation- टाइप – alfC

7

गूगल कोड खोज पर कुछ hits समझे लेकिन यह एक ऐसा क्षेत्र है मैं बारे में ज्यादा पता नहीं है। पहला परिणाम Math.NET है जो कुछ हितों का हो सकता है।

+3

+1: Math.NET में वास्तव में एक कार्यान्वयन है – Bertvan

+0

यह 'MathNet.Numerics.Interpolation' नेमस्पेस – Keith

+0

में है http://mathnetnumerics.codeplex.com/wikipage?title=Interpolation –

संबंधित मुद्दे