Акимская интерполяция массива двойников - PullRequest
10 голосов
/ 17 августа 2010

Предполагая, что у меня есть массив значений типа double, каков хороший алгоритм для выборки этой серии с использованием интерполяция Акимы ? Я слишком глуп, чтобы перевести это математическое описание в код.

// 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)
{
  ...?
}

Ответы [ 2 ]

27 голосов
/ 09 января 2011

Репост и расширение моего ответа на другой вопрос SO , который был закрыт как дубликат этого вопроса - как это было предложено в комментарии к этому вопросу.

Оригинальная статья Акимы: ``Новый метод интерполяции и подгонки гладкой кривой на основе локальных процедур », Журнал ACM 17, 4 (1970), 589-602

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

C реализация

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

Реализация C #

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

Реализация Delphi (см. Процедуру BuildAkimaSpline в delphi / src / spline3.pas)

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

Реализация Акимы на Фортран 66

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

Реализация Fortran 90

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

Java-реализация

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

Lisp-реализация "для AutoCAD 2d-Polylines"

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

Реализация Matlab

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

Реализация на Паскале ( описание программы )

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

Реализация Python

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

Реализация VB6 (см. подпрограмму BuildAkimaSpline в vb6 /src / spline3.bas)

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

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

7 голосов
/ 04 сентября 2010

Получил хитов в поиске кода Google, но это не та область, о которой я знаю много. Первый результат для Math.NET , который может представлять некоторый интерес.

...