数组插值(或两个)

Rob*_*ert 8 java interpolation dataset

我正在寻找一个java库或一些帮助来编写我自己的插值函数.那就是我有两个双打数组,这两个数组可能有不同的大小,但是是有序的.我需要能够估计中间值,并插入以使两个数组的大小相同.事实上,插值中出现的点总数是2个数组大小减去1的总和.但是,每个数组的范围必须保持不变,因此不需要外推.

例如.a1 = [1,4,9,16,25,36]和a2 = [6,9,14,30]

结果可能是例如.

a1 = [1,2.25,5,2.65,9,12.25,16,25,36]和a2 = [6,6.5625,7.25,9,10.2625,11.25,14,25.25,30]

f(x) = x^2 and g(x) = x^2 + 5然而,这些例子很容易就是任何多项式 - 关键是要能够很好地估计/近似数据集中的函数,以提供足够的插值.这里的x值只是输入数组的索引.在输出中,只有y值很重要.

Bob*_*Gee 13

其他答案为您提供线性插值 - 这些并不适用于复杂的非线性数据. 你想要一个样条拟合,(样条插值)我相信.

样条拟合使用来自数据的一组控制点描述数据的区域,然后在控制点之间应用多项式插值.更多的控制点可以让您更精确地贴合,而不是更适合您.样条曲线比线性拟合更准确,使用速度比一般回归拟合更快,优于高阶多项式,因为它不会在控制点之间做出疯狂的事情.

我不记得我头脑中的名字,但是Java中有一些优秀的拟合库 - 我建议你寻找一个而不是编写自己的函数.


**编辑:可能有用的库:**

**理论/代码可能有用:**

  • 样条小程序包含代码:link
  • Arkan样条拟合多线到贝塞尔样条
  • 样条理论和一些拟合数学.如果库没有,更多的数学,更少的代码可能会有所帮助.