0

我正在尝试使用 Apache Commons Math 库和 PolynomialSplineFunction 和 LinearInterpolator 函数来实现外推函数。

 public double[] linearInterp(double[] x, double[] y, double[] xi) {
   LinearInterpolator li = new LinearInterpolator(); // or other interpolator
   PolynomialSplineFunction psf = li.interpolate(x, y);

   double[] yi = new double[xi.length];
   for (int i = 0; i < xi.length; i++) {
       yi[i] = psf.value(xi[i]);
   }
   return yi;
}

x = [0, 60, 120,180,240];

y = [196, 232, 250, 157, 300];

xi = [300, 360, 420];

问题是,如果我使用的值超出了x我得到的范围,OutOfRangeException有没有办法使用这种方法进行推断?我该如何解决这个错误。

4

1 回答 1

2

如果您查看文档PolynomialSimlineFunction Doucumentaition,您可以阅读值方法“OutOfRangeException - 如果 v 在样条函数的域之外(小于最小结点或大于最大结点)。”

这是非常合理的,因为节点的插值不是您的函数的近似值。从数学上讲,您所尝试的根本没有意义。

于 2016-04-15T21:39:53.380 回答