AKima 插值实现

来源:互联网 发布:v29万能主板 数据 编辑:程序博客网 时间:2024/06/10 09:07

测量数据的内插已有各种方法,如线性内插、多项式内插、样条函数插值等,但这里的Akima插值法具有独特的优点。线性内插只顾及其附近两点的影响。多项式内插时,低阶多项式由于参数较少,内插精度很低,而使用高阶多项式又会使解不稳定,出现“龙格”现象,即内插函数在插值点与实际数据符合得很好,而在插值点外出现较大的偏差。因此人们又在多项式的基础上发展了分片多项式,即样条函数。样条函数既保持了多项式运算简单的特点,又避免了多项式阶数较高时数值不稳定的缺点,因而得到了广泛的应用。但在样条函数插值中,确定任何一个小区间上的多项式,都要考虑所有数据点对它的影响。这不仅扩大了误差传播的范围,还增加了不少工作量。有时只用内插点附近的几个数据点作为控制点来内插。Aikma插值法和三次样条函数一样考虑了要素导数值的效应,因而得到的整个插值曲线是光滑的。三次样条函数插值法具有最小模、最佳最优逼近和收敛的特性,而Aikma插值法所得曲线比样条函数插值曲线更光顺,更自然。[1]

Akima相关实现的代码:

Akima's original paper:``A new method of interpolation and smooth curve fitting based on local procedures'', Journal of ACM 17, 4 (1970), 589-602

http://student.ndhu.edu.tw/~u9111023/akima.pdf

C implementation

http://packages.debian.org/source/squeeze/spline

C++ implementation

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

C# implementation

https://github.com/mathnet/mathnet-numerics/blob/master/src/Numerics/Interpolation/Algorithms/AkimaSplineInterpolation.cs

Delphi implementation (see procedure BuildAkimaSpline in delphi/src/spline3.pas)

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

Akima's Fortran 66 implementation

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

Fortran 90 implementation

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

Java implementation

http://code.google.com/p/msnlab4/source/browse/trunk/src/br/edu/ufcg/msn/interpolacao/spline/AkimaCubicSplineInterpolator.java?spec=svn83&r=83

Lisp implementation "for AutoCAD 2d-Polylines"

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

Matlab implementation

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

Pascal implementation (program description)

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

Python implementation

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

VB6 implementation (see subroutine BuildAkimaSpline in vb6/src/spline3.bas)

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

参考文献:

[1]聂桂根, and 万剑华. "Akima 插值法在测量中的应用." 测绘科技动态 3 (1998): 31-34.

[2]http://www.mathworks.com/matlabcentral/fileexchange/1814-akima-interpolation

0 0
原创粉丝点击